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)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)=0f'(x) = 0

Chestia este că găsirea formulei lui ff' 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 ff'.

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 x0x_{0}. Scopul este de a muta acest punct și de a-l apropia din ce în ce mai mult de xx* astfel încât f(f'(x*)=0) = 0. Deci problema poate fi împărțită în două părți:

  • În ce direcție trebuie să mutăm punctul xx ? Stânga sau Dreapta?

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

Direcția

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 x0x_{0} este la dreapta punctului optim xx* linia sa tangentă urcă.

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

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

  • O linie urcă \implica˘\implică că panta aa este pozitivă.

  • O linie coboară \implica˘\implică că panta aa este negativă.

Rețineți că: \

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

tangent(x0):g(x)=f(x0).(xx0)+f(x0)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 x0x_{0} ?”:

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

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

Pașii

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

Aruncă o privire la următoarele exemple:

Graph 4

Graph 5

Putem concluziona că:

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

  • x0x_{0} este distant de xx* => Panta tangentei este mare => f(x0)f'(x_{0}) este mare.

Răspunzând la ambele întrebări, am ajuns la concluzia că numai cunoașterea derivatei în punctul x0x_{0} ne poate oferi o mulțime de informații despre direcția și distanța punctului optim x0x_{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 xx* al funcției pornind de la un punct inițial aleator x0x_{0}. Algoritmul este prezentat după cum urmează:

xn+1=xnlr×dfdx_nx*{n+1} = x*{n} - lr \times \frac{\mathrm{d} f}{\mathrm{d} x\_{n}}

unde:

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

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

Observați că:

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

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

  • xnx_{n} aproape de xx* => dfdxn\frac{\mathrm{d} f}{\mathrm{d} x_{n}} aproape de 00 => Mică actualizare la xnx_{ n}.

Test

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

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

  • Când xnx_{n} este aproape de x0x_{0} .

  • Când dfdx_n=0\frac{\mathrm{d} f}{\mathrm{d} x\_{n}} = 0 . XXX

  • Cum alegem x0x_{0}:

  • O alegem la întâmplare. XXX

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

  • Depinde de problemă.

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

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

  • Pentru că este extrem de greu să găsești formulele derivate ale modelelor de deep learning. XXX

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


Master Data Science and AI cu Code Labs Academy! Alăturați-vă campului nostru de pregătire online – Opțiuni flexibile disponibile cu normă parțială și cu normă întreagă.


Career Services background pattern

Servicii de carieră

Contact Section background image

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

Code Labs Academy © 2025 Toate drepturile rezervate.