Навчання №43: Оптимізація — градієнтний спуск, момент і Adam на ландшафтах втрат

Чому звичайний SGD потрапляє в пастку сідлових точок, як момент проносить його крізь плоскі долини, як RMSprop масштабує крок для кожного виміру окремо, і чому Adam став фактичним стандартом для глибокого навчання — пояснено з перших принципів разом із математикою, потрібною для розуміння.

Ось цікавий факт: на високовимірній поверхні втрат нейромережі переважна більшість критичних точок (де градієнт дорівнює нулю) — це сідлові точки, а не локальні мінімуми. Аналіз Дофіна та співавторів 2014 року показав, що ймовірність того, що критична точка є локальним мінімумом, експоненційно спадає зі збільшенням кількості параметрів. Це означає, що звичайний стохастичний градієнтний спуск (SGD) витрачає тривожно велику частку часу навчання, повзаючи по майже плоских плато сідлових точок, замість того щоб спускатися до хорошого розв'язку. Розуміння того, чому так відбувається — і що робить кожен сучасний оптимізатор, щоб цьому зарадити — одна з найпрактичніших тем у машинному навчанні.

1. Звичайний SGD і проблема сідлових точок

Стандартний градієнтний спуск оновлює кожен параметр невеликим кроком у напрямку, протилежному градієнту функції втрат:

θ ← θ − η · ∇θL

де η — темп навчання, а L — функція втрат. У стохастичному варіанті (SGD) градієнт оцінюється за випадковим міні-пакетом даних, а не за всім набором даних, що вносить шум, але дозволяє обчислювати кожне оновлення параметра за сталий час незалежно від розміру набору даних.

