Wstęp
Wyobraźmy sobie, że mamy funkcję i chcielibyśmy znaleźć jej minimum. Co byś zrobił ?
Proste, prawda? Musimy tylko rozwiązać następujące równanie:
Rzecz w tym, że znalezienie wzorów na nie zawsze jest łatwe, ponieważ są one niezwykle skomplikowane, szczególnie w głębokim uczeniu się, gdzie mamy do czynienia ze złożonymi funkcjami. Musimy więc znaleźć inną metodę, która zapewni nam minimum funkcji bez konieczności znajdowania wzoru na pochodną .
Zbudujmy trochę intuicji
Załóżmy, że mamy funkcję f z odpowiednim wykresem:
Zacznijmy od losowego punktu . Celem jest przesunięcie tego punktu i przybliżenie go coraz bardziej do tak, aby x*. Zatem problem można podzielić na dwie części:
-
W którą stronę powinniśmy przesunąć punkt ? Lewo czy prawo ?
-
O ile powinniśmy to przesunąć?
Kierunek
Aby odpowiedzieć na pierwsze pytanie, zbudujmy trochę intuicji. Spójrz na następujący punkt:
Pamiętaj, że:
-
gdy punkt znajduje się na prawo od optymalnego punktu , jego styczna podnosi się.
-
gdy punkt znajduje się na prawo od optymalnego punktu , jego linia styczna biegnie w dół.
Kierunek linii wyznacza znak jej nachylenia:
-
Linia idzie w górę , a nachylenie jest dodatnie.
-
Linia opadająca , a nachylenie jest ujemne.
Zauważ, że: \
Nachylenie stycznej funkcji w pewnym punkcie nie jest większe niż pochodna w tym punkcie :
Zatem w odpowiedzi na pytanie „Gdzie powinniśmy przenieść ?”:
-
na prawo od Musimy przesunąć w lewo.
-
na lewo od Musimy przesunąć w prawo.
Kroki
A teraz drugie pytanie: Ile powinniśmy przenieść ?
Przyjrzyj się następującym przykładom:
Możemy stwierdzić, że:
-
jest bliskie => Nachylenie stycznej jest małe => jest małe.
-
jest odległe od => Nachylenie stycznej jest duże => jest duże.
Odpowiadając na oba pytania, doszliśmy do wniosku, że dopiero znajomość pochodnej w punkcie może dać nam wiele informacji na temat kierunku i odległości optymalnego punktu .
Zejście gradientowe
Zejście gradientowe to sformułowanie odpowiedzi na dwa poprzednie pytania. Jest to iteracyjny algorytm optymalizacji, który przybliża minimum funkcji, zaczynając od losowego punktu początkowego . Algorytm jest przedstawiony w następujący sposób:
Gdzie:
-
jest niczym więcej niż pochodną w punkcie .
-
to dodatnia stała, która określa, jak duże będą kroki.
Zauważ, że:
-
znajduje się na prawo od => => => przesuwa się w lewo.
-
znajduje się na lewo od => => => przesuwa się w prawo.
-
blisko => blisko => Mała aktualizacja do .
Quiz
-
Kiedy opadanie gradientu przestaje iterować:
-
Kiedy jest wystarczająco małe.
-
Kiedy jest bliskie .
-
Gdy . XXX
-
Jak wybrać :
-
Wybieramy losowo. XXX
-
Przyjmujemy to w okolicach .
-
To zależy od problemu.
-
Dlaczego potrzebujemy zejścia gradientowego:
-
Ponieważ komputery nie są wystarczająco mocne, aby obliczać instrumenty pochodne.
-
Ponieważ niezwykle trudno jest znaleźć wzory na pochodne modeli głębokiego uczenia się. XXX
-
Ponieważ funkcje mają więcej niż jedno minimum lokalne.