Coborâre în gradient

învățare profundă
matematică
coborâre în gradient
Coborâre în gradient cover image

Introducere

Imaginați-vă că avem o funcție $f(x)$ și am dori să-i găsim minimul. Ce ai face ?

Simplu nu? Trebuie doar să rezolvăm următoarea ecuație:

$$f'(x) = 0$$

Chestia este că găsirea formulei lui $f'$ nu este întotdeauna ușoară, deoarece acestea tind să fie extrem de complicate, mai ales în deep learning, unde ne ocupăm de funcții complexe. Deci trebuie să găsim o altă metodă care să ne ofere minimul unei funcții fără a fi nevoie să găsim formula derivatei $f'$.

Să construim ceva intuiție

Să presupunem că avem o funcție f cu graficul corespunzător:

Graph 1

Să începem cu un punct aleatoriu $x_{0}$. Scopul este de a muta acest punct și de a-l apropia din ce în ce mai mult de $x*$ astfel încât $f'($x*$) = 0$. Deci problema poate fi împărțită în două părți:

  • În ce direcție ar trebui să mutăm punctul $x$ ? Stanga sau dreapta ?

  • Cât de mult ar trebui să-l mutăm?

Directia

Să construim puțină intuiție pentru a răspunde la prima întrebare. Aruncă o privire la următorul punct:

Graph 2

Graph 3

Rețineți că:

  • când punctul $x_{0}$ este la dreapta punctului optim $x*$ linia sa tangentă urcă.

  • când punctul $x_{0}$ este la dreapta punctului optim $x*$ linia sa tangentă coboară.

Direcția unei linii este determinată de semnul pantei sale:

  • O linie urcă $\implică$ că panta $a$ este pozitivă.

  • O linie coboară $\implică$ că panta $a$ este negativă.

Rețineți că: \

Panta dreptei tangente a unei funcții într-un anumit punct $x_{0}$ nu este mai mare decât derivata din acel punct $f'(x_{0})$:

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

Deci, ca răspuns la întrebarea „Unde ar trebui să mutăm $x_{0}$ ?”:

  • $f'(x_{0}) < 0$ $\implies$ $x_{0}$ la dreapta lui $x*$ $\implies$ Trebuie să mutăm $x_{0}$ la stânga.

  • $f'(x_{0}) > 0$ $\implies$ $x_{0}$ la stânga lui $x*$ $\implies$ Trebuie să mutăm $x_{0}$ la dreapta.

Pașii

Acum, pentru a doua întrebare, Cât ar trebui să mutăm $x_{0}$ ?

Aruncă o privire la următoarele exemple:

Graph 4

Graph 5

Putem concluziona că:

  • $x_{0}$ este aproape de $x*$ => Panta tangentei este mică => $f'(x_{0})$ este mică.

  • $x_{0}$ este distant de $x*$ => Panta tangentei este mare => $f'(x_{0})$ este mare.

Răspunzând la ambele întrebări, am ajuns la concluzia că numai cunoașterea derivatei în punctul $x_{0}$ ne poate oferi o mulțime de informații despre direcția și distanța punctului optim $x_{0}$.

Coborâre în gradient

Coborârea în gradient este formularea răspunsurilor la cele două întrebări anterioare. Este un algoritm iterativ de optimizare care aproximează minimul $x*$ al funcției pornind de la un punct inițial aleatoriu $x_{0}$. Algoritmul este prezentat după cum urmează:

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

Unde:

  • $ \frac{\mathrm{d} f}{\mathrm{d} x*{n}} $ nu este mai mult decât derivata lui $f$ în punctul $x*{n}$.

  • $lr$ este o constantă pozitivă care determină cât de mari vor fi pașii.

Observa asta:

  • $x_{n}$ este la dreapta lui $x*$ => $\frac{\mathrm{d} f}{\mathrm{d} x_{n}} > 0 $ => $ x_{n+ 1} = x_{n} - pozitiv $ => $x_{n}$ se deplasează la stânga.

  • $x_{n}$ este la stânga lui $x*$ => $\frac{\mathrm{d} f}{\mathrm{d} x_{n}} < 0$ => $ x*{n +1} = x*{n} + $ pozitiv => $x_{n}$ se deplasează la dreapta.

  • $x_{n}$ aproape de $x*$ => $\frac{\mathrm{d} f}{\mathrm{d} x_{n}}$ aproape de $0$ => Mică actualizare la $x_{ n}$.

Test

  • Când se oprește coborârea în gradient:

  • Când $x_{n}$ este suficient de mic.

  • Când $x_{n}$ este aproape de $x_{0}$ .

  • Când $\frac{\mathrm{d} f}{\mathrm{d} x_{n}} = 0 $. XXX

  • Cum alegem $x_{0}$:

  • O alegem la întâmplare. XXX

  • O luăm în vecinătatea $x{n}$.

  • Depinde de problemă.

  • De ce avem nevoie de coborâre în gradient:

  • Pentru că calculatoarele nu sunt suficient de puternice pentru a calcula derivate.

  • Pentru că este extrem de greu să găsești formulele derivate ale modelelor de învățare profundă. XXX

  • Pentru că funcțiile au mai mult de un minim local.


Career Services background pattern

Servicii de carieră

Contact Section background image

Să rămânem în legătură

Code Labs Academy © 2024 Toate drepturile rezervate.