Действительно ли пакетная нормализация - практическое правило? Сравнение результата с выпадением набора данных CIFAR10
Известно, что пакетная нормализация (BN) улучшает производительность модели, смягчает внутренний ковариационный сдвиг и применяет небольшой эффект регуляризации. Такие функциональные возможности BN и эмпирические исследования, доказывающие эффективность BN, помогли укрепить предпочтение людей использовать BN вместо того, чтобы бросить учебу. BN быстро заменил слой отсева во многих моделях глубокого обучения. Почему это так? BN нормализует значения единиц для каждой партии со своим собственным средним значением и стандартным отклонением. Dropout, с другой стороны, случайным образом отбрасывает заранее определенное соотношение единиц в нейронной сети, чтобы предотвратить переоснащение. Следовательно, использование слоя исключения и слоя пакетной нормализации - для большей конкретности их размещение рядом друг с другом - создает дисгармонию между этими двумя. Хотя BN имеет небольшой эффект регуляризации, это скорее побочный эффект процесса нормализации. Dropout, напротив, является простым, но сильным регуляризатором для решения проблемы переобучения.
Возникает дилемма: следует ли выбрать пакетную нормализацию вместо исключения или наоборот? Ответить на этот вопрос в некоторых задачах довольно просто. Когда вы используете модели последовательности, такие как RNN или LSTM, вы не можете использовать BN. Вместо этого в качестве альтернативы можно использовать нормализацию слоя или исключение. В моделях последовательностей отсев - более широко применяемый метод регуляризации. Однако для других глубоких нейронных сетей использование BN вместо исключения, особенно в сверточных нейронных сетях (CNN), часто рассматривается как практическое правило.
Из-за моих глубоких сомнений и любопытства по поводу того, что BN почти всегда побеждает, я провел эксперимент. Прежде чем начать, я хочу отметить, что моя мотивация для этого эксперимента далека от отрицания роли Б.Н. или доказательства того, что один лучше другого. Цель этого эксперимента - посмотреть, действительно ли BN превосходит по эффективности исключение и можем ли мы безопасно выбрать BN вместо исключения в наших сценариях использования.
Эксперимент проводился в среде colab с использованием набора данных CIFAR10. Я построил четыре разные модели с разной архитектурой, чтобы сравнить результат. Базовая модель - это модель CNN, построенная из двух блоков VGG и слоев BN. Вторая модель более глубокая, чем базовая модель. Третья модель имеет ту же структуру, что и вторая модель, но ADAM был реализован для оптимизатора. Все остальные модели использовали SGD в качестве оптимизатора. Наконец, последняя модель использует dropout вместо BN. Вы можете увидеть, как создавалась каждая модель, по этой ссылке на GitHub вместе с пошаговыми инструкциями по коду для проведения эксперимента. Для пояснения в этом эксперименте использовались четыре разные модели:
- VGG2 с BN + SGD (исходный уровень)
- VGG2 с BN на каждом слое CNN + SGD
- VGG2 с BN на каждом уровне CNN + ADAM
- VGG2 с выпадением + SGD
На изображении ниже показаны три примера для десяти различных категорий в наборе данных CIFAR 10 после предварительной обработки данных.
Процесс обучения и проверки каждой модели и результаты следующие (синяя линия - набор поездов, красная линия - набор проверки):
1. VGG2 с BN + SGD (базовый уровень):
согласно: 0,6658, убыток: 0,9705, auc: 0,9457
2. VGG2 с BN на каждом слое CNN + SGD:
согласно: 0,6786, потери: 0,9437, auc: 0,9489
3. VGG2 с BN на каждом слое CNN + ADAM:
acc: 0,7512, потеря: 0,7312, auc: 0,9680
4. VGG2 с выпадением + SGD:
согласно: 0,7803, убыток: 0,6453, auc: 0,9741
Модели BN с оптимизаторами SGD, похоже, уменьшают переоснащение по сравнению с другими моделями. Интересно, что модель отсева намного превосходит другие модели с BN с точки зрения точности и потерь! Изучая историю обучения и проверки, модель 4 со слоем исключения показала лучшую производительность, за ней следует модель 3. Ее точность тестирования достигла примерно 0,8, тогда как точность других моделей была ниже. Точно так же потери для модели 4 как для обучающих, так и для проверочных наборов данных были самыми низкими.
Переоснащение кажется проблемой для всех моделей. Чтобы решить эту проблему, я ввел раннюю остановку и получил лучшие гиперпараметры для построения наиболее эффективных моделей.
Давайте проверим, как каждая модель собственными глазами классифицирует изображение корабля! Ярлык изображения корабля - 8.
- VGG2 с BN + SGD (базовый уровень)
- Прогноз: 8 - VGG2 с BN на каждом слое CNN + SGD
- Прогноз: 0 - VGG2 с BN на каждом слое CNN + ADAM
- Прогнозирование: 8 - VGG2 с выпадением + SGD
- Прогноз: 0
Модели 2 и 4 здесь сделали неверные прогнозы. Они думали, что это самолет, а не корабль.
Давай попробуем еще один! На этот раз изображение является плоским, и на этот раз оно помечено как 0.
- VGG2 с BN + SGD (базовый уровень)
- Прогноз: 0 - VGG2 с BN на каждом слое CNN + SGD
- Прогнозирование: 4 - VGG2 с BN на каждом слое CNN + ADAM
- Прогноз: 0 - VGG2 с выпадением + SGD
- Прогноз: 0
На этот раз неверное решение приняла только модель 2. Модель 2 предсказывала, что это был олень. Может быть, из-за ошибки заостренный, похожий на рог, хвост самолета.
Теперь давайте посмотрим, как модели работают с изображениями животных.
- 2 с BN + SGD (базовый уровень)
- Прогноз: 6 - VGG2 с BN на каждом слое CNN + SGD
- Прогнозирование: 2 - VGG2 с BN на каждом слое CNN + ADAM
- Прогнозирование: 6 - VGG2 с выпадением + SGD
- Прогноз: 6
Опять же, модель 2 ошиблась. Модель 2 предсказала, что лягушка была птицей.
На этот раз давайте посмотрим, как модели предсказывают эту странную фотографию оленя. Метка наземной истины для оленей - 4.
- 2 с BN + SGD (базовый уровень)
- Прогноз: 0 - VGG2 с BN на каждом слое CNN + SGD
- Прогноз: 0 - VGG2 с BN на каждом слое CNN + ADAM
- Прогнозирование: 4 - VGG2 с выпадением + SGD
- Прогноз: 4
Модели 1 и 2 думали, что изображение оленя было самолетом! Фон и рог могли спутать модели с небом и заостренными хвостовыми крыльями самолета.
В целом модель с выпадающим слоем, кажется, работает довольно хорошо по сравнению с моделями BN. Результат очень интересен для меня, так как многие люди в области науки о данных слепо верят, что BN работает лучше, чем слой отсева, и в конечном итоге никогда не пытаются сравнивать эти два. Результат говорит о том, что в некоторых случаях слой отсева может работать лучше, чем BN. И последнее, но не менее важное: результат говорит нам всегда проверять и видеть собственными глазами! Хотя BN является продвинутым и сложным методом, простой слой исключения может также достичь аналогичных или даже лучших результатов в некоторых случаях с данными изображения.