Zejście gradientowe
Zaktualizowano na September 03, 2024 3 Przeczytaj minuty

Wstęp
Wyobraźmy sobie, że mamy funkcję $f(x)$ i chcielibyśmy znaleźć jej minimum. Co byś zrobił ?
Proste, prawda? Musimy tylko rozwiązać następujące równanie:
$$f’(x) = 0$$
Rzecz w tym, że znalezienie wzorów na $f’$ 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ą $f’$.
Zbudujmy trochę intuicji
Załóżmy, że mamy funkcję f z odpowiednim wykresem:
Zacznijmy od losowego punktu $x_{0}$. Celem jest przesunięcie tego punktu i przybliżenie go coraz bardziej do $x*$ tak, aby $f’($x*$) = 0$. Zatem problem można podzielić na dwie części:
-
W którą stronę powinniśmy przesunąć punkt $x$? 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 $x_{0}$ znajduje się na prawo od optymalnego punktu $x*$, jego styczna podnosi się.
-
gdy punkt $x_{0}$ znajduje się na prawo od optymalnego punktu $x*$, jego linia styczna biegnie w dół.
Kierunek linii wyznacza znak jej nachylenia:
-
Linia idzie w górę $\implikuje$, a nachylenie $a$ jest dodatnie.
-
Linia opadająca $\implikuje$, a nachylenie $a$ jest ujemne.
Zauważ, że: \
Nachylenie stycznej funkcji w pewnym punkcie $x_{0}$ nie jest większe niż pochodna w tym punkcie $f’(x_{0})$:
$$ tangent(x*{0}): g(x) = f’(x*{0}).(x-x*{0}) + f(x*{0}) $$
Zatem w odpowiedzi na pytanie „Gdzie powinniśmy przenieść $x_{0}$ ?”:
-
$f’(x_{0}) < 0$ $\implies$ $x_{0}$ na prawo od $x*$ $\implies$ Musimy przesunąć $x_{0}$ w lewo.
-
$f’(x_{0}) > 0$ $\implies$ $x_{0}$ na lewo od $x*$ $\implies$ Musimy przesunąć $x_{0}$ w prawo.
Kroki
A teraz drugie pytanie: Ile powinniśmy przenieść $x_{0}$ ?
Przyjrzyj się następującym przykładom:
Możemy stwierdzić, że:
-
$x_{0}$ jest bliskie $x*$ => Nachylenie stycznej jest małe => $f’(x_{0})$ jest małe.
-
$x_{0}$ jest odległe od $x*$ => Nachylenie stycznej jest duże => $f’(x_{0})$ jest duże.
Odpowiadając na oba pytania, doszliśmy do wniosku, że dopiero znajomość pochodnej w punkcie $x_{0}$ może dać nam wiele informacji na temat kierunku i odległości optymalnego punktu $x_{0}$.
Zejście gradientowe
Zejście gradientowe to sformułowanie odpowiedzi na dwa poprzednie pytania. Jest to iteracyjny algorytm optymalizacji, który przybliża minimum $x*$ funkcji, zaczynając od losowego punktu początkowego $x_{0}$. Algorytm jest przedstawiony w następujący sposób:
$$ x*{n+1} = x*{n} - lr \times \frac{\mathrm{d} f}{\mathrm{d} x_{n}} $$
Gdzie:
-
$ \frac{\mathrm{d} f}{\mathrm{d} x*{n}} $ jest niczym więcej niż pochodną $f$ w punkcie $x*{n}$.
-
$lr$ to dodatnia stała, która określa, jak duże będą kroki.
Zauważ, że:
-
$x_{n}$ znajduje się na prawo od $x*$ => $\frac{\mathrm{d} f}{\mathrm{d} x_{n}} > 0 $ => $ x_{n+ 1} = x_{n} - dodatni $ => $x_{n}$ przesuwa się w lewo.
-
$x_{n}$ znajduje się na lewo od $x*$ => $\frac{\mathrm{d} f}{\mathrm{d} x_{n}} < 0$ => $ x*{n +1} = x*{n} + dodatni $ => $x_{n}$ przesuwa się w prawo.
-
$x_{n}$ blisko $x*$ => $\frac{\mathrm{d} f}{\mathrm{d} x_{n}}$ blisko $0$ => Mała aktualizacja do $x_{ n}$.
Quiz
-
Kiedy opadanie gradientu przestaje iterować:
-
Kiedy $x_{n}$ jest wystarczająco małe.
-
Kiedy $x_{n}$ jest bliskie $x_{0}$ .
-
Gdy $\frac{\mathrm{d} f}{\mathrm{d} x_{n}} = 0 $. XXX
-
Jak wybrać $x_{0}$:
-
Wybieramy losowo. XXX
-
Przyjmujemy to w okolicach $x{n}$.
-
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.