Learning #43: Optymalizacja — spadek gradientowy, momentum i Adam na krajobrazach strat

Dlaczego zwykły SGD zostaje uwięziony w punktach siodłowych, jak momentum przenosi go przez płaskie doliny, jak RMSprop przeskalowuje wymiary osobno, i dlaczego Adam stał się domyślnym wyborem w uczeniu głębokim — wyjaśnione od podstaw, z matematyką potrzebną do ich zrozumienia.

Oto zaskakujący fakt: na wielowymiarowej powierzchni strat sieci neuronowej zdecydowana większość punktów krytycznych (gdzie gradient wynosi zero) to punkty siodłowe, a nie minima lokalne. Analiza Dauphina i współautorów z 2014 roku pokazała, że prawdopodobieństwo, iż punkt krytyczny jest minimum lokalnym, maleje wykładniczo wraz z liczbą parametrów. Oznacza to, że zwykły stochastyczny spadek gradientowy (SGD) spędza alarmująco dużą część czasu treningu, pełznąc po niemal płaskich plateau punktów siodłowych, zamiast schodzić w kierunku dobrego rozwiązania. Zrozumienie, dlaczego tak się dzieje — i co robi z tym każdy nowoczesny optymalizator — to jeden z najbardziej praktycznie użytecznych tematów w uczeniu maszynowym.

1. Zwykły SGD i problem punktów siodłowych

Standardowy spadek gradientowy aktualizuje każdy parametr o mały krok w kierunku przeciwnym do gradientu straty:

θ ← θ − η · ∇θL

gdzie η to współczynnik uczenia, a L to strata. W wariancie stochastycznym (SGD) gradient jest szacowany na podstawie losowej mini-partii zamiast całego zbioru danych, co wprowadza szum, ale pozwala obliczyć każdą aktualizację parametru w czasie stałym, niezależnie od rozmiaru zbioru danych.

Problem staje się widoczny na krajobrazie strat o mieszanej krzywiźnie. W punkcie siodłowym niektóre kierunki wyginają się w górę (dodatnie wartości własne Hesjanu), a inne w dół (ujemne wartości własne). Gradient w punkcie siodłowym jest w przybliżeniu zerowy, więc aktualizacja SGD Δθ ≈ 0. Optymalizator utyka. W niskich wymiarach jest to jedynie irytujące; w sieci z milionami parametrów prawdopodobieństwo, że każdy wymiar zakrzywia się jednocześnie w górę (prawdziwe minimum lokalne) jest znikomo małe — więc niemal każdy płaski obszar to punkt siodłowy, a nie minimum.

Drugą patologią jest wąwóz: wąska, wygięta dolina, gdzie strata jest stroma w jednym kierunku i niemal płaska w drugim. SGD oscyluje w poprzek stromych ścian, ledwo posuwając się wzdłuż dna doliny, marnując kroki i wymagając małego współczynnika uczenia, by pozostać stabilnym.

2. Momentum: gromadzenie prędkości przez płaskie obszary

Klasycznym rozwiązaniem jest momentum, wprowadzone do uczenia maszynowego przez Polyaka (1964) i spopularyzowane przez Rumelharta, Hintona i Williamsa (1986) w kontekście propagacji wstecznej. Zamiast poruszać się wyłącznie w kierunku bieżącego gradientu, gromadzimy bieżący wektor prędkości:

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

Hiperparametr β (zwykle 0,9) określa, jaka część poprzedniej prędkości jest zachowywana. Fizycznie optymalizator zachowuje się jak kula tocząca się ze wzgórza: nabiera prędkości dzięki spójnym kierunkom gradientu i zwalnia, gdy gradienty oscylują. Na plateau punktu siodłowego zgromadzona prędkość z poprzedzającego zejścia przenosi kulę dalej, zamiast pozwolić jej utknąć. W wąwozie oscylujące gradienty znoszą się w kierunku poprzecznym do doliny, wzmacniając się wzdłuż jej dna.

Popularnym wariantem jest Nesterov Accelerated Gradient (NAG), który oblicza gradient w pozycji przewidywanej θ + βv, a nie w pozycji bieżącej. Daje to dokładniejsze oszacowanie gradientu i szybszą zbieżność w ustawieniach wypukłych, z udowodnioną lepszą szybkością O(1/k²) w porównaniu z O(1/k) dla zwykłego SGD.

Sprawdzian intuicji: momentum nie ucieka z punktów siodłowych dlatego, że gradient jest niezerowy — jest on w przybliżeniu zerowy w punkcie siodłowym. Ucieka, bo szum w stochastycznym oszacowaniu gradientu wprowadza niewielkie zaburzenie, a zgromadzona prędkość (z etapu dojścia) przenosi optymalizator dalej, zanim całkowicie utknie.

3. RMSprop i Adam: adaptacyjne współczynniki uczenia per wymiar

