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

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

Модель должна хорошо обобщать невидимые данные.

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

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

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

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

  1. Ранняя остановка
  2. Регуляризация L1
  3. Регуляризация L2
  4. Разреженное кодирование
  5. Выпадающий слой
  6. Слой BatchNorm

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

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

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

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

При регуляризации L1 мы добавляем к функции потерь масштабированную версию L1-нормы весовых параметров:

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

3. Регуляризация L2

Регуляризация L2, также называемая затуханием веса, работает аналогично регуляризации L1. Вместо добавления члена нормы L1 он добавляет квадрат нормы весов к функции потерь:

Норма L2 представляет собой квадратный корень из квадратов значений весовых параметров.

4. Разреженное кодирование

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

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

5. Выпадающий слой

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

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

6. Пакетная нормализация

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

Как вы можете заметить из Алгоритма 1, основными шагами для нормализации активации слоя являются:

  1. Рассчитайте среднее значение пакета и дисперсию пакета для каждой активации xᵢ, где m — размер пакета.
  2. Нормализуйте каждую активацию xᵢ, придав ей среднее значение 0 и дисперсию 1. Для числовой стабильности к дисперсии партии добавляется ε.
  3. Масштабируйте и сдвигайте каждую нормализованную активацию, используя соответственно параметры γ и β, полученные во время обучения.
  4. Передайте каждую масштабированную и сдвиньте активацию yᵢ на следующий слой

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

Последние мысли:

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

Другие статьи по теме:





Ссылки:

[1] Генеративно-состязательные сети, Coursera, DeepLearning.AI

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