Оптимизация обучения

AdamW

AdamW

актуальноТекущий рабочий стандарт

Adam с корректно отделённым weight decay — регуляризация применяется к весам, а не к градиенту.

Ключевые тезисы

  • В обычном Adam L2-штраф искажается адаптивным масштабированием.
  • Де-факто стандарт обучения трансформеров.
  • Типичный weight decay: 0.01–0.1.

Подробный разбор

2 подтем — раскройте любую, чтобы увидеть объяснение, формулы, примеры и интерактивные графики.

1

Отвязанный weight decay

Тонкость, из-за которой Adam долго проигрывал в качестве.

Обозначения
  • сила регуляризации: штраф за сложность модели
  • веса модели — то, что подбирается при обучении
  • функция потерь — то, что минимизируется при обучении
Обозначения
  • скорость обучения — длина шага оптимизатора
  • сила регуляризации: штраф за сложность модели
  • малая величина: шум, допуск или защита от деления на ноль
  • веса модели — то, что подбирается при обучении
Штраф применяется к весам напрямую, минуя адаптивное масштабирование

В обычном Adam параметры с большими градиентами получают ослабленную регуляризацию — это не то, что задумано. AdamW разделяет два механизма, и weight decay снова работает предсказуемо.

На практике

К bias и параметрам нормализации weight decay обычно не применяют: их сжатие к нулю только мешает.

2

Готовый рецепт для трансформеров

Набор значений, с которого стоит начинать.

optimizer = torch.optim.AdamW(
    [{"params": decay_params,    "weight_decay": 0.1},
     {"params": no_decay_params, "weight_decay": 0.0}],
    lr=3e-4, betas=(0.9, 0.95), eps=1e-8)

scheduler = get_cosine_schedule_with_warmup(
    optimizer, num_warmup_steps=2000, num_training_steps=total_steps)
no_decay: bias, LayerNorm, эмбеддинги
На практике

вместо стандартных 0.999 — распространённая практика для больших языковых моделей: оценка второго момента адаптируется быстрее и обучение устойчивее.

Связанные темы

Оптимизаторы

Optimization85%

Оптимизация · Основы

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

Optimizers85%

Оптимизаторы · Глубокое обучение

Правила обновления весов по градиенту: от чистого SGD до адаптивных методов.

Gradient Descent85%

Градиентный спуск · Оптимизация обучения

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

SGD85%

Стохастический градиентный спуск · Оптимизация обучения

Градиент оценивается по мини-батчу: быстрее, шумнее и, как оказалось, полезнее для обобщения.

Momentum85%

Момент · Оптимизация обучения

Накопление экспоненциального среднего градиентов — движение по инерции сквозь колебания.

Adam85%

Adam · Оптимизация обучения

Адаптивный метод: хранит средние градиента и его квадрата, подбирая шаг для каждого параметра.

RMSProp85%

RMSProp · Оптимизация обучения

Нормирует шаг на скользящее среднее квадратов градиента, выравнивая масштаб обновлений.

Learning Rate Scheduling85%

Расписание скорости обучения · Оптимизация обучения

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

Batch size85%

Размер батча · Оптимизация обучения

Число объектов на одно обновление весов: влияет на скорость, память и качество обобщения.