Как ответить
Регуляризация нужна для борьбы с переобучением — когда модель выучивает шум и случайности в тренировочных данных вместо реальных закономерностей. Суть: наложить штраф на сложность модели, чтобы она обобщала лучше, а не просто запоминала примеры. Я выделяю два класса методов: те, что модифицируют функцию потерь (L1, L2, Elastic Net), и те, что меняют сам процесс обучения (Dropout, Batch Normalization, Data Augmentation, Early Stopping).
Методы через функцию потерь:
- L2 (Ridge) — добавляет к функции потерь сумму квадратов весов, умноженную на коэффициент λ. Веса стягиваются к нулю, но не обнуляются полностью. Хорошо работает, когда много признаков и они коррелированы. Например, в линейной регрессии с 100 признаками при λ=0.1 веса становятся плавными, модель менее чувствительна к выбросам.
- L1 (Lasso) — штраф на сумму модулей весов. Многие веса становятся ровно нулём — автоматический отбор признаков. Я применял L1, когда было 5000 признаков (текстовые биграммы) и надо было отсечь шум. После L1 осталось ~300 ненулевых весов, точность на валидации выросла на 5%.
- Elastic Net — комбинация L1 и L2. Полезно, если в данных есть группы коррелированных признаков: L1 выберет один из группы, а L2 заставит остальные уменьшиться, но не обнулит полностью. В sklearn есть
ElasticNet(alpha=0.1, l1_ratio=0.5).
Методы обучения:
- Dropout — на каждом шаге обнуляем случайные нейроны (например, 50% в полносвязном слое). Во время инференса работают все нейроны, но их активации умножаются на вероятность сохра0нения. Это заставляет сеть не полагаться на одно соединение. В практике с CV: после добавления Dropout 0.3 перед последним полносвязным слоем acc на тесте выросла с 81% до 84%.
- Batch Normalization — нормализуем активации внутри мини-батча перед нелинейностью. Снижает зависимость от инициализации, ускоряет сходимость и даёт лёгкий регуляризующий эффект (за счёт шума в оценках среднего и дисперсии). После добавления BN можно уменьшить Dropout или обойтись без него.
- Data Augmentation — искусственное расширение выборки изменениями: повороты, шум, сдвиги. Эффективно борется с переобучением, особенно если данных мало. Например, для классификации картинок без аугментации accuracy 88%, с random_flip + rotation → 92%.
- Early Stopping — следим за loss на валидации и останавливаемся, когда он перестаёт снижаться (или начинает расти). Практический совет: терпение 5–10 эпох, сохранять лучшую модель по валидационной метрике.
Для деревьев и ансамблей регуляризация своя: ограничение глубины, минимальное число образцов в листе, паддинг (subsample) — например, в Random Forest max_depth=10 и min_samples_leaf=20 уменьшают переобучение, а в XGBoost параметр gamma даёт аналог L1 на листьях.