в соавторстве с Дэрилом Чангом

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

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

  • Что такое переоснащение и почему это плохо?
  • Что такое регуляризация и как предотвратить переоснащение?
  • Какие существуют методы регуляризации и как они влияют на производительность модели?
  • Как выбрать правильный метод регуляризации проблемы?

Что такое переоснащение модели?

Переобучение - важный аспект обучения модели машинного обучения. Это относится к ситуации, когда модель слишком близко подходит к обучающим данным, и она даже изучает шум в данных как концепции. Шум относится к случайности данных, которая не является репрезентативной для их истинного распределения. Это снижает способность модели делать обобщения на невидимом или тестовом наборе данных. На рисунке 1 показан пример переобучения, когда классификационная модель (крайняя слева) изучила границу комплексного решения, чтобы соответствовать шуму в данных.

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

Что такое регуляризация и как она предотвращает переоснащение?

Регуляризация относится к практике ограничения / регуляризации модели на основе изучения сложных концепций, тем самым снижая риск переобучения. Это может быть сделано путем ограничения атрибутов модели, таких как веса (регуляризация L1 или L2), активаций (регуляризация прерывания соединения), архитектуры (регуляризация прерывания), функция потерь (вспомогательная потеря) и т. Д.

В этой статье мы оценим следующие методы регуляризации:

  • Регуляризация отсева
  • L2 регуляризация
  • L1 Регуляризация

Как ставятся эксперименты?

Обучим нейронную сеть с помощью разных оптимизаторов и сравним их производительность. Код для этих экспериментов можно найти на Github.

  • Набор данных: мы используем набор данных "Кошки и собаки", который состоит из 23 262 изображений кошек и собак, разделенных примерно 50/50 между двумя классами. Поскольку изображения имеют разный размер, мы изменяем их все до одного размера. Мы используем 20% набора данных в качестве данных проверки (набор разработчика), а остальное - как данные обучения.
  • Показатель оценки: мы используем двоичную кросс-энтропийную потерю и точность данных проверки в качестве основных показателей для измерения производительности модели.

  • Базовая модель: мы также определяем базовую модель, вдохновленную VGG16, где мы многократно применяем операции (свертка - ›max-pool -› активация - ›пакетная норма), используя ReLU в качестве функции активации. для свертки. Затем мы выравниваем выходной объем и подаем его на два полностью связанных слоя (плотный - ›активация -› пакетная норма) по 256 единиц в каждом, снова используя ReLU в качестве активации. Наконец, мы загружаем результат в слой с одним нейроном с активацией сигмовидной кишки, в результате чего получаем результат от 0 до 1, который сообщает нам, предсказывает ли модель кошку (0) или собаку (1).

  • Обучение: мы используем размер партии 32 и инициализацию веса по умолчанию (форма Glorot). Оптимизатор - SGD со скоростью обучения 0,01. Мы тренируемся до тех пор, пока потеря валидации не перестанет улучшаться более чем за 50 итераций.
  • Аппаратное обеспечение: все модели обучаются на одном графическом процессоре Nvidia Tesla P100 в облаке Google.

Выбывать

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

  • Для каждого пакета во время обучения каждый узел либо отбрасывается с вероятностью p, либо сохраняется с вероятностью 1-p. Количество p называется коэффициентом отсева. Входящие и исходящие ребра отброшенного узла также удаляются. Это показано на рисунке 4.
  • Активации всех сохраненных узлов масштабируются на 1 / (1-p).
  • Во время тестирования мы используем всю сеть, не теряя ни одного узла.

Как процент отсева влияет на переобучение?

Мы добавили слой исключения после каждого слоя в нашей исходной сети. Мы применили различные показатели отсева в сверточных и плотных слоях, как это было предложено в исходной статье о отсеве [1]. На рис. 5 и в таблице 1 показано влияние различных показателей отсева (показаны только самые важные) на потери при обучении и валидации. Наблюдения резюмируются ниже:

  • Модель без отсева (процент отсева = 0) очень плохо подходит и обобщает. Спустя несколько эпох, как мы проходим данные обучения, больше нет. раз (больше эпох) потери на обучение уменьшаются, а потери при проверке возрастают.
  • Степень переобучения, то есть разрыв между обучением и проигрышем в тестах, уменьшается по мере того, как мы увеличиваем процент отсева.
  • Потери при проверке уменьшаются с 0,3193 до 0,1953, поскольку мы вводим выпадение в сверточных слоях в дополнение к слоям FC, что свидетельствует о важности выпадения во всех слоях. Однако большие показатели отсева в сверточных слоях приводят к недостаточной подгонке (не показано на графике).
  • По мере того, как мы увеличиваем процент отсева, время обучения увеличивается, то есть требуется больше эпох для схождения модели. По словам Шриваставы, Нитиша и др. в исходной статье [1] основной причиной этого увеличения является то, что обновления параметров становятся очень шумными в результате выпадения. Каждый пакет обучения эффективно пытается обучить другую случайную архитектуру. Следовательно, вычисляемые градиенты не являются градиентами для окончательной архитектуры, которая будет использоваться во время тестирования. Альтернативным объяснением этого может быть то, что отключение приводит к меньшему количеству обновлений веса, поскольку оно сбрасывает активации, прикрепленные к весам.

