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ć
a dla wielu zmiennych przyjmuje postać
gdzie 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ć.
- Zacznij od początkowego przybliżenia albo .
- Oblicz pochodną lub gradient w bieżącym punkcie.
- Zaktualizuj punkt, odejmując razy tę pochodną lub gradient.
- 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 to długość kroku.
Jeśli jest zbyt małe, spadek gradientowy zwykle porusza się we właściwym kierunku, ale może działać bardzo wolno. Jeśli 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ż
Ta funkcja ma minimum w punkcie . Jej pochodna wynosi
Zastosuj spadek gradientowy ze współczynnikiem uczenia i punktem startowym .
Wtedy reguła aktualizacji ma postać
Zaczynając od :
Następnie
oraz
Każdy krok przybliża wynik do , 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 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 i punktu startowego . Przeprowadź jeden przypadek z , a drugi z . 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 →