Spadek gradientu: schodzenie w dolinę po omacku

🎯 Po co Ci to?

Masz już liczbę mówiącą, o ile model się myli. Zostało pytanie, które brzmi niewinnie, a jest jednym z najtrudniejszych w całym uczeniu maszynowym: którą z milionów wag przekręcić i w którą stronę?

Podpowiedź „sprawdźmy wszystkie możliwości" nie działa — zaraz zobaczysz, jak spektakularnie nie działa. Odpowiedź, którą znalazła matematyka, jest zaskakująco prosta i zaskakująco skuteczna: nie próbuj znaleźć najlepszych wag od razu; znajdź kierunek, w którym jest choć trochę lepiej, zrób mały krok i powtórz. Na tym jednym pomyśle stoi cała współczesna sztuczna inteligencja — od modelu rozpoznającego cyfry po systemy uczone tygodniami na tysiącach kart graficznych.

✅ Czego się nauczysz

Po tej lekcji potrafisz:

  • pokazać rachunkiem, dlaczego nie da się „sprawdzić wszystkich kombinacji wag";
  • wyjaśnić metaforę schodzenia ze zbocza we mgle i przypisać jej elementom pojęcia: strata, wagi, gradient;
  • wyjaśnić, czym jest gradient i co znaczy „pochodna straty po wadze";
  • zapisać i wykonać jeden krok aktualizacji wagi;
  • wyjaśnić, czym są minima lokalne i dlaczego w praktyce są mniejszym problemem, niż sugeruje intuicja.

🔁 Przypomnij sobie

Z Jednostki 11.1 masz funkcję straty — jedną liczbę mówiącą „o ile się mylę", czułą na drobne zmiany wag. Z Jednostki 10.1 wiesz, że wszystko, czego model się nauczył, siedzi w wagach i obciążeniach; uczenie to wyłącznie zmienianie tych liczb. Teraz połączymy jedno z drugim.

📘 Dlaczego nie można sprawdzić wszystkich możliwości

Weźmy skromną sieć z Jednostki 10.3: 784 wejścia, warstwa ukryta 32 neuronów, wyjście 10 neuronów. To około 25 000 parametrów — jak na dzisiejsze modele to mikroskopijna zabawka.

Załóżmy skrajnie, absurdalnie optymistycznie, że każda waga może przyjąć tylko dwie wartości. Liczba kombinacji do sprawdzenia to 2 podniesione do potęgi 25 000. Ta liczba ma ponad siedem tysięcy cyfr. Dla porównania: atomów w obserwowalnym Wszechświecie jest około 10 do potęgi 80 — liczba z osiemdziesięcioma jedną cyframi. Gdyby każdy atom Wszechświata był komputerem sprawdzającym miliard kombinacji na sekundę od Wielkiego Wybuchu, nie zbliżylibyśmy się do końca nawet o niemierzalny ułamek.

A prawdziwe wagi to liczby rzeczywiste, więc mają nie dwie wartości, ale nieskończenie wiele. I mowa o zabawce z 25 tysiącami parametrów, gdy GPT‑3 ma ich 175 miliardów.

Wniosek jest ostateczny: przeszukiwanie ślepe jest wykluczone nie ze względu na sprzęt, ale ze względu na matematykę. Trzeba metody, która w każdym punkcie wie, gdzie iść — nie sprawdzając wszystkiego.

📘 Mgła na zboczu

💭 Pomyśl: Wyobraź sobie, że stoisz na wzgórzu we mgle tak gęstej, że widzisz tylko grunt tuż pod stopami — nie widzisz doliny, szczytu ani drogi. Twoim celem jest zejść jak najniżej. Jak, krok po kroku, znalazłbyś drogę w dół, mając wyłącznie informację o tym, w którą stronę teren pod stopami akurat się pochyla?

Sprawdź odpowiedź

Naturalna strategia: w każdym miejscu wyczuwasz, w którą stronę teren opada najbardziej stromo w Twoim bezpośrednim otoczeniu, robisz mały krok właśnie w tę stronę, a potem powtarzasz wszystko od nowa z nowego miejsca. Nie widzisz całej doliny, ale krok po kroku, kierując się wyłącznie lokalnym nachyleniem, systematycznie schodzisz coraz niżej.

To dokładnie metoda, którą matematycy nazywają spadkiem gradientu. Przełożenie na uczenie sieci jest jeden do jednego:

Na zboczu W sieci neuronowej
wysokość terenu w danym miejscu wartość funkcji straty
Twoje aktualne położenie aktualne wartości wag
nachylenie terenu pod stopami gradient
jeden krok w wyczutym kierunku jedna aktualizacja wag
mgła (nie widzisz mapy) nie znamy kształtu funkcji straty
dno doliny zestaw wag dający najmniejszy błąd

