Zejście gradientowe

Zaktualizowano na September 03, 2024 3 Przeczytaj minuty

Zejście gradientowe cover image

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:

Graph 1

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:

Graph 2

Graph 3

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:

Graph 4

Graph 5

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.