[4 декабря 2018 г.] Современные хитрости для повышения популярности вашего CNN

TL-DR

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

Многие из этих хитростей добавлены в фастай 😍.

Большой размер партии

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

Скорость обучения линейному масштабированию

Поскольку большие размеры партии означают меньшую дисперсию (меньший шум) градиента SGD, мы можем быть более уверены в том, что градиент является многообещающим направлением. Таким образом, имеет смысл увеличивать скорость обучения вместе с размером пакета. Было эмпирически доказано, что линейное увеличение скорости обучения с увеличением размера пакета эмпирически работает для обучения ResNet50.

Повышение успеваемости

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

Ноль г

Остаточные блоки в ResNet имеют выход, к которому добавляется вход блока:

х + блок (х)

Иногда последний слой в блоке - это пакетная нормализация, которая нормализует значение, а затем выполняет масштабное преобразование. Если нормализованное значение равно x_hat, вывод уровня пакетной нормализации:

у. x_hat + B

где y и B инициализируются значениями 1 и 0. Если вместо этого мы инициализируем y как 0, остаточные блоки начнутся просто с возврата ввода, эффективно сокращая количество слоев и облегчая тренировку. Также сеть будет изменять значение y только в том случае, если преобразование в остаточном блоке того стоит (т.е. улучшает производительность), и это позволяет избежать ненужных вычислений.

Без спада смещения

Рекомендуется не применять регуляризацию (или весовое затухание) к параметрам смещения или пакетной нормализации.

Низкая точность обучения

Новое оборудование предлагает серьезные улучшения в скорости при использовании FP16, а не FP32 (на Nvidia V100 обучение на FP16 предлагает увеличение производительности в 2/3 раза). Однако FP16 может вызвать переполнение и нарушить тренировочный процесс.

Предлагается решить эту проблему: сохранить параметры и активации в FP16 и использовать FP16 для вычисления градиентов. Все параметры имеют копию в FP32 для обновления параметров. Подробное объяснение см..

Настройки модели

Эти настройки помогают повысить точность проверки в ResNet-50 без значительных вычислительных затрат (примерно на 3% дольше для обучения).

ResNet-B

Первое улучшение состоит в изменении шага в сверточных слоях. Первый слой в Path A имеет шаг 2, что означает, что он отбрасывает 3/4 входных пикселей. Чтобы избежать этого, шаг этого слоя можно изменить с 2 на 1, а следующего слоя с 1 на 2, чтобы компенсировать и сохранить выходные размеры.

Поскольку следующий уровень имеет размер ядра 3x3, даже с шагом 2 слой использует всю входную информацию.

ResNet-C

Вычислительные затраты на свертку квадратичны по отношению к ширине или высоте ядра. Свертка 7 × 7 в 5,4 раза дороже свертки 3 × 3.

Эта настройка состоит в замене сверточного слоя 7x7 на этапе ввода тремя слоями 3x3 (что упростит обучение модели).

ResNet-D

ResNet-D - такое же улучшение, как ResNet-B, но с другим подходом. Они заменили свертку в 2 шага в Пути B на слой Average Pooling и свертку в 1 шаг (при этом выходные размеры остаются неизменными). Авторы сообщают, что данная настройка не оказывает заметного влияния на скорость.

Уточнения обучения

Спад скорости обучения по косинусу

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

Сглаживание ярлыков

Обычно последний уровень нейронной сети представляет собой полностью связанный слой с выходным размером, равным количеству категорий, и функцией активации softmax. Если потеря перекрестной энтропии, по математическим причинам, сеть имеет стимул делать прогноз для одной категории очень большим, а для других - очень маленьким, и это приводит к чрезмерной подгонке. Сглаживание меток заключается в изменении цели с [1, 0, 0,…] на [1- e, 0 + e / k-1, 0 + e / k-1,…] для уменьшения полярность в мишени.

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

Извлечение знаний

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

Одним из примеров является использование ResNet-152 в качестве модели учителя для помощи в обучении ResNet-50.

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

Смешивание

Смешивание означает линейную интерполяцию двух обучающих примеров и создание нового.

Трансферное обучение

Обнаружение объектов

Авторы доказали, что производительность Faster-RCNN на Pascal VOC была улучшена путем добавления ранее представленных улучшений.

Семантическая сегментация

Авторы обучили полностью подключенную сеть на ADE20K и пришли к выводу, что только сглаживание косинуса улучшает производительность в этой задаче (2).

Примечания

(1) Исключение знаний снижает производительность в двух из трех архитектур. По мнению авторов:

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

(2) Почему другие улучшения не улучшили производительность?

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

использованная литература

Набор хитростей для классификации изображений с помощью сверточных нейронных сетей; Он и др., AWS, 2018

Изображение на обложке: www.npr.org