Gradientní sestup

hluboké učení
matematika
gradientní sestup
Gradientní sestup cover image

Úvod

Představte si, že máme funkci $f(x)$ a rádi bychom našli její minimum. Co bys dělal ?

Jednoduché že? Potřebujeme vyřešit pouze následující rovnici:

$$f'(x) = 0$$

Jde o to, že najít vzorec $f'$ není vždy snadné, protože bývají extrémně komplikované, zejména v hlubokém učení, kde se zabýváme komplexními funkcemi. Musíme tedy najít jinou metodu, která nám poskytne minimum funkce, aniž bychom museli hledat vzorec derivace $f'$.

Vybudujme trochu intuice

Předpokládejme, že máme funkci f s odpovídajícím grafem:

Graph 1

Začněme náhodným bodem $x_{0}$. Cílem je posunout tento bod a přiblížit ho k $x*$ tak, aby $f'($x*$) = 0$. Problém lze tedy rozdělit na dvě části:

  • Jakým směrem bychom měli posunout bod $x$? Vlevo nebo vpravo ?

  • Jak moc bychom to měli posunout?

Směr

Vybudujme trochu intuice, abychom odpověděli na první otázku. Podívejte se na následující bod:

Graph 2

Graph 3

Všimněte si, že:

  • když je bod $x_{0}$ napravo od optimálního bodu $x*$, jeho tečna jde nahoru.

  • když je bod $x_{0}$ napravo od optimálního bodu $x*$, jeho tečna klesá.

Směr čáry je určen znaménkem jejího sklonu:

  • Čára stoupá $\implikuje$ sklon $a$ je kladný.

  • Čára klesá $\implikuje$ sklon $a$ je záporný.

Všimněte si, že: \

Směrnice tečné čáry funkce v určitém bodě $x_{0}$ není větší než derivace v tomto bodě $f'(x_{0})$:

$$ tangent(x*{0}): g(x) = f'(x*{0}).(x-x*{0}) + f(x*{0}) $$

Takže jako odpověď na otázku "Kam bychom se měli přesunout $x_{0}$?":

  • $f'(x_{0}) < 0$ $\implies$ $x_{0}$ vpravo od $x*$ $\implies$ Musíme posunout $x_{0}$ doleva.

  • $f'(x_{0}) > 0$ $\implies$ $x_{0}$ vlevo od $x*$ $\implies$ Musíme posunout $x_{0}$ doprava.

Kroky

Nyní k druhé otázce: Kolik bychom měli přesunout $x_{0}$?

Podívejte se na následující příklady:

Graph 4

Graph 5

Můžeme dojít k závěru, že:

  • $x_{0}$ se blíží $x*$ => Sklon tečny je malý => $f'(x_{0})$ je malý.

  • $x_{0}$ je vzdáleno od $x*$ => Sklon tečny je velký => $f'(x_{0})$ je velký.

Odpovědí na obě otázky jsme dospěli k závěru, že pouze znalost derivace v bodě $x_{0}$ nám může poskytnout mnoho informací o směru a vzdálenosti optimálního bodu $x_{0}$.

Gradientní klesání

Gradient sestup je formulací odpovědí na předchozí dvě otázky. Je to optimalizační iterační algoritmus, který aproximuje minimum $x*$ funkce počínaje náhodným počátečním bodem $x_{0}$. Algoritmus je uveden následovně:

$$ x*{n+1} = x*{n} - lr \times \frac{\mathrm{d} f}{\mathrm{d} x_{n}} $$

kde:

  • $ \frac{\mathrm{d} f}{\mathrm{d} x*{n}} $ není více než derivace $f$ v bodě $x*{n}$.

  • $lr$ je kladná konstanta, která určuje, jak velké kroky budou.

Všimněte si, že:

  • $x_{n}$ je napravo od $x*$ => $\frac{\mathrm{d} f}{\mathrm{d} x_{n}} > 0 $ => $ x_{n+ 1} = x_{n} - kladné $ => $x_{n}$ se posune doleva.

  • $x_{n}$ je vlevo od $x*$ => $\frac{\mathrm{d} f}{\mathrm{d} x_{n}} < 0$ => $ x*{n +1} = x*{n} + kladné $ => $x_{n}$ se posune doprava.

  • $x_{n}$ blízko $x*$ => $\frac{\mathrm{d} f}{\mathrm{d} x_{n}}$ blízko $0$ => Malá aktualizace na $x_{ n}$.

Kvíz

  • Kdy se klesání gradientu přestane opakovat:

  • Když je $x_{n}$ dostatečně malý.

  • Když se $x_{n}$ blíží $x_{0}$ .

  • Když $\frac{\mathrm{d} f}{\mathrm{d} x_{n}} = 0 $. XXX

– Jak vybereme $x_{0}$:

  • Vybíráme to náhodně. XXX

  • Bereme to v okolí $x{n}$.

  • Záleží na problému.

  • Proč potřebujeme gradientní sestup:

  • Protože počítače nejsou dostatečně výkonné na výpočet derivací.

  • Protože je extrémně těžké najít odvozené vzorce modelů hlubokého učení. XXX

  • Protože funkce mají více než jedno lokální minimum.


Career Services background pattern

Kariérní služby

Contact Section background image

Zůstaňme v kontaktu

Code Labs Academy © 2024 Všechna práva vyhrazena.