Адаптивный метод: хранит средние и его квадрата, подбирая шаг для каждого параметра.
- адаптивный шаг: направление от инерции, масштаб — от типичной величины градиента
- скользящее среднее градиента (инерция), скорректированное на смещение первых шагов
- скользящее среднее квадрата градиента: большие градиенты уменьшают шаг, малые — увеличивают
Ключевые тезисы
- Работает «из коробки» при lr ≈ 1e-3 почти на любой задаче.
- Быстро сходится, но иногда обобщает хуже с .
- Bias correction компенсирует смещение оценок на первых шагах.
Какую задачу решает
объединяет две независимые идеи. От он берёт скользящее среднее , которое задаёт направление и гасит шум. От RMSProp — скользящее среднее квадратов градиента, на корень из которого шаг делится: параметры с большими градиентами получают короткий шаг, с малыми — длинный.
В результате каждый параметр движется в своём темпе, и настраивать одну глобальную под самый капризный слой больше не нужно. Именно поэтому так прощает неточно подобранный и стал значением по умолчанию: он даёт разумный результат почти на любой задаче почти без настройки.
На первом шаге оценивается по одному и может оказаться очень маленькой; деление на даёт огромный шаг, который выбрасывает веса далеко от разумной области. Коррекция смещения частично помогает, но при оценка второго становится надёжной только через сотни шагов. Отсюда стандартный рецепт: линейный разогрев от нуля за 500–4000 шагов. На пропуск разогрева — самая частая причина того, что обучение расходится в первые минуты.
Подробный разбор
- скорость обучения — длина шага оптимизатора
- коэффициент инерции (momentum): доля прошлого направления
- малая величина: шум, допуск или защита от деления на ноль
- скользящие средние градиента и его квадрата в адаптивных оптимизаторах
- веса модели — то, что подбирается при обучении
- — инерция (первый ), — масштаб (второй ).
- Деление на делает шаг большим там, где малы, и наоборот — это лечит эффект оврага.
- Bias correction нужен потому, что и инициализированы нулями и первые шаги были бы недооценены.
- Дефолты: , , , .
В задачах компьютерного зрения с и хорошим расписанием часто даёт лучшее итоговое качество, хотя сходится медленнее. Одна из гипотез: адаптивный шаг приводит в более «острые» минимумы.
Память: хранит два состояния на каждый параметр. Для модели на 7 млрд параметров это ~56 ГБ в fp32 только под — отсюда 8-битные оптимизаторы и ZeRO-шардинг.
Где применяется
- Значение по умолчаниюНовая задача, непонятная поверхность потерь, ограниченное время на настройку.
- и NLPПрактически безальтернативен (в варианте ).
- Разреженные Редко встречающиеся получают крупные шаги — важно для .
- и другие нестандартные схемыАдаптивность помогает там, где масштаб непредсказуем.
Плюсы, минусы и альтернативы
Плюсы
- Быстрая сходимость почти без настройки.
- Устойчив к плохо подобранной .
- Хорошо работает при разномасштабных параметрах и разреженных .
- Значения по умолчанию (, ) подходят подавляющему большинству задач.
Минусы
- Хранит два состояния на параметр — памяти втрое больше, чем на веса.
- Иногда обобщает хуже с .
- в классическом работает неправильно — для этого есть .
- Без разогрева способен сделать разрушительно большой шаг на старте.
- Больше , чем у , хотя трогать их обычно не нужно.
Брать, если
- Начинаете новую задачу и нужен разумный результат быстро.
- Обучаете или модель с .
- Времени на подбор мало.
Не брать, если
- Классическая свёрточная задача с большим бюджетом эпох — сравните с + .
- Память на пределе: два состояния на параметр могут не поместиться.
- Нужен — берите , а не с .
Чем заменяют
Видеолекции
Тайм-кода именно на эту тему в записях нет. Но глава «Оптимизация обучения» разобрана в курсе целиком — с той оговоркой, что место в записи придётся искать самому.
Связанные темы
Оптимизаторы
Optimization85%
Оптимизация · ОсновыПоиск параметров, минимизирующих функцию потерь. Свойства задачи — выпуклость, гладкость, обусловленность — определяют, насколько это просто.
Optimizers85%
Оптимизаторы · Глубокое обучениеПравила обновления весов по градиенту: от чистого SGD до адаптивных методов.
Gradient Descent85%
Градиентный спуск · Оптимизация обученияИтеративный шаг против градиента функции потерь — базовый алгоритм обучения.
SGD85%
Стохастический градиентный спуск · Оптимизация обученияГрадиент оценивается по мини-батчу: быстрее, шумнее и, как оказалось, полезнее для обобщения.
Momentum85%
Момент · Оптимизация обученияНакопление экспоненциального среднего градиентов — движение по инерции сквозь колебания.
AdamW85%
AdamW · Оптимизация обученияAdam с корректно отделённым weight decay — регуляризация применяется к весам, а не к градиенту.
RMSProp85%
RMSProp · Оптимизация обученияНормирует шаг на скользящее среднее квадратов градиента, выравнивая масштаб обновлений.
Learning Rate Scheduling85%
Расписание скорости обучения · Оптимизация обученияИзменение шага по ходу обучения: большой в начале для исследования, малый в конце для точной настройки.
Batch size85%
Размер батча · Оптимизация обученияЧисло объектов на одно обновление весов: влияет на скорость, память и качество обобщения.
Всё, что названо в описании, разобрано здесь же или в соседней теме — переходы под каждым определением.
Второй момент
Скользящее среднее квадратов (): масштаб шага для каждого параметра.
Разбор ниже: Механика методаКоррекция смещения
На первых шагах оценки моментов занижены (стартуют с нуля) — деление на это исправляет.
Разбор ниже: Механика методаЗащита от деления на ноль (). Иногда его увеличивают до для устойчивости.
Разбор ниже: Когда Adam хуже SGDОбобщение хуже SGD
На классических свёрточных задачах стабильно даёт чуть худшее обобщение — воспроизводимый эффект.
Разбор ниже: Когда Adam хуже SGDПрофильная компетенция для ролей: ML Engineer, CV-инженер, Исследователь, Инженер речи.
Усиливает профиль: NLP-инженер.
Тема встречается в тесте по направлениям — ошибки приведут обратно на эту страницу.
Глава «Оптимизация обучения» последний раз правилась . Нашли ошибку — напишите.