Использование выпадения на сверточных слоях в Keras

#keras #conv-neural-network #dropout

#keras #conv-нейронная сеть #выпадение

Вопрос:

Я реализовал сверточную нейронную сеть с пакетной нормализацией по одномерному входному сигналу. Моя модель имеет довольно хорошую точность ~ 80%. Вот порядок моих слоев: (Conv1D, Batch, ReLU, MaxPooling) повторить 6 раз, Conv1D, Batch, ReLU, Плотный, Softmax.

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

Моя новая модель имеет следующую структуру: (Conv1D, выпадение, ReLU, MaxPooling) повторить 6 раз, Conv1D, выпадение, ReLU, Плотный, Softmax. Я пробовал скорость отсева 0.1, 0.2, 0.3, 0.4, 0.5. Производительность моей новой модели составляет всего ~ 25%, что намного хуже моей исходной модели и даже хуже, чем прогнозирование доминирующего класса (~ 40%).

Интересно, действительно ли огромная разница в производительности является результатом замены пакетной нормализации выпадением. или это мое непонимание того, как я должен использовать выпадение.

Ответ №1:

Чтобы получить представление о том, как использовать пакетную норму и отсев, вы должны сначала понять, что делают эти слои:

  • Пакетная нормализация масштабирует и сдвигает выходные данные вашего слоя в соответствии со средним значением и дисперсией, рассчитанными для пакета, так что входные данные для следующего слоя более устойчивы к внутреннему сдвигу ковариации
  • Отсев случайным образом удаляет элементы из своих входных данных, обучая следующие слои не полагаться на конкретные функции или элементы, а использовать всю доступную информацию. Это позволяет сети лучше обобщать и является средством уменьшения переобучения

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

Моя рекомендация для вас — использовать batch norm точно так же, как в вашей первой настройке, и если вы хотите поэкспериментировать с выпадением, добавьте его после применения функции активации к предыдущему слою. Обычно отсев используется для упорядочивания плотных слоев, которые очень склонны к перенастройке. Попробуйте это:

  1. 6 x (Conv1D, пакет, ReLU, MaxPooling)
  2. 1 x (Conv1D, пакет, ReLU)
  3. Отсев, плотный, Softmax