Оптимизация
Момент
Память о прошлых шагах, которая превращает κ в √κ
Правило
Отсюда два прочтения, оба полезные:
- физическое: шарик с инерцией, катящийся по ландшафту. Он не останавливается на каждом склоне, а накапливает движение;
- вычислительное: усреднение градиентов. Компоненты, которые из шага в шаг согласованы, складываются; те, что меняют знак, гасят друг друга.
Второе объясняет, почему момент помогает именно на вытянутых ландшафтах. По широкой оси градиент всегда указывает в одну сторону, и вклад накапливается до раз. По узкой оси знак чередуется, и колебания подавляются.
Множитель стоит запомнить: при это , при — . Это и «эффективная длина памяти», и во сколько раз вырастает эффективный шаг вдоль согласованного направления. Отсюда практическое правило: подняв , шаг обычно приходится уменьшить.
√κ вместо κ
Главный результат: при оптимально подобранных и множитель сокращения ошибки становится
с оптимальными значениями
Проверено численно на (, ): теоретический оптимум , доводит лосс до за 69 шагов, тогда как градиентному спуску с его оптимальным шагом нужно 444. Отношение , а множитель падает с до — то есть ровно до того значения, которое GD имеет при .
Это и есть смысл «»: момент делает задачу с такой же по трудности, как задача с для обычного спуска. Для разница уже стократная.
Оговорка, которую стоит знать: — теоретический предел для методов первого порядка (нижняя граница Нестерова). Быстрее не может ни один метод, использующий только градиенты. Так что момент — не эвристика, а оптимальный по порядку метод.
Переключайтесь между спуском и моментом на третьем ландшафте и подвигайте .
лосс, логарифмическая шкала
- f в конце
- 6.33e-3
- обусловленность κ
- 100
- порог 2/L
- 0.02
- сходится
Оптимум для момента здесь β = 0.669, α = 0.0331 — 69 шагов против 444 у спуска. Поставьте β = 0.9 при том же шаге и увидите перерегулирование: слишком много памяти при слишком большом шаге.
Второй ландшафт стоит посетить обязательно. На круглой чаше момент вредит: он перелетает минимум, потому что накопленная скорость не даёт остановиться. Ускоритель нужен там, где есть что ускорять.
Нестеров
Отличие в одной строке: градиент измеряется не там, где стоим, а там, где окажемся, если продолжим по инерции.
Смысл — не проехать поворот. Обычный момент узнаёт о смене склона, уже пролетев мимо; Нестеров смотрит вперёд и начинает торможение раньше. Практически это даёт меньшее перерегулирование и лучшую константу в оценке, хотя порядок тот же.
Сравните на первом ландшафте при : у момента заметный выброс за минимум, у Нестерова он меньше.
Как это выглядит в фреймворках
Здесь есть ловушка, стоящая денег. PyTorch реализует момент так:
а часть литературы (и TensorFlow в некоторых режимах) — так:
Разница в множителе : во второй форме — настоящее среднее градиентов, и эффективный шаг равен ; в первой — сумма, и эффективный шаг равен . При это десятикратная разница в реальном шаге.
Отсюда конкретное следствие: перенося гиперпараметры между фреймворками или между статьёй
и кодом, проверяйте форму. Значение lr=0.1, momentum=0.9 означает разные вещи в двух
конвенциях.
Что момент не делает
- не уменьшает . Задача остаётся той же; меняется зависимость алгоритма от неё;
- не гарантирует монотонности. Лосс с моментом может расти на отдельных шагах, и это нормально — инерция проносит через локальные подъёмы;
- не спасает от плохой обусловленности полностью. — всё ещё тысяча шагов. Стандартизация и нормализация уменьшают саму и потому эффективнее.
Второй пункт полезен практически: увидев немонотонный лосс с моментом, не стоит сразу уменьшать шаг. Немонотонность здесь — механизм, а не симптом.
Источники
- Polyak — Some methods of speeding up the convergence of iteration methods — Heavy ball, оригинальный метод
- Goh — Why Momentum Really Works — Разбор с картинками и спектральный анализ
Проверки
0 из 2Что делает момент
Отметьте все верные утверждения о моменте.
Оптимальные параметры момента
Реализуйте
momentum_facts(mu, L, beta)— верните[kappa, gd_rate, mom_rate, effective_gain]:kappa= ;gd_rate= — множитель обычного спуска при оптимальном шаге;mom_rate= — множитель момента при оптимальных и (то есть от переданногоbetaне зависит);effective_gain= — во сколько раз усиливается согласованная компонента при переданномbeta.
Обратите внимание, что третье и четвёртое числа отвечают на разные вопросы: одно про наилучшее достижимое, другое про конкретный выбор .
Проверка, которая обязана сойтись точно:
mom_rateравна , где — оптимальный коэффициент. Это тождество, и оно связывает две формулы, которые обычно приводят раздельно.Загрузка редактора…
Ctrl/⌘ + Enter