Spadek gradientowy to algorytm minimalizacji funkcji różniczkowalnej przez wykonywanie kolejnych kroków w kierunku, który lokalnie najszybciej ją zmniejsza. Jeśli szukasz odpowiedzi na pytanie „co to jest spadek gradientowy”, podstawowa idea jest prosta: oblicz nachylenie, wykonaj mały krok w dół i powtarzaj.

Jest szeroko stosowany w optymalizacji opartej na rachunku różniczkowym oraz w uczeniu maszynowym. Metoda działa najlepiej wtedy, gdy można obliczyć pochodną lub gradient i dobrać współczynnik uczenia na tyle mały, by zachować stabilność, ale na tyle duży, by robić postęp.

W przypadku jednej zmiennej reguła aktualizacji ma postać

xk+1=xkηf(xk),x_{k+1} = x_k - \eta f'(x_k),

a dla wielu zmiennych przyjmuje postać

xk+1=xkηf(xk),\mathbf{x}_{k+1} = \mathbf{x}_k - \eta \nabla f(\mathbf{x}_k),

gdzie η>0\eta > 0 jest współczynnikiem uczenia. Współczynnik uczenia kontroluje długość każdego kroku, więc bezpośrednio wpływa na to, czy algorytm zbiega, zatrzymuje się, czy przeskakuje minimum.

Intuicja spadku gradientowego

Gradient wskazuje kierunek wzrostu funkcji. Jeśli celem jest minimalizacja, naturalnym lokalnym ruchem jest pójście w przeciwną stronę.

Ta lokalna reguła nie gwarantuje najlepszego możliwego wyniku w każdym problemie. Dla funkcji wypukłej spadek gradientowy może prowadzić do minimum globalnego. Dla funkcji niewypukłej może zatrzymać się w minimum lokalnym, na płaskim obszarze albo w innym punkcie stacjonarnym.

Jak działa algorytm spadku gradientowego

Każda iteracja wykorzystuje informację o bieżącym nachyleniu, aktualizuje punkt i sprawdza, czy należy kontynuować.

  1. Zacznij od początkowego przybliżenia x0x_0 albo x0\mathbf{x}_0.
  2. Oblicz pochodną lub gradient w bieżącym punkcie.
  3. Zaktualizuj punkt, odejmując η\eta razy tę pochodną lub gradient.
  4. Zatrzymaj się, gdy gradient jest mały, aktualizacje stają się bardzo małe albo zostanie osiągnięty ustalony limit iteracji.

Standardowa reguła aktualizacji zakłada, że funkcja celu jest różniczkowalna w punktach, w których ją stosujesz. Niektóre metody optymalizacji używają subgradientów dla problemów z funkcjami nieróżniczkowalnymi, ale to inna sytuacja.

Dlaczego współczynnik uczenia ma znaczenie w spadku gradientowym

Współczynnik uczenia η\eta to długość kroku.

Jeśli η\eta jest zbyt małe, spadek gradientowy zwykle porusza się we właściwym kierunku, ale może działać bardzo wolno. Jeśli η\eta jest zbyt duże, aktualizacje mogą przeskakiwać minimum, oscylować albo nawet się rozbiegać.

Ten kompromis dobrze widać na funkcji kwadratowej, gdzie nachylenie staje się większe wraz z oddalaniem się od minimum. Długość kroku, która wydaje się bezpieczna w jednym miejscu, może być zbyt agresywna w innym.

Przykład: spadek gradientowy dla funkcji kwadratowej

Rozważ

f(x)=(x3)2.f(x) = (x-3)^2.

Ta funkcja ma minimum w punkcie x=3x=3. Jej pochodna wynosi

f(x)=2(x3).f'(x) = 2(x-3).

Zastosuj spadek gradientowy ze współczynnikiem uczenia η=0.1\eta = 0.1 i punktem startowym x0=0x_0 = 0.

Wtedy reguła aktualizacji ma postać

xk+1=xk0.12(xk3)=xk0.2(xk3).x_{k+1} = x_k - 0.1 \cdot 2(x_k-3) = x_k - 0.2(x_k-3).

Zaczynając od x0=0x_0 = 0:

