Переобучение и регуляризация
Урок объясняет переобучение и набор приёмов, удерживающих сеть от зубрёжки данных.
Переобучение (overfitting) — это когда сеть запоминает обучающие примеры вместо того, чтобы уловить общую закономерность, и потому плохо работает на новых данных.
Как распознать переобучение
Главный признак — расхождение кривых: потеря на обучении падает, а на валидации начинает расти. Сеть всё точнее на знакомых примерах, но всё хуже на незнакомых. У нейросетей с миллионами параметров на это огромный соблазн: ёмкости хватает, чтобы выучить датасет наизусть.
L2-регуляризация (weight decay)
Идея: штрафовать большие веса. К функции потерь добавляют слагаемое, пропорциональное сумме квадратов весов. Сеть вынуждена держать веса небольшими, а значит — строить более плавные, простые зависимости, которые лучше обобщаются. Управляется коэффициентом: больше коэффициент — сильнее «прижим» весов.
Dropout: случайно выключаем нейроны
На каждом шаге обучения случайно «отключают» часть нейронов слоя (например, 50%), обнуляя их выход. Сеть не может полагаться на конкретные нейроны и учится распределять знание — это как ансамбль из множества прореженных подсетей. На инференсе (предсказании) dropout выключают, все нейроны работают. Простой и очень действенный приём.
Batch normalization: нормализуем активации
Batch norm нормализует выходы слоя по текущему батчу (приводит к среднему 0 и единичному разбросу), затем масштабирует обучаемыми параметрами. Это стабилизирует распределения активаций между слоями, позволяет брать больший lr, ускоряет обучение и попутно даёт лёгкий регуляризующий эффект.
Ранняя остановка и больше данных
- Early stopping: следить за val loss и остановить обучение, как только она перестала падать — не дать сети уйти в переобучение.
- Больше данных / аугментация: самый надёжный способ. Чем больше и разнообразнее данные, тем труднее их «зазубрить». Для картинок их искусственно размножают поворотами, отражениями, сдвигами.
| Приём | Суть |
| L2 / weight decay | штраф за крупные веса |
| dropout | случайное отключение нейронов при обучении |
| batch norm | нормализация активаций по батчу |
| early stopping | остановка по росту val loss |
| аугментация | искусственное расширение данных |
Как сочетать приёмы
На практике регуляризацию не выбирают по одной — её собирают слоями. Типичный рецепт для глубокой сети: He-инициализация, batch norm после свёрток, dropout перед финальным полносвязным слоем, небольшой weight decay в оптимизаторе и early stopping по валидации. Важно не переборщить: слишком сильная регуляризация приводит к недообучению (underfitting) — это зеркальная беда, когда сеть слишком проста и не выучивает даже обучающие данные (высокая потеря и на train, и на validation). Цель — пройти между Сциллой переобучения и Харибдой недообучения: достаточно ёмкая модель плюс ровно столько регуляризации, чтобы train и val потери падали вместе.
Полезная привычка — менять по одному приёму за раз и смотреть на кривую валидации. Если добавили dropout, а val loss улучшилась — оставляем; если стало хуже, откатываем. Так регуляризация настраивается не наугад, а по обратной связи от данных.
Итог
- Переобучение видно по растущей val loss при падающей train loss.
- L2 прижимает веса, dropout прореживает нейроны, batch norm стабилизирует активации.
- Early stopping и больше данных — простые и надёжные средства обобщения.