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

AdamW

AdamW

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

Направления: Глубокое обучение · Оптимизация

с корректно отделённым — применяется к весам, а не к .

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

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

Какую задачу решает

В классическом добавляли, прибавляя к . Кажется эквивалентным — но не в адаптивном методе: это слагаемое проходит через деление на , и сила у каждого параметра оказывается разной, обратно пропорциональной масштабу его . Регуляризация превращается в неуправляемую.

отделяет от адаптивного шага: вес умножается на напрямую, минуя моменты. Изменение выглядит косметическим, но эффект на качество заметный, и именно поэтому стал стандартом обучения .

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

с , (для больших моделей ниже стандартных 0.999), 0.1 на все веса кроме bias и параметров , линейный warmup на 2000 шагов до пиковой скорости , дальше косинусный спад до 10% от пика, обрезка на 1.0. Это не универсальная истина, но точка старта, от которой отклоняются осознанно, а не наугад.

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

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

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

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

На практике

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

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 — распространённая практика для : оценка второго адаптируется быстрее и обучение устойчивее.

Где применяется

  • и Стандартный рецепт: + warmup + косинусный спад.
  • Умеренный удерживает веса рядом с предобученными.
  • Vision-трансформерыТам, где с систематически проигрывал, закрыл разрыв с .

Плюсы, минусы и альтернативы

Плюсы

  • ведёт себя предсказуемо и настраивается независимо от .
  • Заметно лучшее обобщение по сравнению с + .
  • Стал де-факто стандартом: рецепты и значения по умолчанию хорошо изучены.
  • Стоимость та же, что у .

Минусы

  • Ещё один , и он взаимодействует с расписанием .
  • По памяти не дешевле .
  • Требует аккуратности с тем, к каким параметрам применять затухание.

Брать, если

  • Практически всегда, где раньше взяли бы .
  • Обучение или .

Не брать, если

  • не нужна вовсе (крайне редкий случай) — тогда разницы с не будет.

Чем заменяют

Видеолекции

Тайм-кода именно на эту тему в записях нет. Но глава «Оптимизация обучения» разобрана в курсе целиком — с той оговоркой, что место в записи придётся искать самому.

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

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

Optimization85%

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

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

Optimizers85%

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

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

Gradient Descent85%

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

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

SGD85%

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

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

Momentum85%

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

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

Adam85%

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

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

RMSProp85%

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

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

Learning Rate Scheduling85%

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

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

Batch size85%

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

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

Проверить себя

Тема встречается в тесте по направлениям — ошибки приведут обратно на эту страницу.

Следующий шагПроверить себя: Глубокое обучениеТема встречается в этом тесте 2 раза. Ошибка приведёт обратно на эту страницу — с объяснением, что именно не сошлось.Перейти →

Глава «Оптимизация обучения» последний раз правилась . Нашли ошибку — напишите.