Zwróć uwagę na mgłę — to nie ozdoba metafory, a jej sedno. Gdybyśmy widzieli cały „krajobraz straty", wskazalibyśmy najniższy punkt palcem i skończyli robotę. Nie widzimy go i nigdy nie zobaczymy: ten krajobraz ma tyle wymiarów, ile model ma parametrów — dla naszej zabawki 25 tysięcy, dla dużego modelu językowego miliardy. Znamy wyłącznie to, co da się wyczuć tu, pod stopami.

📘 Pochodna po ludzku: „a gdybym tę jedną wagę podniósł o włos?"

Skąd sieć bierze to „nachylenie pod stopami"? Z pytania, które można zadać o każdą wagę osobno:

Gdybym tę jedną wagę zwiększył o naprawdę drobną wartość, o ile zmieniłaby się strata?

Odpowiedź to jedna liczba i ma dwie części, obie potrzebne:

  • znak — czy strata by wzrosła (waga jest za duża, trzeba ją zmniejszyć), czy zmalała (trzeba ją zwiększyć);
  • wielkość — jak mocno ta konkretna waga wpływa na błąd, czyli jak bardzo warto się nią zajmować.

Matematyk nazywa tę liczbę pochodną straty po tej wadze. Zbiór takich liczb dla wszystkich wag naraz to gradient. Gradient nie jest więc jedną liczbą, ale długą listą — po jednej pozycji na każdy parametr modelu. Dla modelu o 175 miliardach parametrów gradient to 175 miliardów liczb, przeliczanych od nowa przy każdym kroku uczenia. Stąd zapotrzebowanie na karty graficzne (Jednostka 13.1).

Sam krok wygląda niepozornie. Dla każdej wagi osobno:

nowa waga = stara waga − (krok uczenia) · (gradient dla tej wagi)

Skąd minus? Gradient wskazuje kierunek, w którym strata rośnie najszybciej. My chcemy w dół, czyli dokładnie w przeciwną stronę — dlatego odejmujemy. To cała treść nazwy „spadek gradientu": idziemy przeciwnie do gradientu.

Konkretnie. Waga ma wartość 0,40. Gradient dla niej wynosi +2,0, czyli: „gdybyś tę wagę zwiększył, strata by wzrosła, i to dość wyraźnie". Krok uczenia ustawiliśmy na 0,1. Nowa waga:

0,40 − 0,1 · 2,0 = 0,40 − 0,20 = 0,20

