Переосмысление масштабирования модели для сверточных нейронных сетей

1. Введение

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

2. Масштабирование составной модели

В документе говорится, что ключевая идея состоит в том, чтобы сбалансировать все измерения, и это может быть достигнуто путем масштабирования каждого из них с постоянным соотношением. Если мы можем увеличить вычислительные ресурсы на 2 ^ N, то мы просто увеличим глубину на (альфа) ^ N, ширину на (бета) ^ N и разрешение на (гамма) ^ N, и можно будет найти альфа, бета и гамма путем поиска по сетке в базовой сети. Если размер входных данных большой, то сети требуется больше слоев для увеличения рецептивного поля и больше каналов для захвата более мелких структур на больших изображениях. В статье используется поиск нейронной архитектуры для создания базовой модели. Они накладывают ограничения на размер памяти и флопы и максимизируют точность.

Ранее несколько работ масштабировались по глубине, ширине и размерам разрешения. ResNet масштабируется по глубине, имея глубину от 32 до 1000. Более глубокие сети могут захватывать более богатые и сложные функции, однако их трудно обучать. Масштабирование ширины обычно используется для моделей небольшого размера. Они могут фиксировать мелкие детали и их легче обучать. WideResNets попытались улучшить производительность за счет широкого масштабирования. Масштабирование разрешения потенциально может захватывать более мелкие детали. Многие недавние реализации используют такие разрешения, как 299x299 и 331x331 вместо 224x224. Можно отметить, что увеличение любого измерения, такого как ширина, глубина и разрешение, увеличивает точность модели, но точность уменьшается для более крупных моделей. В статье проводится несколько экспериментов, при этом глубина и разрешение остаются постоянными, а ширина варьируется. Можно видеть, что глубина, ширина и разрешение коррелируют друг с другом, и, следовательно, основной задачей является балансировка глубины, ширины и разрешения. Предлагаемый новый метод составного масштабирования использует составной коэффициент φ для равномерного масштабирования ширины, глубины и разрешения сети принципиальным образом:

В статье оптимизируется ACC(m)×[F LOP S(m)/T ] w как оптимизация, где ACC(m) и F LOP S(m) обозначают точность и FLOPS модели m, T — целевые FLOPS, а w =-0,07 — это гиперпараметр для управления компромиссом между точностью и FLOPS. Они фиксируют фи = 1, а затем выполняют поиск по мелкой сетке альфа, бета и гамма. Значения, найденные после поиска: альфа = 1,2, бета = 1,1 и гамма = 1,15. Эти значения используются для создания EfficientNet-B0. Затем мы фиксируем значения альфа, бета и гамма и масштабируем базовую модель с различными фи, чтобы получить от EfficientNet-B0 до EfficientNet-B7.

3. Методика обучения

Модели EfficientNet были обучены в ImageNet с использованием оптимизатора RMSProp с затуханием 0,9 и импульсом 0,9, импульсом нормы партии 0,99, затуханием веса 1e-5, начальной скоростью обучения 0,256, которая затухает на 0,97 каждые 2,4 эпохи. Мы также используем активацию SiLU (Swish-1), AutoAugment и стохастическую глубину с вероятностью выживания 0,8. Эти методы будут подробно рассмотрены в последующих разделах. Они линейно увеличивают коэффициент отсева с 0,2 для EfficientNet-B0 до 0,5 для B7. EfficientNet стал современным алгоритмом и превзошел все другие типы масштабирования.

4. Активация SiLU (Swish (β = 1))

Активация Swish была представлена ​​в статье Праджита Рамачандрана SEARCHING FOR ACTIVATION FUNCTIONS. В статье используются алгоритмы исчерпывающего поиска и обучения с подкреплением для поиска эффективной функции активации. Для таких больших пространств поиска они используют контроллеры RNN, которые предсказывают один компонент функции активации. Прогнозируемый компонент подается на контроллер RNN на следующем временном шаге, и процесс повторяется до тех пор, пока не будет предсказан каждый компонент функции активации.

Используя функцию активации кандидата, дочерняя сеть обучается решению проблемы классификации изображений, и в качестве вознаграждения используется точность. Для дальнейшего ускорения процесса в очередь добавляется пакет функций активации. Рабочие извлекают функции из очереди и обучают дочернюю сеть и сообщают о точности проверки. Использовались различные унарные и бинарные функции. Сложные функции активации постоянно уступают простым функциям активации, возможно, из-за повышенной сложности оптимизации. Наиболее эффективные функции активации могут быть представлены 1 или 2 основными модулями. Общей структурой, разделяемой основными функциями активации, является использование необработанной предварительной активации x в качестве входных данных для окончательной двоичной функции. Использование периодических функций в функциях активации было лишь кратко изучено в предыдущей работе, поэтому обнаруженные функции предлагают плодотворный путь для дальнейших исследований. Функции, использующие деление, имеют тенденцию работать плохо, потому что результат взрывается, когда знаменатель близок к 0. Деление успешно только тогда, когда функции в знаменателе либо отделены от 0, например, cosh(x), либо приближаются к 0 только тогда, когда числитель также приближается к 0, производя результат 1.

