Как ответить
Регуляризация — это набор техник, которые борются с переобучением. Идея простая: мы штрафуем модель за сложность, чтобы она не запоминала шум в данных, а выучила общие закономерности. На практике чаще всего используют L1, L2 и Dropout, но есть и другие методы.
L2-регуляризация (Ridge) — добавляет к функции потерь сумму квадратов весов, умноженную на коэффициент λ. Она заставляет веса быть маленькими, но не обнуляет их. Хорошо работает, когда все признаки несут информацию. В PyTorch это делается параметром weight_decay в оптимизаторе. На практике λ обычно подбирают из диапазона 1e-4 до 1e-1.
L1-регуляризация (Lasso) — добавляет сумму модулей весов. Она обнуляет неважные признаки, то есть работает как отбор признаков. Полезна, когда у нас много зашумленных фич. Минус — недифференцируема в нуле, поэтому для обучения используют субградиентный спуск или проксимальные методы.
Elastic Net — комбинация L1 и L2. Берёт лучшее от обоих методов: и обнуляет признаки, и стабилизирует веса. Часто используется в линейных моделях, когда признаков больше, чем объектов.
Dropout — во время обучения случайно отключает нейроны с вероятностью p (обычно 0.2-0.5). Это заставляет сеть не полагаться на отдельные нейроны, а учить избыточные представления. На инференсе dropout отключается, а веса масштабируются на p. В современных моделях (типа Transformer) часто используют dropout 0.1-0.2 для attention слоёв.
Early Stopping — простой метод: следим за метрикой на валидации и останавливаем обучение, когда она перестаёт улучшаться. На практике это часто эффективнее L2, особенно в глубоком обучении. Обычно используют patience=5-10 эпох.
Batch Normalization — изначально создавался для борьбы с внутренним ковариатным сдвигом, но на практике тоже работает как регуляризатор. Он добавляет шум через статистики батча, что снижает переобучение. В современных сетях BN часто заменяют L2 и Dropout.
Data Augmentation — не классическая регуляризация, но работает по тому же принципу: мы искусственно расширяем датасет, добавляя шум к данным (повороты, сдвиги, Gaussian noise). Это заставляет модель быть устойчивее к вариациям.
На практике я обычно начинаю с Early Stopping и Dropout (0.3) для нейросетей, а для линейных моделей — Elastic Net с кросс-валидацией по λ. Если модель всё ещё переобучается, добавляю L2 с малым weight_decay. Главное — не переборщить: слишком сильная регуляризация приведёт к недообучению.