Weight decay W

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

English Weight decay, L2 regularization
Синонимы L2-регуляризация, L2-штраф, регуляризация весов, затухание весов

Weight decay — это метод регуляризации, который при обучении нейронной сети штрафует модель за слишком большие значения весов. Идея проста: если вес становится чрезмерно большим, он получает «штраф», и обучение стремится его уменьшить. Это заставляет сеть искать более простые решения, которые лучше обобщают на новые данные, а не заучивают обучающую выборку наизусть.

Чаще всего weight decay реализуется как добавление к функции потерь слагаемого, пропорционального сумме квадратов весов. Именно поэтому его часто отождествляют с L2-регуляризацией.

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

Во время обучения нейросеть минимизирует функцию потерь, которая измеряет, насколько предсказания модели отличаются от правильных ответов. Weight decay добавляет к этой функции дополнительный член. Если обозначить исходную функцию потерь как Ltrain, а вектор всех весов модели как w, то итоговая функция потерь выглядит так:

L = Ltrain + (λ / 2) · Σ wi²

Здесь λ (лямбда) — гиперпараметр, который задаёт силу штрафа. Чем он больше, тем сильнее модель «прижимает» веса к нулю. При вычислении градиента этого дополнительного слагаемого появляется член λ · wi. Это означает, что на каждом шаге обучения каждый вес уменьшается на величину, пропорциональную его текущему значению. Именно этот эффект и называют «затуханием весов».

Важно различать weight decay и L2-регуляризацию. Для классического стохастического градиентного спуска (SGD) они математически эквивалентны. Однако для адаптивных оптимизаторов, таких как Adam, это не так. В Adam L2-штраф добавляется к градиенту, который затем нормализуется, из-за чего эффект регуляризации искажается. Поэтому в 2019 году был предложен AdamW — вариант Adam, в котором weight decay применяется напрямую к весам, минуя адаптивную нормализацию градиента. AdamW стал стандартом де-факто для обучения современных трансформеров и других архитектур.

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

Главная задача weight decay — борьба с переобучением. Переобученная модель отлично работает на обучающих данных, но плохо справляется с новыми примерами. Штраф за большие веса заставляет сеть использовать меньшие значения коэффициентов, что делает функцию, которую она аппроксимирует, более гладкой и простой. Простые модели, как правило, лучше обобщают.

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

Примеры

  • Обучение ResNet-50 на CIFAR-10: Стандартный рецепт включает SGD с weight decay = 5e-4. Без него точность на тестовой выборке падает на несколько процентных пунктов из-за переобучения.
  • Файн-тюнинг BERT для классификации текстов: В большинстве публичных реализаций используется AdamW с weight decay = 0.01. Это значение стало практически стандартным для трансформеров.
  • Генеративно-состязательные сети (GAN): В дискриминаторе часто применяют weight decay, чтобы предотвратить ситуацию, когда он становится слишком «уверенным» и перестаёт давать генератору полезный сигнал.
  • Линейная регрессия с большим числом признаков: Ridge-регрессия — это та же L2-регуляризация. Если признаков больше, чем объектов, обычная линейная регрессия переобучается. Ridge с weight decay решает эту проблему.

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

Итоговая функция потерь с weight decay:

L = Ltrain + (λ / 2) · ||w||²

Градиент по весу wi:

∂L / ∂wi = ∂Ltrain / ∂wi + λ · wi

Правило обновления веса при SGD:

wi ← wi − η · (∂Ltrain / ∂wi + λ · wi)

Здесь η — скорость обучения (learning rate). Типичные значения λ варьируются от 1e-5 до 1e-2 в зависимости от архитектуры и задачи.

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

  • Применение weight decay к bias и параметрам нормализации. Смещения (bias) и параметры слоёв BatchNorm/LayerNorm обычно не регуляризуются. Штраф на них может ухудшить обучение. В PyTorch для этого принято разделять параметры на группы.
  • Слишком большое значение λ. Если штраф слишком сильный, модель становится недообученной: веса «прижимаются» к нулю, и сеть теряет способность улавливать даже простые закономерности.
  • Использование L2-регуляризации в Adam вместо weight decay. Как показано в работе Loshchilov & Hutter, L2-штраф в Adam работает не так, как ожидается, из-за взаимодействия с адаптивной нормализацией градиента. Для Adam и его вариантов следует использовать именно decoupled weight decay (AdamW).
  • Подбор λ без учёта learning rate. В некоторых реализациях (например, в оригинальном AdamW) weight decay не полностью отделён от learning rate. При использовании learning rate schedules это может приводить к непредсказуемому поведению.

Как улучшить

  • Разделяйте параметры на группы. Применяйте weight decay только к весам линейных и свёрточных слоёв. Bias, параметры нормализации и embeddings (в некоторых случаях) оставляйте без регуляризации. Это стандартная практика в обучении трансформеров.
  • Используйте AdamW вместо Adam + L2. Если ваш оптимизатор — Adam или его адаптивный вариант, выбирайте decoupled weight decay. Это даёт более предсказуемый и обычно лучший результат.
  • Подбирайте λ через валидацию. Начните с типичных значений (0.01 для AdamW, 5e-4 для SGD) и проверяйте на валидационной выборке. Диапазон для поиска: от 1e-5 до 1e-1 по логарифмической шкале.
  • Рассмотрите расписание для weight decay. В некоторых задачах (например, при обучении с большим числом эпох) полезно постепенно уменьшать λ или использовать его вместе с learning rate schedule. Исследования показывают, что это может улучшить финальное качество.
  • Экспериментируйте с целевой нормой весов (Weight Norm Control). Вместо простого затухания к нулю можно задавать целевую норму весов, к которой модель стремится в процессе обучения. Это более общий подход, предложенный в работе Loshchilov (2023).

Источники

Goodfellow, Bengio, Courville. Deep Learning (MIT Press, 2016) — раздел 7.1.1, L2 Parameter Regularization (ISBN: 978-0262035613)

Loshchilov, Hutter. Decoupled Weight Decay Regularization (ICLR 2019) — ключевая работа по AdamW, показывает неэквивалентность L2-регуляризации и weight decay в адаптивных оптимизаторах (URL: https://arxiv.org/abs/1711.05101)

PyTorch Documentation — Optimizer API (URL: https://pytorch.org/docs/stable/optim.html)

Renals, S. MLP Lecture 5: Regularisation and Normalisation — University of Edinburgh (URL: https://www.inf.ed.ac.uk/teaching/courses/mlp/2017-18/mlp05-reg.pdf)