Подтвердить что ты не робот

Порядок нормализации партии и отсева?

Первоначальный вопрос касался конкретно реализаций TensorFlow. Тем не менее, ответы для реализации в целом. Этот общий ответ также является правильным ответом для TensorFlow.

При использовании нормализации и выпадения партии в TensorFlow (в частности, с помощью contrib.layers) нужно ли беспокоиться о порядке?

Кажется возможным, что, если я использую отсев, сопровождаемый немедленно нормализацией партии, могли бы быть проблемы. Например, если сдвиг в последовательности нормализации партии переходит к большим значениям шкалы выходных данных обучения, но затем это же смещение применяется к меньшим (из-за компенсации за наличие большего количества выходов) числам шкалы без пропуска во время тестирования, тогда это сдвиг может быть выключен. Слой пакетной нормализации TensorFlow автоматически компенсирует это? Или этого не происходит по какой-то причине мне не хватает?

Кроме того, есть ли другие подводные камни, на которые стоит обратить внимание при использовании этих двух вместе? Например, при условии, что я использую их в правильном порядке относительно вышеизложенного (при условии, что существует правильный порядок), могут ли быть проблемы с использованием как нормализации партии, так и выпадения на нескольких последовательных слоях? Я не сразу вижу проблему с этим, но я могу что-то упустить.

Спасибо много!

ОБНОВИТЬ:

Экспериментальный тест предполагает, что порядок имеет значение. Я дважды запускал одну и ту же сеть, используя только пакетную норму и обратный отсев. Когда отсев происходит до нормы партии, потеря валидации, по-видимому, увеличивается, так как потеря обучения снижается. Они оба идут вниз в другом случае. Но в моем случае движения медленные, поэтому все может измениться после нескольких тренировок, и это всего лишь один тест. Более точный и обоснованный ответ все равно будет оценен.

4b9b3361

Ответ 1

В Ioffe and Szegedy 2015 авторы заявляют, что "мы хотели бы гарантировать, что для любых значений параметров сеть всегда производит активацию с желаемым распределением". Таким образом, уровень нормализации партии фактически вставлен сразу после уровня Conv Layer/Fully Connected Layer, но перед подачей на ReLu (или любые другие виды) активации. Подробнее см. это видео в течение примерно 53 минут.

Что касается исключения, я считаю, что исключение применяется после уровня активации. В выпадающей бумаге на рисунке 3b матрица выпадения/вероятностная матрица r (l) для скрытого слоя l применяется к ней на y (l), где y (l) - результат после применения функции активации f.

Итак, порядок использования нормализации и выпадения партии:

- > CONV/FC → BatchNorm → ReLu (или другая активация) → Dropout → CONV/FC →

Ответ 2

Как отмечается в комментариях, удивительный ресурс для чтения порядка слоев находится здесь. Я просмотрел комментарии, и это лучший ресурс по теме, который я нашел в интернете.

Мои 2 цента:

Выпадение предназначено для полной блокировки информации от определенных нейронов, чтобы убедиться, что нейроны не адаптируются. Таким образом, нормализация пакета должна выполняться после удаления, иначе вы передаете информацию через статистику нормализации.

Если вы подумаете об этом, в типичных задачах ML это причина, по которой мы не вычисляем среднее и стандартное отклонение по всем данным, а затем разбиваем их на наборы обучения, тестирования и проверки. Мы разделяем и затем вычисляем статистику по набору поездов и используем их для нормализации и центрирования проверочных и тестовых наборов данных.

поэтому я предлагаю Схему 1 (это принимает комментарий псевдомарвина о принятом ответе)

→ CONV/FC → ReLu (или другая активация) → Dropout → BatchNorm → CONV/FC

в отличие от схемы 2

→ CONV/FC → BatchNorm → ReLu (или другая активация) → Dropout → CONV/FC → в принятом ответе

Обратите внимание, что это означает, что сеть по схеме 2 должна показывать избыточную адаптацию по сравнению с сетью по схеме 1, но OP провела некоторые тесты, как указано в вопросе, и они поддерживают схему 2

Ответ 3

Обычно, просто бросьте Dropout (когда у вас есть BN):

  • "BN устраняет необходимость в Dropout в некоторых случаях, потому что BN обеспечивает те же преимущества регуляризации, что и Dropout интуитивно"
  • "Такие архитектуры, как ResNet, DenseNet и т.д., Не использующие Dropout

Для получения более подробной информации обратитесь к этой статье [ Понимание дисгармонии между выпадением и нормализацией партии с помощью дисперсионного сдвига ], как уже упоминалось @Haramoz в комментариях.

Ответ 4

Основываясь на исследовательской работе для повышения производительности, мы должны использовать BN перед применением Dropouts