Проблема стає очевидною на ландшафті втрат зі змішаною кривизною. У сідловій точці одні напрямки вигинаються вгору (додатні власні значення гессіана), а інші — вниз (від'ємні власні значення). Градієнт у сідлі приблизно дорівнює нулю, тому оновлення SGD Δθ ≈ 0. Оптимізатор застрягає. У малих вимірностях це лише неприємність; у мережі з мільйонами параметрів імовірність того, що кожен вимір вигинається вгору одночасно (справжній локальний мінімум), нехтовно мала — тож майже кожна плоска ділянка є сідловою точкою, а не мінімумом.

Друга патологія — це яр (ravine): вузька викривлена долина, де втрата крута в одному напрямку й майже плоска в іншому. SGD осцилює впоперек крутих стінок, ледве просуваючись уздовж дна долини, марнуючи кроки й вимагаючи малого темпу навчання для збереження стабільності.

2. Момент: накопичення швидкості крізь плоскі ділянки

Класичне вирішення — це момент (momentum), запроваджений у машинне навчання Поляком (1964) і популяризований Румельгартом, Гінтоном та Вільямсом (1986) у контексті зворотного поширення помилки. Замість руху виключно в напрямку поточного градієнта ми накопичуємо вектор швидкості, що триває в часі:

v ← β · v − η · ∇θL
θ ← θ + v

Гіперпараметр β (зазвичай 0,9) визначає, яка частка попередньої швидкості зберігається. Фізично оптимізатор поводиться як куля, що котиться з гори: вона набирає швидкість, рухаючись у стабільному напрямку градієнта, і сповільнюється, коли градієнти осцилюють. На сідловому плато накопичена швидкість від попереднього спуску проносить кулю крізь нього, не даючи їй зупинитися. У яру осцилюючі градієнти взаємоскасовуються в напрямку впоперек долини, водночас підсилюючи рух уздовж її дна.

Популярний варіант — це прискорений градієнт Нестерова (NAG), який обчислює градієнт у точці випередження θ + βv, а не в поточній позиції. Це дає точнішу оцінку градієнта та забезпечує швидшу збіжність у опуклих задачах з доведено кращим темпом O(1/k²) проти O(1/k) для звичайного SGD.

Перевірка інтуїції: момент не вириватися із сідлових точок завдяки ненульовому градієнту — у сідлі градієнт приблизно нульовий. Він виривається, бо шум в оцінці стохастичного градієнта створює невелике збурення, а накопичена швидкість (від попереднього наближення) проносить оптимізатор крізь ділянку, перш ніж він повністю застрягне.

3. RMSprop і Adam: адаптивні темпи навчання для кожного виміру

Момент вирішує часовий аспект оптимізації (використання минулих градієнтів для формування швидкості), але застосовує однаковий темп навчання до кожного виміру параметрів. На практиці одні параметри отримують великі, часті градієнтні сигнали (наприклад, ваги, пов'язані з поширеними словами у шарі вбудовування), а інші — малі, рідкісні сигнали. Фіксований глобальний η погано підходить для обох випадків.

RMSprop

Джеффрі Гінтон запропонував RMSprop (неопубліковано, приблизно 2012 р.) як покращення AdaGrad, який накопичує квадрати градієнтів без «забування». RMSprop підтримує експоненційне ковзне середнє квадратів градієнтів для кожного параметра:

s ← ρ · s + (1 − ρ) · (∇θL)²
θ ← θ − (η / √(s + ε)) · ∇θL

Тут ρ (зазвичай 0,9–0,99) визначає швидкість затухання, а ε (наприклад, 10−8) запобігає діленню на нуль. Для виміру параметра зі стабільно великими градієнтами s велике, тож ефективний розмір кроку η/√s автоматично зменшується. Для виміру з малими або рідкісними градієнтами s залишається малим, а ефективний темп навчання лишається великим. Результат — нормалізація між вимірами: кожен параметр адаптується з темпом, що відповідає його власній історії градієнтів.

Adam: адаптивна оцінка моментів

Adam (Кінгма й Ба, 2015) поєднує момент із масштабуванням у стилі RMSprop і додає корекцію зміщення для ранніх кроків навчання, коли оцінки моментів ініціалізовані нулем. Він підтримує дві статистики, що обчислюються в реальному часі:

m ← β1 · m + (1 − β1) · ∇θL       (перший момент: середнє)
v ← β2 · v + (1 − β2) · (∇θL)²  (другий момент: нецентрована дисперсія)

m̂ = m / (1 − β1t)
v̂ = v / (1 − β2t)

θ ← θ − η · m̂ / (√v̂ + ε)

Типові гіперпараметри за замовчуванням: β1 = 0,9, β2 = 0,999, ε = 10−8 і η = 10−3. Ці значення несподівано добре працюють для широкого спектра архітектур, що є однією з головних причин домінування Adam: практикам рідко доводиться налаштовувати щось окрім темпу навчання.

Члени корекції зміщення та мають найбільше значення на ранніх етапах навчання (малі значення t). На першому кроці за β1 = 0,9 сирий перший момент m = 0,1 · g сильно занижував би справжнє середнє значення градієнта; ділення на 1 − 0,9 = 0,1 відновлює правильний масштаб. Коли t → ∞, члени корекції наближаються до 1, і поведінка Adam наближається до RMSprop з моментом.

Чому Adam іноді дає збій: кілька праць (зокрема Вілсон та співавтори, 2017) продемонстрували, що адаптивні методи можуть знаходити розв'язки, які узагальнюються гірше, ніж SGD із моментом, на бенчмарках класифікації зображень. Наразі загальноприйнята думка полягає в тому, що це пов'язано з більшими ефективними темпами навчання для вимірів із рідкісними градієнтами, що призводить до гострих мінімумів. Варіанти на кшталт AdamW (розв'язане затухання ваг) та Adan усувають деякі з цих недоліків і зараз переважають у багатьох тренуваннях великих моделей.

Спробуйте самі

Ці симуляції mysimulator.uk дають змогу спостерігати динаміку оптимізації в реальному часі — регулюйте темп навчання, момент і рівень шуму та спостерігайте, яку траєкторію обирає кожен алгоритм на ландшафті втрат:

Насамкінець

Прогрес від SGD до моменту й до Adam — це не просто історія інженерних покращень — вона відображає дедалі глибше розуміння геометрії ландшафту втрат. Звичайний SGD вважає всі виміри однаково складними; момент визнає, що історія має значення; RMSprop визнає, що виміри нерівнозначні; Adam визнає обидва факти одночасно. Кожне нове розуміння усувало режим збою, з яким практики неодноразово стикалися в реальних тренуваннях.

Відкрите питання для наступного покоління оптимізаторів — це інформація про кривизну: методи другого порядку, такі як K-FAC і Shampoo, апроксимують гессіан або його проксі на основі інформаційної матриці Фішера, щоб робити геометрично обґрунтованіші кроки. Вони дорожчі на одну ітерацію, але потребують значно менше кроків для збіжності, і зі зростанням обчислювальних потужностей цей компроміс стає дедалі привабливішим. Фундаментальна боротьба — вихід із плоских ділянок і навігація в погано обумовленій кривизні — залишатиметься в центрі оптимізації глибокого навчання ще довгі роки.