ГоловнаСтаттіМашинне навчання

Градієнтний спуск у 3D: Читання поверхні втрат як ландшафту

Спостерігайте, як SGD, Моментум, RMSprop та Adam проходять по доли Розенброк і Растрігін — і побачте, чому кожен оптимізатор існує.

mysimulator teamОновлено — червень 2026≈ 9 хв читання▶ Відкрити симуляцію

Втрата функції – це ландшафт

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

жива демонстрація · пов'язана симуляція● LIVE

Три ландшафти, три способи невдалі:

Функція Розенбрука – f(x,y) = (a-x)² + b(y-x²)² – вирізає довгу, вузьку, вигнуту параболічну долину: градієнт через долину різкий, а градіент вздовж неї до мінімуму майже рівний нулю, що є екстремальним випадком того, що називається ухилом в оптимізації. Функція Растрігіна додає косинусну хвилю поверх купола, створюючи тисячі неглибоких локальних мінімумів навколо одного глобального – це перевірка на те, чи застрягне оптимізатор. Функція Гіммельблока має чотири окремих глобальних мінімуми однакової висоти, корисні для демонстрації того, що від якого стартового пункту залежить, який мінімум ви дійсно досягнете – градієнтного спуску немає способу знати, чи існує десь інший кращий.

Простий SGD: правильний напрямок, неправильний крок

Vanilla gradient descent робить найпростішу дію: рухається безпосередньо проти градієнта, масштабованого на фіксовану швидкість навчання.

θ = θ - α * ∇θ(θ) На рівнині Rosenbrock це помітно зазнає невдачі: оскільки градієнт в основному спрямований поперек вузького напрямку, а не вздовж похилого, SGD повільно і хаотично рухається поміж стін, майже повністю витрачаючи рух на безвідповідний напрямок і роблячи надзвичайно повільний прогрес до справжнього мінімума. Якщо швидкість навчання занадто висока будь-де на цій поверхні, кроки перекосять і відхиляться; якщо вона занадто низька, прогрес по рівнину долини буде кривавим. Однак єдина глобальна швидкість навчання не може бути правильною для обох напрямків одночасно.

theta = theta - lr * grad(theta)

Моментум: запам'ятовування траєкторії

Моментум підтримує розрахунок експоненційно затухлого середнього арифметичного попередніх градієнтів та кроків у цьому напрямку замість безпосереднього градієнту:

v = beta * v + grad(theta) // beta ~ 0.9, змінна швидкість theta = theta - lr * v Оскільки звички (zig-zagging components) вздовж долини Розенброк змінюють напрямок, вони частково компенсуються в середньому арифметичному, тоді як невеликий та стабільний компонент на дну доли накопичується та підсилюється - об'єкт поводиться більше як фізичний об'єкт з інерцією, ніж безпам’ятна точка, що реагує лише на локальний схил. В результаті досягається значно швидший прогрес у рівних та стабільних напрямках, а також пригнічені коливання в нерівномірних.

Це дозволяє алгоритму швидко рухатися вздовж долин і зменшує коливання на крутих ділянках.

v = beta * v + grad(theta)      // beta ~ 0.9, a running velocity
theta = theta - lr * v

RMSprop: адаптивна швидкість навчання в кожному напрямку

RMSprop підходить до проблеми невідповідності з боку, змінюючи стратегію: замість згладжування напрямку, він відстежує середнє значення квадрата градієнту для кожного параметра та ділить крок на його квадратний корінь.

s = decay * s + (1 - decay) * grad(theta)^2 theta = theta - lr * grad(theta) / (sqrt(s) + eps)

Напрямки, де градієнт постійно великий (стічні схили улоговини Розенброк), автоматично зменшують ефективний розмір кроку; напрямки, де градієнт залишається невеликим (пологий дно), збільшують розмір кроку. Кожен параметр отримує власну адаптовану швидкість навчання, що і потрібно для улоговини з невідповідністю та яку не може забезпечити єдина глобальна швидкість.

s = decay * s + (1 - decay) * grad(theta)^2
theta = theta - lr * grad(theta) / (sqrt(s) + eps)

Adam: комбінація momentum та RMSprop

Adam (Kingma and Ba, 2014) відстежує як перший момент (середнє значення градієнту з Momentum), так і другий момент (квадратичне середнє значення градієнту з RMSprop), застосовує виправлення нахилу для урахування того, що обидва починаються з нуля, та об'єднує їх в оновлення. Він швидко сходиться на більшості практичних поверхонь втрат з відносно невеликою настройкою швидкості навчання, тому став за замовчуванням оптимізатором для навчання нейронних мереж — хоча добре налаштований SGD з momentum все ще конкурентоспроможний і іноді краще узагальнюється на деяких задачах зі зору. На демонстрації Rosenbrock подивіться, як Adam майже миттєво опускається на дно долини, тоді як простий SGD все ще збивається по стінах.

Frequently asked questions

Чому простий SGD звивається на функції Розенброк?

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

Яка різниця між Momentum та RMSprop?

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

Чи завжди Adam кращий за простий SGD для навчання нейронних мереж?

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

Спробуйте наживо

Усе, що вище, працює прямо у вашому браузері — відкрийте Gradient Descent 3D і змінюйте параметри під час роботи. Нічого не встановлюється, нічого не завантажується на сервер, уся модель живе в одній вкладці.

▶ Відкрити симуляцію Gradient Descent 3D

Що ви знайшли?

Додати кроки відтворення (опційно)