Они обнаружили, что функция активации SWISH, f (x) = x · σ(βx), постоянно превосходит ReLU и другие функции активации. Здесь β — обучаемый параметр. Как и ReLU, Swish не ограничен сверху и ограничен снизу. В отличие от ReLU, Swish плавный и немонотонный. На самом деле свойство немонотонности Swish отличается от большинства обычных функций активации. Успех Swish с β = 1 означает, что свойство ReLU сохранять градиент (т. е. иметь производную от 1, когда x > 0) больше не может быть явным преимуществом в современных архитектурах. Наиболее яркое различие между Swish и ReLU заключается в немонотонном «выступе» Swish при x ‹ 0. Большой процент предварительных активаций приходится на область всплеска (−5 ≤ x ≤ 0), что указывает на то, что немонотонный удар - важный аспект Swish. Форму выпуклости можно контролировать, изменяя параметр β. Хотя фиксирование β = 1 эффективно на практике, раздел экспериментов показывает, что обучение β может еще больше повысить производительность на некоторых моделях. Обученные значения β разбросаны между 0 и 1,5 и имеют пик при β ≈ 1, что позволяет предположить, что модель использует дополнительную гибкость обучаемых параметров β.

5. Стохастическая глубина

В документе Глубокие сети со стохастической глубиной представлена ​​методика обучения для обучения очень глубоких архитектур CNN с повышением их производительности. Основная идея состоит в том, чтобы обучить модель с несколькими слоями и использовать все слои при тестировании. Они начинают с глубокой сети и случайным образом отбрасывают подмножества слоев для каждой партии во время обучения, обходя их с помощью функций идентификации. Это сокращает время обучения и значительно снижает количество ошибок при тестировании. Более глубокие сети сталкиваются с такими проблемами, как исчезновение градиентов и сокращение повторного использования функций. Уменьшение повторного использования функций происходит во время прямого распространения, когда функции, вычисленные на ранних слоях, размываются повторными умножениями и свертками, что затрудняет идентификацию и изучение значимых направлений градиента для более поздних слоев. Уменьшение ошибок теста при использовании стохастической глубины объясняется двумя факторами: сокращение (ожидаемой) глубины во время обучения уменьшает цепочку шагов прямого распространения и вычислений градиента, что усиливает градиенты, особенно в более ранних слоях при обратном распространении; сети, обученные со стохастической глубиной, можно интерпретировать как неявный ансамбль сетей различной глубины.

Стохастическая глубина имеет один гиперпараметр — вероятность выживания. Они используют правило линейного затухания по глубине, то есть уменьшают вероятность выживания линейно с глубиной. Ранние слои извлекают признаки низкого уровня и, следовательно, должны иметь больше вероятностей выживания. Ожидаемая глубина во время обучения рассчитывается с использованием ожидания и получается равной 3L/4, где L — глубина исходной сети. Технически мы обучаем ResNet со средним числом 40 ResBlocks, но восстанавливаем ResNet с 54 блоками во время тестирования. Подобно Dropout, стохастическая глубина может быть интерпретирована как обучение ансамбля сетей, но с разной глубиной, что, возможно, позволяет достичь большего разнообразия среди членов ансамбля, чем объединение сетей с одинаковой глубиной. Это объясняет улучшение тестовых ошибок за счет стохастической глубины. В отличие от Dropout, он делает сеть короче, а не тоньше. Кроме того, Dropout теряет эффективность при использовании в сочетании с пакетной нормализацией. Они обучили ResNet с 101 и 1202 слоями со стохастической глубиной и без нее и добились улучшений в сети ResNet с 1202 слоями.

6. Заключение

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

7. Ссылки

[1]. EfficientNet: переосмысление масштабирования модели для сверточных нейронных сетей Mingxing Tan 1 Quoc V. Le 1

[2]. ПОИСК ФУНКЦИЙ АКТИВАЦИИ Праджит Рамачандран∗, Баррет Зоф, Куок В. Ле

[3]. Глубокие сети со стохастической глубиной Гао Хуан*, Ю Сун*, ​​Чжуан Лю † , Даниэль Седра, Килиан К. Вайнбергер