Ограничение модели, чтобы упростить ее и снизить риск переобучения

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

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

Примечание для цитирования: содержание и структура этой статьи основаны на лекциях по глубокому обучению от One-Fourth Labs - PadhAI.

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

Статья будет построена следующим образом:

Обзор регуляризации

  • Зачем нужна регуляризация
  • Анализ простой и сложной модели
  • Компромисс смещения и отклонения
  • Переоснащение в глубоких нейронных сетях

Методы регуляризации

  • L2 регуляризация
  • Увеличение набора данных
  • Ранняя остановка

Зачем нужна регуляризация?

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

Предположим, что мы взяли одномерные данные игрушки с вводом (x) и выводом (y), и существует истинная связь между вводом и выводом y = f(x). Для объяснения предположим, что мы знаем истинную взаимосвязь между вводом и выводом f(x) = sin(x).

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

Простая модель представляет собой прямую линию формы y = mx + c только с двумя параметрами. Сложная модель - это полином 25-й степени с 26 параметрами.

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

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

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

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

Анализ простых и сложных моделей

Что произойдет, если мы обучим обе модели, используя разные подмножества обучающих данных?

Предположим, что обучающие данные на самом деле состоят из 100 точек. Скажем, мы выбираем 25 точек (эти точки взяты из синусоидальной функции - истинного отношения) случайным образом из обучающих данных и обучаем простую и сложную модель. Для тренировки повторите эксперимент «k» раз.

Сможем ли мы каждый раз получать одну и ту же кривую?

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

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

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

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

  • Простые модели, обученные на разных выборках данных, не сильно отличаются друг от друга. Однако они очень далеки от истинной синусоидальной кривой (недостаточная подгонка).
  • С другой стороны, сложные модели, обученные на разных подмножествах данных, сильно отличаются друг от друга (переобучение).

Смещение и отклонение

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

На приведенном выше рисунке

  • Зеленая линия представляет собой среднее значение предсказанных моделей для простого приближения.
  • Синяя линия представляет собой среднее значение предсказанных моделей для комплексного приближения.
  • Красная линия представляет истинные отношения.

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

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

Из приведенного выше графика:

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

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

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

В итоге:

  • Простая модель: высокая систематическая ошибка, низкая дисперсия
  • Сложная модель: низкая систематическая ошибка, высокая дисперсия

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

Компромисс смещения и отклонения

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

Рассмотрим новую точку (x, y) (черная точка), которая не была замечена во время обучения, и истинный результат, который отображается как зеленая точка. Если мы будем использовать простую модель для прогнозирования, прогнозируемое значение будет далеко от истинного результата, поскольку простая модель имеет большое смещение.

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

Нам нужна модель с низким смещением и дисперсией.

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

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

Мир машинного обучения быстро развивается, и за ним бывает сложно угнаться. Но мы вас поддержали (и еще 14 000 человек). Подпишитесь на главную еженедельную рассылку обо всем, что касается машинного обучения.

Переоснащение в глубоких нейронных сетях

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

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

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

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

  • L2 регуляризация
  • Увеличение набора данных
  • Ранняя остановка

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

Регуляризация использовалась на протяжении десятилетий до появления глубокого обучения в линейных моделях, таких как линейная регрессия и логистическая регрессия. Методы регуляризации работают за счет ограничения возможностей моделей, таких как нейронные сети, линейная регрессия или логистическая регрессия, путем добавления штрафа за норму параметра Ω (θ) к целевой функции. Регуляризация L2 также известна как регрессия гребня или регуляризация Тихонова.

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

Вместо прямого использования функции потерь L мы добавим к целевой функции член регуляризации Ω (θ).

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

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

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

Увеличение набора данных

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

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

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

Ранняя остановка

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

Предположим, мы установили терпение в 5 эпох (т. Е. Количество эпох, которое нужно подождать до ранней остановки). В течение 5 периодов мы будем отслеживать ошибку проверки, и если она не улучшается (остается постоянной или увеличивается), а ошибка обучения уменьшается, то мы не хотим обучаться дальше.

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

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



Заключение

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

Продолжить обучение

Если вам интересно узнать больше о нейронных сетях, посмотрите Искусственные нейронные сети Абхишека и Пухраджа из Starttechacademy. Также курс будет проходить в последней версии Tensorflow 2.0 (бэкэнд Keras). У них также есть очень хороший комплект по машинному обучению (базовый + продвинутый) на языках Python и R.

Рекомендуемая литература





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

А пока мир :)

NK.

Биография автора

Ниранджан Кумар - аналитик розничных рисков в подразделении HSBC Analytics. Он увлечен глубоким обучением и искусственным интеллектом. Помимо работы на Medium, он также пишет для Marktechpost.com в качестве внештатного писателя по науке о данных. Ознакомьтесь с его статьями здесь.

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

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

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

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

Если вы хотите внести свой вклад, отправляйтесь на наш призыв к участникам. Вы также можете подписаться на наши еженедельные информационные бюллетени (Deep Learning Weekly и Comet Newsletter), присоединиться к нам в » «Slack и подписаться на Comet в Twitter и LinkedIn для получения ресурсов, событий и гораздо больше, что поможет вам быстрее и лучше строить модели машинного обучения.