Spadek gradientowy to technika matematyczna, która iteracyjnie znajduje wagi i wartości progowe, które dają model o najniższych stratach. Metoda gradientu prostego znajduje najlepsze wagi i wartości progowe, powtarzając poniższy proces przez określoną przez użytkownika liczbę iteracji.
Model rozpoczyna trenowanie z losowymi wagami i odchyleniami bliskimi zera, a następnie powtarza te czynności:
Oblicz wartość funkcji straty przy obecnych wagach i wartościach progowych.
określać kierunek, w którym należy przesunąć wagi i odchylenia, aby zmniejszyć stratę;
Przesuń wartości wag i odchyleń o niewielką wartość w kierunku, który zmniejsza utratę.
Wróć do kroku 1 i powtarzaj proces, aż model nie będzie w stanie dalej zmniejszać straty.
Poniższy diagram przedstawia iteracyjne kroki, które wykonuje algorytm spadku gradientowego, aby znaleźć wagi i wartość progową, które dają model o najmniejszej utracie.
Rysunek 11. Spadek gradientowy to proces iteracyjny, który znajduje wagi i wartości progowe, które tworzą model o najniższej wartości funkcji straty.
Kliknij ikonę plusa, aby dowiedzieć się więcej o matematyce stojącej za metodą gradientu prostego.
Na konkretnym poziomie możemy prześledzić kroki metody spadku gradientowego, korzystając z małego zbioru danych zawierającego 7 przykładów wagi samochodu w funtach i jego zużycia paliwa w milach na galon:
Funty w tysiącach (funkcja) | Mile na galon (etykieta) |
---|---|
3,5 | 18 |
3,69 | 15 |
3,44 | 18 |
3,43 | 16 |
4,34 | 15 |
4,42 | 14 |
2,37 | 24 |
- Model rozpoczyna trenowanie od ustawienia wagi i wartości progowej na zero:
- Oblicz błąd MSE przy użyciu bieżących parametrów modelu:
- Oblicz nachylenie stycznej do funkcji straty przy każdej wadze i wartości progowej:
- Przesuń się o niewielką wartość w kierunku ujemnego nachylenia, aby uzyskać następną wagę i wartość progową. Na razie zdefiniujemy „niewielką kwotę” jako 0, 01:
Kliknij ikonę plusa, aby dowiedzieć się, jak obliczyć nachylenie.
Aby uzyskać nachylenie linii stycznych do wagi i wartości progowej, obliczamy pochodną funkcji straty względem wagi i wartości progowej, a następnie rozwiązujemy równania.
Równanie do prognozowania zapiszemy w ten sposób:
$ f_{w,b}(x) = (w*x)+b $.
Wartość rzeczywistą zapiszemy jako: $ y $.
Błąd średniokwadratowy obliczamy za pomocą tego wzoru:
$ \frac{1}{M} \sum_{i=1}^{M} (f_{w,b}(x_{(i)}) - y_{(i)})^2 $
gdzie $i$ oznacza $i$-ty przykład trenujący, a $M$ oznacza liczbę przykładów.
Pochodną funkcji straty względem wagi zapisujemy jako:
$ \frac{\partial }{\partial w} \frac{1}{M} \sum_{i=1}^{M} (f_{w,b}(x_{(i)}) - y_{(i)})^2 $
i ma wartość:
$ \frac{1}{M} \sum_{i=1}^{M} (f_{w,b}(x_{(i)}) - y_{(i)}) * 2x_{(i)} $
Najpierw sumujemy każdą wartość prognozowaną pomniejszoną o wartość rzeczywistą, a następnie mnożymy ją przez dwukrotność wartości cechy. Następnie dzielimy sumę przez liczbę przykładów. Wynikiem jest nachylenie linii stycznej do wartości wagi.
Jeśli rozwiążemy to równanie z wagą i wartością progową równą zero, otrzymamy wartość -119,7 dla nachylenia linii.
Pochodna uprzedzeń Pochodną funkcji straty względem wyrazu wolnego zapisujemy w ten sposób:
$ \frac{\partial }{\partial b} \frac{1}{M} \sum_{i=1}^{M} (f_{w,b}(x_{(i)}) - y_{(i)})^2 $
i ma wartość:
$ \frac{1}{M} \sum_{i=1}^{M} (f_{w,b}(x_{(i)}) - y_{(i)}) * 2 $
Najpierw sumujemy każdą przewidywaną wartość pomniejszoną o wartość rzeczywistą, a następnie mnożymy ją przez 2. Następnie dzielimy sumę przez liczbę przykładów. Wynikiem jest nachylenie linii stycznej do wartości odchylenia.
Jeśli rozwiążemy to równanie z wagą i wartością progową równą zero, otrzymamy wartość –34,3 dla nachylenia linii.
Użyj nowych wag i odchyleń, aby obliczyć stratę i powtórzyć proces. Po 6 iteracjach otrzymamy te wagi, odchylenia i wartości funkcji straty:
Iteracja | Waga | Uprzedzenia | Strata (MSE) |
---|---|---|---|
1 | 0 | 0 | 303,71 |
2 | 1,20 | 0.34 | 170,84 |
3 | 2,05 | 0.59 | 103,17 |
4 | 2,66 | 0,78 | 68,70 |
5 | 3,09 | 0,91 | 51,13 |
6 | 3,40 | 1,01 | 42,17 |
Widać, że z każdą zaktualizowaną wagą i odchyleniem wartość funkcji straty maleje. W tym przykładzie zakończyliśmy proces po 6 iteracjach. W praktyce model trenuje się do momentu, aż zbiegnie się. Gdy model osiągnie zbieżność, dodatkowe iteracje nie zmniejszają już straty, ponieważ metoda gradientu prostego znalazła wagi i wartości progowe, które niemal minimalizują stratę.
Jeśli model nadal trenuje po osiągnięciu zbieżności, strata zaczyna się wahać w niewielkim stopniu, ponieważ model stale aktualizuje parametry wokół ich najniższych wartości. Może to utrudniać sprawdzenie, czy model rzeczywiście osiągnął zbieżność. Aby potwierdzić, że model osiągnął zbieżność, trenuj go dalej, aż wartość funkcji straty się ustabilizuje.
Zbieżność modelu i krzywe funkcji straty
Podczas trenowania modelu często obserwuje się krzywą straty, aby określić, czy model zbiegł się. Krzywa funkcji straty pokazuje, jak zmienia się funkcja straty w trakcie trenowania modelu. Tak wygląda typowa krzywa strat. Oś y przedstawia utratę, a oś x – iteracje:
Rysunek 12. Krzywa utraty pokazująca,że model zbiega się w okolicach 1000 iteracji.
Widać, że w pierwszych kilku iteracjach strata gwałtownie maleje, a potem stopniowo się zmniejsza, aż około tysięcznej iteracji osiąga stały poziom. Po 1000 iteracji możemy mieć pewność, że model zbiegł się do rozwiązania.
Na poniższych rysunkach przedstawiamy model w 3 momentach procesu trenowania: na początku, w środku i na końcu. Wizualizacja stanu modelu w postaci zrzutów w trakcie procesu trenowania utrwala związek między aktualizacją wag i wartości progowej, zmniejszaniem straty a zbieżnością modelu.
Na rysunkach używamy wag i odchylenia uzyskanych w danej iteracji, aby przedstawić model. Na wykresie z punktami danych i migawką modelu niebieskie linie strat od modelu do punktów danych pokazują wielkość straty. Im dłuższe linie, tym większe straty.
Na poniższym rysunku widać, że około drugiej iteracji model nie będzie dobrze prognozować ze względu na dużą utratę.
Rysunek 13. Krzywa utraty i zrzut modelu na początku procesu trenowania.
Około 400 iteracji później widzimy, że metoda gradientu prostego znalazła wagę i odchylenie, które dają lepszy model.
Rysunek 14. Krzywa straty i zrzut modelu w połowie procesu trenowania.
Około 1000 iteracji później widać, że model osiągnął zbieżność, uzyskując najniższą możliwą wartość straty.
Rysunek 15. Krzywa straty i zrzut stanu modelu pod koniec procesu trenowania.
Ćwiczenie: sprawdź swoją wiedzę
Zbieżność i funkcje wypukłe
Funkcje straty dla modeli liniowych zawsze tworzą powierzchnię wypukłą. Dzięki tej właściwości, gdy model regresji liniowej osiągnie zbieżność, wiemy, że znalazł wagi i wartość progową, które dają najniższą wartość funkcji straty.
Jeśli wykreślimy powierzchnię funkcji straty dla modelu z jedną cechą, zobaczymy jej wypukły kształt. Poniżej przedstawiono powierzchnię funkcji straty dla hipotetycznego zbioru danych dotyczącego liczby mil na galon. Waga jest na osi x, odchylenie na osi y, a strata na osi z:
Rysunek 16. Powierzchnia funkcji straty o wypukłym kształcie.
W tym przykładzie waga –5,44 i wartość progowa 35,94 dają najniższą stratę (5,54):
Rysunek 17. Powierzchnia straty pokazująca wartości wagi i odchylenia, które dają najniższą stratę.
Model liniowy zbiega się, gdy znajdzie minimalną wartość funkcji straty. Dlatego dodatkowe iteracje powodują jedynie, że metoda spadku gradientowego przesuwa wartości wagi i odchylenia o bardzo małe wartości wokół minimum. Gdybyśmy narysowali na wykresie wagi i punkty odchylenia podczas metody gradientu prostego, punkty wyglądałyby jak piłka tocząca się w dół wzgórza, która w końcu zatrzymuje się w miejscu, gdzie nie ma już nachylenia w dół.
Rysunek 18. Wykres funkcji straty pokazujący punkty metody gradientu prostego zatrzymujące się w najniższym punkcie wykresu.
Zwróć uwagę, że czarne punkty utraty tworzą dokładny kształt krzywej utraty: gwałtowny spadek, a potem stopniowe opadanie, aż do osiągnięcia najniższego punktu na powierzchni utraty.
Pamiętaj, że model prawie nigdy nie znajduje dokładnego minimum dla każdej wagi i każdego odchylenia, ale znajduje wartość bardzo zbliżoną do niego. Warto też pamiętać, że minimalne wartości wag i odchylenia nie odpowiadają zerowej wartości funkcji straty, tylko wartości, która daje najniższą wartość funkcji straty dla danego parametru.
Korzystając z wartości wagi i odchylenia, które dają najmniejszą utratę – w tym przypadku wagę –5,44 i odchylenie 35,94 – możemy narysować wykres modelu, aby zobaczyć, jak dobrze pasuje on do danych:
Rysunek 19. Model wykreślony na podstawie wartości wag i odchyleń, które dają najniższą stratę.
To najlepszy model dla tego zbioru danych, ponieważ żadne inne wartości wag i odchyleń nie dają modelu o mniejszej utracie.