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

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

В этом посте исследуется влияние ванны-нормализации на модели, основанные на трансферном обучении.

Норма партии:

Серж Иоффе и Кристиан Сегеди в 2015 году предложили Пакетную нормализацию (Batch Normalization), где перед активацией к модели добавляется операция, которая нормализует входные данные (устанавливая среднее значение на ноль, а дисперсию на единицу), затем применяет масштаб и сдвиг для сохранения производительности модели. . Сеть изучает два параметра, скаляр (гамма) и параметр сдвига (бета).

Santurkar et al. (2018) показали, что вместо уменьшения внутреннего ковариатного сдвига , предложенного его авторами, BN фактически работает, делая ландшафт соответствующей задачи оптимизации значительно более гладким . Это гарантирует, в частности, что градиенты являются более предсказуемыми и, таким образом, позволяет использовать больший диапазон скоростей обучения и более быструю конвергенцию сети ». Здесь мы исследуем это явление.

Модель

Используемая здесь модель представляет собой 18-слойную сеть ResNet от Fastai с модификациями, указанными в статье He et al. 2018 г.

Обучение

PyTorch используется для обучения модели с кодом, основанным на fastai. NB ссылка на код будет размещена здесь в ближайшее время.

Сначала мы обучаем модель на The Oxford-IIIT Pet Dataset, наборе данных с 37 категориями домашних животных. Это обучено для 40 эпох: Предварительно обученная модель. Затем мы заменяем последние 3 слоя модели, слои AdaptiveAvgPool2d, Flatten и Linear, и меняем количество категорий в линейном слое на 10 для классификации набора данных fastai Imagewoof.

«Наивная модель» обучается 5 эпох без замораживания слоев без батчнорма (BN), и ниже мы видим, что модель работает плохо. На изображении ниже гистограмм весов на слой модель страдает от исчезающих градиентов, причем большинство градиентов стремится к нулю после первого слоя.

Затем мы обучили «Наивную модель» с пакетной нормой для 5 эпох без замораживания каких-либо слоев с гистограммами и результатом потери ниже:

Мы можем увидеть влияние нормы партии на разницу в весе между партиями на следующем графике, где мы изображаем разницу между дисперсией для каждой партии. 20 графиков ниже соответствуют 20 слоям, показанным на рис.

Затем мы перестраиваем модель, как описано выше (сохраняя все, кроме последних 3 слоев «Предварительно обученной модели»), замораживаем веса сети для всех слоев перед слоем AdaptiveConcatPool2d, просто тренируем голову на 3 эпохи, затем мы разморозили сеть и переобучили всю сеть за 5 эпох. Мы называем их «моделью замораживания» и «моделью размораживания».

Затем мы обучили новую модель, замораживая только слои без пакетной нормы, перед слоем AdaptiveConcatPool2d, обучили слои BN и направились на 3 эпохи, затем, как и выше, мы разморозили сеть, переобучив всю сеть на 5 эпох. Мы называем это «моделью замораживания без BN» и «моделью UnFreeze без BN».

Сравнивая потери для моделей Freeze / Unfeeze (где все, кроме головы, заморожены, затем вся модель разморожена) с моделями Freeze без BN / Unfreeze без BN, результаты кажутся немного менее изменчивыми для моделей Freeze без BN / Unfreeze без BN .

Если мы сравним разницу в гистограммах веса на пакет для каждого слоя для «Заморозить модель» и «Разморозить модель» (путем вычитания массивов друг из друга) (рис. 8 ниже) и «Заморозить без BN» против « В моделях Unfreeze без BN '(рис. 9 ниже) мы видим значительно больше изменений значений веса, когда модель Unfreeze запускается после модели Freeze, чем когда запускается модель Unfreeze без BN.

Это согласуется с наблюдениями Santurkar et al. (2018) , при этом норма партии позволяет получить более гладкую модель. Я пробовал несколько различных реализаций графиков, и размораживание для замораживания графиков разницы весов, приведенных выше, были наиболее репрезентативными для эффекта сглаживания модели BN на веса модели.

Вы можете найти исходный код здесь.