Czym jest Stochastyczny spadek gradientu (Stochastic Gradient Descent)?
Stochastyczny spadek gradientu, znany szerzej pod akronimem SGD, to metoda iteracyjnej optymalizacji funkcji kosztu stosowana podczas trenowania modeli uczenia maszynowego. W przeciwieństwie do klasycznego, pełnego spadku gradientu, który oblicza pochodną dla całego zbioru danych naraz, SGD aktualizuje parametry modelu po każdej lub po kilku losowo wybranych obserwacjach. Takie postępowanie wprowadza do procesu treningu niewielką losowość, co może pomóc w szybszym dotarciu do satysfakcjonującego minimum funkcji błędu.
Krótki rys historyczny
Pierwsze teoretyczne podstawy metody pojawiły się w pracy Herba Robbinsa i Suttona Monro z 1951 roku, poświęconej stochastycznej aproksymacji rozwiązań równań nieliniowych. Adaptacje tej idei w uczeniu maszynowym spopularyzowali w latach dziewięćdziesiątych m.in. Yann LeCun i Léon Bottou, udoskonalając trening sieci neuronowych na dużych zbiorach danych obrazowych.
Jak dokładnie działa Stochastyczny spadek gradientu?
Algorytm rozpoczyna się od losowej inicjalizacji wag modelu. Następnie pojedyncza próbka lub mała partia danych przekazywana jest przez model, a na podstawie wyniku obliczany jest błąd. Gradient funkcji kosztu względem każdej wagi określa kierunek najszybszego zmniejszania tego błędu. Wagi są korygowane o niewielki krok, którego rozmiar kontroluje współczynnik uczenia. Operacja powtarza się dla kolejnych losowych obserwacji, aż wartości parametrów ustabilizują się lub osiągnięte zostanie docelowe kryterium zatrzymania.
Różnica w stosunku do pełnego spadku gradientu
Klasyczny spadek gradientu oblicza dokładny gradient na całym zbiorze danych, co może prowadzić do bardzo wolnych aktualizacji przy dużej liczbie przykładów. SGD przyspiesza proces kosztem większej zmienności kolejnych kroków. Ta fluktuacja, choć na pierwszy rzut oka wydaje się niekorzystna, pomaga czasem wydostać się z płytkich minimów lokalnych i znaleźć lepsze ustawienia parametrów.
Zastosowania w praktyce
SGD jest fundamentem treningu głębokich sieci neuronowych, takich jak konwolucyjne modele klasyfikacji obrazów czy transformery analizujące tekst. W mniej złożonych scenariuszach, jak regresja liniowa czy regresja logistyczna na zbiorze reklamowym, również sprawdza się znakomicie, szczególnie gdy dane napływają strumieniowo i trzeba je przetwarzać na bieżąco.
Zalety i ograniczenia
Do najważniejszych korzyści płynących z użycia SGD należy niewielkie zapotrzebowanie na pamięć, szybka konwergencja w pierwszych epokach oraz możliwość uczenia w trybie online. Po stronie wyzwań stoją natomiast podatność na oscylacje wokół minimum i trudność w dobraniu właściwej wartości kroku uczenia. W praktyce problemy te łagodzi się stosując techniki takie jak momentum, adaptacyjne współczynniki uczenia (AdaGrad, Adam) czy regularizację.
Na co uważać?
Nadmiernie wysoki współczynnik uczenia potrafi spowodować, że algorytm będzie przeskakiwał nad optymalnym obszarem, zaś zbyt niski znacząco wydłuży trening. Warto również monitorować rozrzut wartości funkcji kosztu pomiędzy kolejnymi iteracjami – zbyt duża niestabilność bywa oznaką, że wielkość mini-partii jest za mała. Kolejnym aspektem jest losowość inicjalizacji i kolejności próbek, która wpływa na uzyskiwane rozwiązanie; dlatego w środowiskach produkcyjnych często ustala się ziarno generatora liczb pseudolosowych w celu odtwarzalności wyników.
Dodatkowe źródła
Pełniejsze omówienie zagadnienia można znaleźć w artykule Wikipedia – Stochastic Gradient Descent. Warto także sięgnąć do klasycznej publikacji Robbins, H. & Monro, S. (1951). A Stochastic Approximation Method oraz przeglądu współczesnych metod optymalizacji arXiv:1609.04747.