На рисунке 6 показано, что пробел в обобщении модели значительно сокращается в результате увеличения процента отсева. Мы определяем пробел в обобщении как отношение потери проверки к потере обучения (значение на рисунке 6 ограничено значением 5 для лучшей визуализации). Идеальное значение - 1, когда потеря обучения и потеря проверки близки друг к другу. Степень переобучения увеличивается по мере того, как разрыв в обобщении превышает 1. Мы видим, что разрыв в обобщении для модели с conv_dr = 0,2, плотный_dr = 0,6 остается близким к 1 даже после обучения для нескольких эпох вне сходимости, т.е. без переоборудования.

Как отсев влияет на вес модели и активацию?

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

Веса модели. На рисунке 7 мы строим график распределения весов для последних 6 слоев (3 FC и 3 CONV) модели с выпадением и без него. При применении отсева распределение весов по всем слоям изменяется от равномерного распределения с нулевым средним до гауссовского распределения с нулевым средним. Это похоже на эффект уменьшения веса L2-регуляризации на веса модели (см. Следующий раздел, чтобы узнать о L2-регуляризации). Таким образом, отсев имеет некоторый эффект регуляризации веса и, вероятно, является одной из причин, почему отсев так хорошо работает как регуляризатор. Еще одно интересное наблюдение состоит в том, что стандартное отклонение гауссовой кривой уменьшается или эффект уменьшения веса становится более заметным в более глубоких слоях. Это говорит о том, что отсев заставляет модель изучать сложные представления функций через ранние слои и упорядочивает сложность модели на более поздних уровнях, чтобы предотвратить переоснащение.

Добавление исключения эквивалентно применению L2-регуляризации, где значение коэффициента регуляризации увеличивается с глубиной слоя.

Активации модели. На рис. 8 показан номер. ненулевых узлов активации на последнем уровне FC, усредненных по случайному мини-пакету данных проверки (32 примера). Увеличение процента отсева вызывает редкость, т.е. узлов с ненулевыми активациями уменьшается. Это согласуется с наблюдениями Шриваставы, Нитиша и др. в исходной статье [1].

Но почему разреженность хороша для модели? В [2] Glorot et al. перечислили следующие преимущества разреженности нейронной сети. Это еще одна причина, по которой отсев так хорошо работает как регуляризатор.

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

Отключение увеличивает разреженность в активациях модели и использует только меньшее количество узлов на последнем уровне для прогнозирования примера.

L2 регуляризация

Регуляризация L2 или гребневая регрессия добавляет квадрат величины весов модели в качестве штрафного члена к функции потерь.

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

Как L2 лямбда влияет на переобучение?

Мы добавили L2-регуляризацию на каждый уровень в нашей исходной сети с разными лямбда-выражениями в свертке и плотном слое. На рис. 9 и в таблице 2 показано влияние различных лямбда (показаны только самые важные) на точность обучения и проверки. Обратите внимание, что в отличие от выпадения, мы сравниваем точность, а не потерю, потому что потеря является функцией лямбда. Наблюдения резюмируются ниже:

  • Модель без регуляризации (lambda = 0) очень плохо подходит и обобщает. Спустя несколько эпох, как мы проходим данные обучения, больше нет. раз (больше эпох) точность обучения увеличивается, а точность проверки не меняется.
  • Степень переобучения, то есть разрыв между точностью обучения и тестирования, уменьшается по мере увеличения лямбда до определенного значения. Дальнейшее увеличение лямбда (не показано на графике) ограничивает способность модели к обучению и отрицательно влияет на производительность.
  • Точность проверки увеличивается с 0,797 до 0,888, поскольку мы добавляем L2-регуляризацию в сверточных слоях в дополнение к FC-слоям, что свидетельствует о важности применения L2-регуляризации как в сверточных, так и в FC-слоях. Как и в случае исключения, значение лямбда должно быть меньше в сверточном слое, чем в слоях FC.

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

Как регуляризация L2 влияет на веса модели и активации?

Веса модели. На рисунке 11 мы изображаем распределение весов для последних 6 уровней (3 FC и 3 CONV) модели с регуляризацией L2 и без нее. Регуляризация L2 распределяет веса для всех слоев по гауссовскому распределению и сокращает их норму до малых значений.

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

Активации модели. В отличие от исключения, регуляризация L2 не влияет на редкость активаций последнего слоя (график в этой статье не показан). Однако на рисунке 12 мы видим, что при применении L2-регуляризации распределение средних активаций последнего слоя FC смещается влево, то есть величина активаций становится меньше. Вероятно, это побочный эффект уменьшения веса.

L1 Регуляризация

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

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

Как лямбда L1 влияет на переобучение?