Momentum zajmuje się wymiarem czasowym optymalizacji (wykorzystując przeszłe gradienty do budowy prędkości), ale traktuje każdy wymiar parametru tym samym współczynnikiem uczenia. W praktyce niektóre parametry otrzymują duże, częste sygnały gradientowe (np. wagi połączone z popularnymi słowami w warstwie embeddingu), podczas gdy inne otrzymują małe, rzadkie sygnały. Stałe globalne η słabo pasuje do obu przypadków.

RMSprop

Geoffrey Hinton zaproponował RMSprop (niepublikowane, ok. 2012 r.) jako ulepszenie AdaGrad, który akumuluje kwadraty gradientów bez zapominania. RMSprop utrzymuje wykładniczą średnią kroczącą kwadratów gradientów dla każdego parametru:

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

Tutaj ρ (zwykle 0,9–0,99) określa tempo zaniku, a ε (np. 10−8) zapobiega dzieleniu przez zero. Dla wymiaru parametru z konsekwentnie dużymi gradientami s jest duże, więc efektywny rozmiar kroku η/√s automatycznie się kurczy. Dla wymiaru z małymi lub rzadkimi gradientami s pozostaje małe, a efektywny współczynnik uczenia pozostaje duży. Wynikiem jest normalizacja między wymiarami: każdy parametr adaptuje się w tempie odpowiednim do własnej historii gradientu.

Adam: Adaptive Moment Estimation

Adam (Kingma i Ba, 2015) łączy momentum z przeskalowaniem w stylu RMSprop i dodaje korektę obciążenia dla wczesnych kroków treningu, gdy oszacowania momentów są zainicjalizowane na zero. Utrzymuje dwie bieżące statystyki:

m ← β1 · m + (1 − β1) · ∇θL       (pierwszy moment: średnia)
v ← β2 · v + (1 − β2) · (∇θL)²  (drugi moment: nieocentrowana wariancja)

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

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

Domyślne hiperparametry to β1 = 0,9, β2 = 0,999, ε = 10−8 oraz η = 10−3. Te wartości domyślne działają zaskakująco dobrze w szerokim zakresie architektur, co jest głównym powodem dominacji Adama: praktycy rzadko muszą strojenie wykraczać poza sam współczynnik uczenia.

Wyrazy korekty obciążenia i mają największe znaczenie na wczesnym etapie treningu (małe t). W kroku 1 przy β1 = 0,9, surowy pierwszy moment m = 0,1 · g mocno niedoszacowałby prawdziwy średni gradient; dzielenie przez 1 − 0,9 = 0,1 przywraca właściwą skalę. Gdy t → ∞, wyrazy korekty zbliżają się do 1, a Adam upodabnia się w zachowaniu do RMSprop z momentum.

Dlaczego Adam czasem zawodzi: kilka artykułów (zwłaszcza Wilson i współautorzy, 2017) pokazało, że metody adaptacyjne mogą znajdować rozwiązania, które generalizują gorzej niż SGD z momentum w benchmarkach klasyfikacji obrazów. Obecny konsensus mówi, że wiąże się to z większymi efektywnymi współczynnikami uczenia dla wymiarów o rzadkim gradiencie, powodującymi ostre minima. Warianty takie jak AdamW (rozdzielony zanik wag) i Adan adresują niektóre z tych wad i są dziś preferowane w wielu treningach dużych modeli.

Wypróbuj to sam

Te symulacje mysimulator.uk pozwalają obserwować dynamikę optymalizacji na żywo — dostosuj współczynnik uczenia, momentum i poziom szumu, i obserwuj ścieżkę, jaką pokonuje każdy algorytm na krajobrazie strat:

Myśl na zakończenie

Ewolucja od SGD przez momentum do Adama to nie tylko historia usprawnień inżynieryjnych — odzwierciedla ona coraz głębsze zrozumienie geometrii krajobrazu strat. Zwykły SGD zakłada, że wszystkie wymiary są jednakowo trudne; momentum uznaje, że historia ma znaczenie; RMSprop uznaje, że wymiary nie są równe; Adam uznaje oba jednocześnie. Każdy z tych wglądów usunął tryb awarii, na który praktycy trafiali wielokrotnie w rzeczywistych treningach.

Otwartym pytaniem dla kolejnej generacji optymalizatorów jest informacja o krzywiźnie: metody drugiego rzędu, takie jak K-FAC i Shampoo, przybliżają Hesjan lub jego zastępczą macierz Fishera, by wykonywać kroki lepiej dopasowane geometrycznie. Są droższe na iterację, ale wymagają znacznie mniej kroków do zbieżności, a w miarę skalowania sprzętu ten kompromis staje się coraz bardziej atrakcyjny. Fundamentalna walka — ucieczka z płaskich obszarów i nawigacja po źle uwarunkowanej krzywiźnie — pozostanie sercem optymalizacji uczenia głębokiego przez wiele kolejnych lat.