Waga zmalała, bo taki był sens sygnału. Gdyby gradient wynosił −0,3 („zwiększenie tej wagi obniżyłoby stratę, ale niewiele"), nowa waga byłaby 0,40 − 0,1 · (−0,3) = 0,43 — wzrost, i to mały, proporcjonalny do słabego sygnału. I tak dla każdej z 25 tysięcy wag naraz, w każdej iteracji, tysiące razy.

📐 DEFINICJA — gradient i spadek gradientu: gradient funkcji straty to zestaw liczb — po jednej na każdy parametr modelu — mówiących, jak zmieni się strata przy drobnym zwiększeniu tego parametru; wskazuje kierunek najszybszego wzrostu straty. Spadek gradientu to metoda uczenia polegająca na powtarzanym wykonywaniu małych kroków w kierunku przeciwnym do gradientu, aż strata przestanie maleć.

Po ludzku: gradient to „w którą stronę i jak mocno przekręcić każde pokrętło, żeby mylić się mniej", a spadek gradientu to cierpliwe kręcenie nimi po trochu, krok za krokiem.

Czym to NIE jest: gradient nie wskazuje najniższego punktu na całej mapie i nie mówi, jak daleko jest dno — informuje wyłącznie o nachyleniu w obecnym miejscu. Dlatego uczenie zawsze jest procesem wielu małych kroków, a nie rozwiązaniem równania w jednym ruchu.

📘 Minima lokalne: dawny straszak, dzisiejszy drobiazg

Metafora zbocza natychmiast podsuwa obawę: a jeśli zejdę do małego zagłębienia wysoko na zboczu i tam się zatrzymam, bo w każdą stronę jest w górę? Prawdziwa dolina zostanie sto metrów niżej, a ja stoję w kałuży i myślę, że jestem u celu. Takie miejsce nazywa się minimum lokalnym i przez dziesięciolecia uchodziło za główny zarzut wobec uczenia sieci.

Praktyka pokazała coś nieoczekiwanego: w przestrzeniach o milionach wymiarów minima lokalne prawie nie są problemem. Intuicja jest taka: żeby punkt był minimum lokalnym, teren musi wznosić się we wszystkich kierunkach naraz. W dwóch wymiarach to łatwe — wystarczy dołek. Przy milionie wymiarów potrzeba, żeby milion niezależnych kierunków jednocześnie szedł w górę; to zdarza się skrajnie rzadko. Znacznie częstsze są punkty siodłowe: w części kierunków w górę, w części w dół — jak przełęcz między dwiema górami. Z siodła spadek gradientu wychodzi sam, bo droga w dół istnieje, trzeba ją tylko znaleźć.

Do tego dochodzi obserwacja, która brzmi jak żart, a jest fundamentem praktyki: w dużych sieciach nie potrzebujemy dna. Wystarczy dolina „wystarczająco niska", a takich jest wiele i większość daje modele o podobnej jakości. Nie szukamy rozwiązania optymalnego — szukamy dobrego. Ten sposób myślenia odróżnia uczenie maszynowe od klasycznej optymalizacji i od klasycznego programowania z Działu 3, gdzie odpowiedź jest albo poprawna, albo nie.

⚠️ Uwaga, pułapka

Najczęstsze nieporozumienie: „sieć obliczyła najlepsze wagi". Nie obliczyła. Spadek gradientu nie rozwiązuje żadnego równania i nie wyznacza optimum — on schodzi po omacku, wykonując dziesiątki tysięcy drobnych kroków w kierunku, który lokalnie wygląda na dobry. Wynik zależy od punktu startowego (wagi startowe są losowe!), od kolejności przykładów, od wielkości kroku i od momentu, w którym trening przerwano. Uruchom ten sam trening drugi raz i dostaniesz inne wagi — zwykle o podobnej jakości, ale inne. Model nie jest wyliczoną odpowiedzią; jest znalezionym, jednym z wielu możliwych.

Drugie nieporozumienie: „gradient mówi, jak daleko do celu". Nie mówi. Duży gradient znaczy „tu jest stromo", a nie „daleko jeszcze". Można stać wysoko na płaskim tarasie (gradient mały, do dna bardzo daleko) albo nisko na krawędzi urwiska (gradient wielki, dno tuż obok).

🌍 Powiązania

Zostało największe pytanie: jak policzyć gradient, gdy waga siedzi w środkowej warstwie i wpływa na stratę dopiero przez wszystko, co jest po niej? Odpowiedź to propagacja wsteczna — Jednostka 11.3. Wielkość kroku, liczba przykładów w jednej partii i liczba przejść przez zbiór to Jednostka 11.4. Co się psuje, gdy gradient po drodze wygasa — Jednostka 11.5. To, że gradient trzeba przeliczyć dla miliardów parametrów, jest bezpośrednią przyczyną roli kart graficznych i kosztu treningu (Jednostka 13.1).

📐 Definicje tej lekcji

  • Gradient — zestaw liczb (po jednej na parametr) mówiących, jak zmieni się strata przy drobnym zwiększeniu tego parametru; kierunek najszybszego wzrostu straty.
  • Pochodna straty po wadze — jedna liczba z gradientu: czułość straty na drobną zmianę tej konkretnej wagi.
  • Spadek gradientu — metoda uczenia: powtarzane małe kroki w kierunku przeciwnym do gradientu.
  • Krajobraz straty — wyobrażony „teren" wartości straty rozpięty nad przestrzenią wszystkich możliwych wag.
  • Minimum lokalne — miejsce, w którym w każdym kierunku jest w górę, choć w innej części krajobrazu istnieje niższe.
  • Punkt siodłowy — miejsce, w którym część kierunków prowadzi w górę, a część w dół.

📌 Najważniejsze w pigułce

  • Przeszukiwanie wszystkich kombinacji wag jest matematycznie wykluczone — nie chodzi o brak mocy obliczeniowej.
  • Uczenie to schodzenie ze zbocza we mgle: znamy tylko lokalne nachylenie, nie mapę.
  • Gradient = lista liczb, po jednej na parametr; każda mówi znak (w którą stronę) i wielkość (jak mocno) zmiany.
  • Krok aktualizacji: nowa waga = stara waga − krok uczenia · gradient. Minus, bo gradient wskazuje w górę.
  • Minima lokalne są w wielu wymiarach rzadkie; częstsze są siodła, z których da się wyjść. I tak nie szukamy dna, lecz doliny wystarczająco niskiej.
  • Wagi nie są obliczone, tylko znalezione — ten sam trening uruchomiony dwa razy daje różne modele.

🎒 Zadania

Zadanie 11.2.1. Waga ma wartość −0,60, krok uczenia to 0,05. Policz nową wartość wagi dla gradientu (a) +4,0, (b) −1,0, (c) 0,0. Dla każdego przypadku powiedz jednym zdaniem, co ten gradient „mówił".

Pokaż rozwiązanie

(a) −0,60 − 0,05 · 4,0 = −0,60 − 0,20 = −0,80. Gradient dodatni i duży: „zwiększenie tej wagi wyraźnie podniosłoby stratę" — więc waga idzie mocno w dół.

(b) −0,60 − 0,05 · (−1,0) = −0,60 + 0,05 = −0,55. Gradient ujemny i niewielki: „zwiększenie tej wagi trochę obniżyłoby stratę" — więc waga rośnie, ale ostrożnie.

(c) −0,60 − 0,05 · 0,0 = −0,60. Gradient zerowy: „drobna zmiana tej wagi nie wpływa na stratę" — waga zostaje na miejscu. Warto zauważyć, że zero gradientu nie znaczy „waga jest idealna": może po prostu w tym miejscu krajobraz jest płaski (co bywa objawem zanikającego gradientu z Jednostki 11.5) albo ta waga w ogóle nie ma wpływu na aktualne predykcje.

Zadanie 11.2.2. Kolega mówi: „skoro gradient wskazuje kierunek najszybszego spadku, to wystarczy zrobić jeden bardzo duży krok w tę stronę i od razu wylądujemy w dolinie". Wyjaśnij, dlaczego to nie zadziała, posługując się metaforą zbocza.

Pokaż rozwiązanie

Bo gradient to informacja wyłącznie o miejscu, w którym stoisz — o nachyleniu gruntu pod stopami, w promieniu jednego kroku. Nachylenie zmienia się, gdy się przemieszczasz; zbocze zakręca, wypłaszcza się, po drodze może być garb albo urwisko. Jeden ogromny krok w kierunku wyczutym na starcie jest jak zamknięcie oczu i skok na sto metrów w kierunku, który tuż przy nogach wydawał się właściwy: równie dobrze można wylądować po drugiej stronie doliny, wyżej niż na początku.

W praktyce dokładnie to się dzieje przy zbyt dużym kroku uczenia: model „przeskakuje" dolinę, strata zaczyna skakać albo rosnąć, a trening się rozbiega. Metaforę można ciągnąć dalej: sensowna strategia to krok, przewietrzenie mgły, ponowne wyczucie nachylenia — i tak wielokrotnie. Właśnie po to trening jest iteracyjny, a wybór długości kroku okazuje się jednym z najważniejszych ustawień całego uczenia (Jednostka 11.4).

Zadanie 11.2.3. Zespół trenuje ten sam model na tych samych danych dwa razy, tym samym kodem. Otrzymuje dwa modele o niemal identycznej dokładności (91,2 % i 91,4 %), ale o zupełnie różnych wagach — i myli się na innych przykładach. Wyjaśnij, jak to możliwe, i oceń, czy to błąd, który trzeba naprawić.

Pokaż rozwiązanie

To nie błąd, ale normalna własność spadku gradientu. Trening startuje z losowych wag, więc każdy przebieg zaczyna schodzenie z innego miejsca krajobrazu straty; do tego kolejność przykładów w partiach zwykle też jest losowa. Dwa przebiegi schodzą więc dwiema różnymi ścieżkami i lądują w dwóch różnych dolinach — obu „wystarczająco niskich", bo w dużych sieciach takich dolin jest wiele i dają podobną jakość. Stąd zbliżona dokładność przy całkowicie różnych liczbach w środku.

Nie ma tu czego naprawiać, ale są dwie praktyczne konsekwencje. Po pierwsze, żeby wyniki eksperymentu były odtwarzalne, ustala się „ziarno losowe" i zapisuje je razem z modelem — inaczej nie da się powtórzyć własnego rezultatu. Po drugie, różnica 91,2 % vs 91,4 % nie jest dowodem, że drugi model jest lepszy: to mieści się w rozrzucie samego losowania. Dlatego porównując dwa pomysły, trenuje się każdy kilka razy i patrzy na średnią i rozrzut, a nie na jeden przebieg. Ciekawostka: fakt, że modele mylą się na innych przykładach, wykorzystuje się celowo — kilka niezależnie wytrenowanych modeli głosujących razem (tak zwany zespół) zwykle bije każdy z nich osobno, dokładnie z tego powodu co las losowy z Jednostki 9.5.

🔍 Sprawdź, czy umiesz

  • [ ] Uzasadnić rachunkiem, dlaczego przeszukiwanie wszystkich kombinacji wag jest niewykonalne.
  • [ ] Przypisać elementom metafory zbocza pojęcia: strata, wagi, gradient, krok.
  • [ ] Wyjaśnić, co mówi znak i co wielkość pochodnej straty po wadze.
  • [ ] Wykonać jeden krok aktualizacji wagi i wyjaśnić, skąd w formule minus.
  • [ ] Wyjaśnić, czym różni się minimum lokalne od punktu siodłowego i dlaczego minima lokalne są w praktyce mniejszym problemem.

Ucz się tej jednostki z asystentem