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

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

English Regularization, regularisation
Синонимы Штраф за сложность, penalty, weight decay (для L2), shrinkage

Регуляризация — это совокупность методов, которые добавляют к функции потерь модели штраф за её сложность. Цель — не дать модели «зазубрить» обучающие данные и заставить её искать более общие закономерности. Без регуляризации нейросеть с миллионами параметров легко достигает нулевой ошибки на тренировочной выборке, но проваливается на новых данных.

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

Как это работает

В классическом машинном обучении функция потерь L измеряет, насколько прогнозы модели отличаются от правильных ответов. Регуляризация добавляет к ней второе слагаемое — штраф R(w), который зависит от весов w:

Ltotal = Ldata + λ · R(w)

Коэффициент λ (лямбда, или alpha) управляет силой регуляризации. Чем он больше, тем сильнее модель штрафуется за большие веса и тем проще становится её решение. Если λ = 0, регуляризация отключена. Если λ слишком велика, модель может стать слишком простой и недообучиться.

В нейронных сетях регуляризация работает на уровне слоёв. Например, в Keras или PyTorch можно передать регуляризатор в слой: Dense(512, kernel_regularizer=regularizers.l2(0.001)). Штраф применяется к матрице весов, но не к смещениям (bias), потому что смещения почти не влияют на переобучение.

Зачем это нужно

Главная проблема сложных моделей — переобучение (overfitting). Модель запоминает обучающие примеры вместе с их случайным шумом и теряет способность обобщать. Регуляризация — один из самых надёжных способов борьбы с этим.

Практическая ценность:

  • Модель лучше работает на новых, невиданных данных — это главная метрика в продакшене.
  • L1-регуляризация обнуляет часть весов, делая модель разреженной и более интерпретируемой.
  • L2-регуляризация снижает разброс весов, делая обучение стабильнее.
  • Dropout и early stopping — родственные техники, которые решают ту же задачу другими способами.

Примеры

  • Логистическая регрессия для прогноза оттока клиентов. Без регуляризации модель может присвоить огромный вес одному редкому признаку (например, «клиент звонил в поддержку ровно 3 раза»). С L2-регуляризацией вес остаётся умеренным, и модель не разваливается на новых клиентах.
  • Нейросеть для классификации изображений. Свёрточная сеть с 10 млн параметров на выборке из 50 000 картинок мгновенно переобучается. Добавление L2-штрафа к свёрточным слоям и Dropout после полносвязных слоёв снижает разрыв между точностью на train и validation.
  • Lasso-регрессия для отбора признаков. В задаче с 500 признаками L1-регуляризация зануляет веса ненужных переменных. Остаётся 20 значимых, модель упрощается, а бизнес понимает, какие факторы реально влияют на целевую метрику.
  • Weight decay в AdamW. Оптимизатор AdamW применяет L2-регуляризацию отдельно от адаптивного шага, что даёт более предсказуемый эффект, чем классический Adam с L2-штрафом внутри градиента.

Формула или метрика

Для L2-регуляризации штраф равен сумме квадратов весов:

R(w) = Σ wi2

Для L1-регуляризации — сумме модулей:

R(w) = Σ |wi|

Итоговая функция потерь: L = Ldata + λ · R(w). Чем выше λ, тем сильнее веса стягиваются к нулю. В библиотеках λ часто называют alpha или weight_decay.

Типичные ошибки

  • Регуляризовать bias. Смещения не создают переобучения, и их штраф только мешает модели сдвигать порог активации. Регуляризацию применяют только к матрицам весов.
  • Слишком большая λ. Если штраф перевешивает данные, модель становится слишком простой: все веса близки к нулю, и она предсказывает почти константу. Это недообучение.
  • Использовать L1 без масштабирования признаков. L1 чувствителен к масштабу: признак с большим диапазоном получит несправедливо большой штраф. Перед L1-регуляризацией признаки нужно стандартизировать.
  • Забыть про Dropout на этапе инференса. Dropout отключает нейроны только во время обучения. Если оставить его включённым при предсказании, результаты будут случайными и заниженными.

Как улучшить

  • Начните с L2-регуляризации: она проще в настройке и редко вредит. Типичные значения λ — от 1e-5 до 1e-2.
  • Подбирайте λ по validation-метрике, а не по train-loss. Увеличение λ почти всегда ухудшает train-loss, но может улучшить validation.
  • Комбинируйте техники: L2 + Dropout + early stopping часто дают лучший результат, чем каждая по отдельности.
  • Для разреженных моделей используйте L1 или Elastic Net (L1 + L2). Elastic Net сохраняет стабильность L2 и отбор признаков L1.
  • Следите за масштабом признаков: стандартизация (StandardScaler) перед регуляризацией — почти обязательный шаг.

Источники

Microsoft Learn — L1- и L2-регуляризация в машинном обучении (https://learn.microsoft.com/ru-ru/archive/msdn-magazine/2015/february/test-run-l1-and-l2-regularization-for-machine-learning)

TensorFlow Core — Переобучение и недообучивание: стратегии регуляризации (https://tensorflow.google.cn/tutorials/keras/overfit_and_underfit)

Гудфеллоу Я., Бенджио И., Курвилль А. — Deep Learning (ISBN 978-0-262-03561-3), глава 7 «Regularization»

Николенко С. — Сверточные нейронные сети (учебные материалы СПбГУ, https://logic.pdmi.ras.ru/~sergey/teaching/mlspsu22/31-cnn.pdf)