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

Оглавление

1. Удержание
2. Перекрестная проверка
3. Увеличение данных
4. Выбор функции
5. L1 / L2 регуляризация
6. Удалить слои / количество единиц на слой
7. Выпадение
8. Ранняя остановка

1. Задержка (данные)

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

2. Перекрестная проверка (данные)

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

3. Увеличение данных (данные)

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

4. Выбор характеристик (данные)

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

5. Регуляризация L1 / L2 (алгоритм обучения)

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

6. Удалить слои / количество единиц на слой (модель).

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

7. Выпадение (модель)

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

8. Ранняя остановка (модель)

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

Вы дошли до конца статьи! Надеюсь, теперь у вас есть набор методов борьбы с переобучением ⚔️.

Снимаю шляпу 🎩 за изучение этого руководства, и я надеюсь, что вам понравилось. Не стесняйтесь следить за новыми учебниками. Если вас интересуют другие темы, связанные с машинным обучением, ознакомьтесь также с некоторыми интересными статьями Тима. :)