Мы добавили регуляризацию L1 в каждый слой в нашей исходной сети с разными лямбда в свертке и плотном слое. На рис. 13 и в таблице 3 показано влияние различных лямбда (показаны только самые важные) на точность обучения и проверки. Наблюдения резюмируются ниже:

  • Модель без регуляризации (lambda = 0) очень плохо подходит и обобщает. Спустя несколько эпох, как мы проходим данные обучения, больше нет. раз (больше эпох) точность обучения увеличивается, а точность проверки не меняется.
  • Степень переобучения, то есть разрыв между точностью обучения и тестирования, уменьшается по мере увеличения лямбда до определенного момента. Дальнейшее увеличение лямбда приводит к недостаточной подгонке (на графике не показано).
  • Точность проверки увеличивается с 0,7893 до 0,8785, поскольку мы добавляем регуляризацию L1 в сверточные слои в дополнение к слоям FC. Подобно выпадению и регуляризации L2, значение лямбда должно быть меньше на уровне свертки, чем на уровнях FC.
  • Время обучения увеличивается по мере добавления регуляризации L1.

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

Как регуляризация L1 влияет на веса модели и активации?

Веса модели. На рисунке 15 мы изображаем распределение весов для последних 6 слоев (3 FC и 3 CONV) модели с регуляризацией L1 и без нее. Подобно регуляризации L2, регуляризация L1 также уменьшает норму весов до очень маленького значения. Однако ключевое различие между регуляризацией L1 и L2 заключается в том, что первая подталкивает большинство весов к нулю и допускает несколько высоких весов, тогда как более поздняя подталкивает все веса к небольшому значению. Это очевидно, если мы сравним веса последнего уровня FC (верхнее левое изображение на рис. 11 и 15) с регуляризацией L1 и L2.

Регуляризация L1 смещает веса, соответствующие менее важным характеристикам, к 0, тем самым полностью удаляя эти функции. Это, в свою очередь, упрощает модель, устраняя переоснащение.

Активации модели. Подобно отсеву, регуляризация L1 вызывает разреженность (рисунок 16). При применении регуляризации L1 средние значения активации большинства узлов становятся близкими к 0 и только несколько узлов с очень высокими средними значениями активации (~ 3 на правом рисунке 17). Меньшие активации (~ 1e-5) приводят к меньшим обновлениям веса и, вероятно, являются основной причиной более медленного обучения с регуляризацией L1.

Как выбрать метод (ы) регуляризации?

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

Чтобы ответить на этот вопрос, мы провели эксперимент, в котором мы обучили 17 различных моделей, в которых мы использовали комбинацию всех методов регуляризации, описанных выше, со случайными значениями гиперпараметров. Для большей эффективности мы провели поиск гиперпараметров отсева в линейном масштабе и регуляризации L1 и L2 в логарифмическом масштабе соответственно. Далее мы наложили условие, что гиперпараметры для слоев CONV должны быть меньше, чем для слоев FC.

Средняя, ​​максимальная и минимальная точности проверки этих 17 моделей составили 0,8970, 0,9161 и 0,8596 соответственно. Таблица 4 суммирует эффективность лучших моделей, полученных в вышеуказанных разделах, по сравнению с лучшей моделью, полученной с помощью комбинации всех методов регуляризации. Мы заметили, что модель, в которой используется только выпадение (2-я строка), имеет лучшую точность проверки, за которой следует лучшая модель, полученная путем случайного поиска параметров. Это показывает, почему отсев так популярен среди практиков глубокого обучения. Обратите внимание, что мы можем сравнивать только точность, а не потери в таблице 4, поскольку потери являются функцией L1 / L2 лямбда, где используются эти регуляризации.

Выводы

Так что все это значит? Что мы можем извлечь из этих экспериментов?

Регуляризация важна для обобщения модели на невидимых данных. Мы заметили, что потеря валидации модели увеличилась с 0,7796 до 0,9189 в результате применения регуляризации.

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

Регуляризация L1 имеет тенденцию давать разреженные веса, тогда как регуляризация L2 дает небольшие веса. Благодаря этому свойству регуляризация L1 также приводит к редким активациям.

Гиперпараметры регуляризации для слоев CONV и FC следует настраивать отдельно. Во всех наших экспериментах мы видели, что регуляризация требуется как в слоях CONV, так и в слоях FC, а гиперпараметры регуляризации в слоях CONV меньше, чем в слоях FC.

Dropout имеет лучшую производительность среди других регуляризаторов. Точность проверки лучшей модели с выпадением, регуляризациями L2 и L1 составила 0,9189, 0,888 и 0,8785 соответственно. Мы также попытались использовать комбинацию всех регуляризаций и получили лучшую точность проверки 0,9161. Обратите внимание, что это может измениться, если мы изменим набор данных или выполним более тщательный поиск гиперпараметров для других методов регуляризации.

Благодарности

Особая благодарность Аашу Сингху за множество интересных обсуждений и предложений для этой статьи.

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

[1] Шривастава, Нитиш и др. Dropout: простой способ предотвратить переобучение нейронных сетей. Https://www.cs.toronto.edu/~hinton/absps/JMLRdropout.pdf

[2] Глоро, Ксавьер, Антуан Бордес и Йошуа Бенжио. Нейронные сети с глубоким разреженным выпрямителем. Http://proceedings.mlr.press/v15/glorot11a/glorot11a.pdf

[3] Код доступен на Github.