Spadek wzdłuż gradientu (ang. gradient descent) to algorytm optymalizacji, który iteracyjnie dobiera parametry modelu tak, żeby zminimalizować funkcję straty (loss). W każdym kroku liczy gradient straty względem parametrów — czyli wektor pokazujący kierunek najszybszego wzrostu błędu — i robi krok w kierunku przeciwnym, bo chcesz błąd zmniejszać. Stąd nazwa: schodzisz w dół po powierzchni straty, jakbyś z zawiązanymi oczami szukał najniższego punktu doliny, macając, w którą stronę teren opada.
Jak to działa
Wzór jest banalnie prosty: theta = theta - lr * grad. theta to parametry (wagi), grad to gradient straty, a lr (learning rate) to rozmiar kroku. Powtarzasz to dopóki strata nie przestanie spadać. Cały trening sieci neuronowej to w praktyce miliony takich kroczków, a gradient liczy backpropagation.
W czystej postaci (batch gradient descent) liczysz gradient na całym zbiorze danych naraz — dokładnie, ale wolno i pamięciożernie. Dlatego w deep learningu króluje SGD (stochastic gradient descent) i mini-batch: gradient szacujesz na małej paczce próbek (np. 32 czy 64), co jest szybsze i — paradoksalnie — szum pomaga uciec z płytkich minimów lokalnych.
Przykład z praktyki
W PyTorchu nie piszesz tego ręcznie. Definiujesz optymalizator i w pętli treningowej wołasz trzy linijki:
optimizer = torch.optim.SGD(model.parameters(), lr=0.01)loss.backward()— liczy gradientyoptimizer.step()— robi krok wzdłuż gradientu, a potemoptimizer.zero_grad(), żeby gradienty się nie kumulowały
W realnych projektach częściej zobaczysz Adam niż goły SGD — to wariant, który sam dostraja krok dla każdego parametru i zwykle szybciej zbiega.
Częste błędy
Najczęstsza wpadka to learning rate. Za duży — strata skacze albo leci do NaN (przeskakujesz dolinę, zamiast w nią schodzić). Za mały — trening pełznie godzinami. Druga klasyka: zapomniany zero_grad(), przez co gradienty się sumują i model uczy się dziwactw. Pamiętaj też, że gradient descent znajduje minimum lokalne, niekoniecznie globalne — w praktyce dla dużych sieci to zwykle wystarcza.
Pojęcia powiązane: backpropagation, learning rate, funkcja straty (loss function), SGD, mini-batch, Adam, learning rate scheduler, minimum lokalne, optymalizacja.