x1=00.2(03)=0.6.x_1 = 0 - 0.2(0-3) = 0.6.

Następnie

x2=0.60.2(0.63)=1.08.x_2 = 0.6 - 0.2(0.6-3) = 1.08.

oraz

x3=1.080.2(1.083)=1.464.x_3 = 1.08 - 0.2(1.08-3) = 1.464.

Każdy krok przybliża wynik do 33, a wartość funkcji za każdym razem maleje. To najważniejszy wzorzec, który warto zauważyć: spadek gradientowy nie przeskakuje od razu do odpowiedzi. Poprawia przybliżenie przez kolejne lokalne korekty.

Typowe warianty spadku gradientowego

Batch gradient descent

Batch gradient descent wykorzystuje cały zbiór danych do obliczenia każdej aktualizacji. Dla ustalonej funkcji celu daje to deterministyczny krok, ale może być kosztowne przy dużych zbiorach danych.

Stochastic gradient descent

Stochastic gradient descent aktualizuje parametry na podstawie jednej próbki naraz. Każdy krok jest tańszy, ale bardziej zaszumiony. Ten szum może pomagać metodzie iść dalej, ale sprawia też, że trajektoria jest mniej gładka.

Mini-batch gradient descent

Mini-batch gradient descent używa małej grupy próbek w każdym kroku. Często jest to praktyczny kompromis, ponieważ zmniejsza szum w porównaniu z czysto stochastycznymi aktualizacjami, a jednocześnie pozostaje znacznie tańszy niż pełny batch.

Te warianty mają największe znaczenie w uczeniu maszynowym, gdzie funkcja celu jest często średnią stratą z wielu przykładów treningowych.

Typowe błędy przy stosowaniu spadku gradientowego

Traktowanie współczynnika uczenia jako drobnego szczegółu

Zmiana η\eta zmienia zachowanie samego algorytmu. Metoda, która zbiega dla jednego współczynnika uczenia, może zawodzić dla innego.

Zakładanie, że spadek gradientowy zawsze znajduje minimum globalne

Taki wniosek wymaga dodatkowych warunków. Na przykład wypukłość daje znacznie silniejsze gwarancje niż ogólny krajobraz funkcji niewypukłej.

Ignorowanie skali cech w problemach praktycznych

W problemach optymalizacyjnych ze źle przeskalowanymi zmiennymi jeden kierunek może zmieniać się znacznie szybciej niż inny. Wtedy spadek gradientowy może poruszać się zygzakiem i zbiegać wolno, chyba że problem zostanie przekształcony albo staranniej przeskalowany.

Zatrzymywanie się tylko dlatego, że gradient nie jest dokładnie równy zeru

Algorytmy numeryczne rzadko czekają na idealne zero. W praktyce kryteria zatrzymania zwykle sprawdzają, czy norma gradientu, zmiana parametrów albo zmiana wartości funkcji są dostatecznie małe.

Kiedy stosuje się spadek gradientowy

Spadek gradientowy jest używany w optymalizacji numerycznej, statystyce i uczeniu maszynowym. Jest szczególnie powszechny wtedy, gdy dokładne rozwiązanie w postaci zamkniętej nie istnieje albo jego bezpośrednie obliczenie jest zbyt kosztowne.

W małych problemach z prostymi wzorami rachunek różniczkowy może dać minimum dokładnie. Spadek gradientowy staje się bardziej użyteczny wtedy, gdy przestrzeń parametrów jest duża, funkcja celu ma wiele zmiennych albo strata pochodzi z dużych zbiorów danych.

Spróbuj podobnego zadania

Wypróbuj własną wersję dla f(x)=(x5)2f(x) = (x-5)^2 i punktu startowego x0=12x_0 = 12. Przeprowadź jeden przypadek z η=0.1\eta = 0.1, a drugi z η=1.2\eta = 1.2. Zobaczenie jednego stabilnego przebiegu i jednego niestabilnego dużo lepiej pokazuje rolę współczynnika uczenia niż sam wzór.

Potrzebujesz pomocy z zadaniem?

Prześlij pytanie i otrzymaj zweryfikowane rozwiązanie krok po kroku w kilka sekund.

Otwórz GPAI Solver →