de Keshav Dhandhania

Cum să înțelegeți Gradient Descent, cel mai popular algoritm ML

Descendența gradientului este unul dintre cei mai populari și utilizați pe scară largă algoritmi pentru instruirea modelelor de învățare automată.

Învățare automată modelele au de obicei parametri (greutăți și părtiniri) și o funcție de cost pentru a evalua cât de bune sunt un anumit set de parametri. Multe probleme de învățare automată se reduc la găsirea unui set de greutăți pentru model care minimizează funcția de cost.

De exemplu, dacă predicția este p, ținta este t, iar metrica noastră de eroare este o eroare pătrată, apoi funcția de cost J (W) = (p – t) ².

Rețineți că valoarea prezisă p depinde de intrare X precum și modelul de învățare automată și valorile (actuale) ale parametrilor W. În timpul antrenamentului, scopul nostru este de a găsi un set de valori pentru W astfel încât (p – t) ² este mic. Aceasta înseamnă prezicerea noastră p va fi aproape de țintă t.

Cum sa intelegeti Gradient Descent cel mai popular algoritm ML
Ilustrație descendentă pentru regresie liniară

Coborârea în gradient este o metodă iterativă. Începem cu un set de valori pentru parametrii modelului nostru (greutăți și părtiniri) și le îmbunătățim încet.

Pentru a îmbunătăți un set dat de greutăți, încercăm să obținem o idee a valorii funcției de cost pentru greutăți similare cu greutățile actuale (prin calcularea gradientului). Apoi ne deplasăm în direcția care reduce funcția de cost.

Repetând acest pas de mii de ori, ne vom minimaliza continuu funcția de cost.

Pseudocod pentru coborâre în gradient

Coborârea în gradient este utilizată pentru a minimiza o funcție de cost J (W) parametrizat de parametrii unui model W.

Gradientul (sau derivatul) ne spune înclinația sau panta funcției de cost. Prin urmare, pentru a minimiza funcția de cost, ne deplasăm în direcția opusă gradientului.

  1. Inițializați greutățile W la întâmplare.
  2. Calculați gradienții G parametrilor de funcție de cost wrt. Acest lucru se face folosind diferențierea parțială: G = ∂J (W) / ∂W. Valoarea gradientului G depinde de intrări, de valorile curente ale parametrilor modelului și de funcția de cost. S-ar putea să fie nevoie să revizuiți subiectul diferențierii dacă calculați gradientul manual.
  3. Actualizați greutățile cu o cantitate proporțională cu G, adică W = W – ηG
  4. Repetați până la cost J(w) se oprește din reducere sau alte definiții criteriile de reziliere este îndeplinit.

La pasul 3, η este rata de învățare care determină mărimea pașilor pe care îi parcurgem pentru a atinge un minim. Trebuie să fim foarte atenți la acest parametru. Valori ridicate ale η poate depăși minimul, iar valorile foarte mici vor atinge minimul foarte încet.

O alegere populară pentru criteriile de reziliere este costul J(w) oprește reducerea unui set de date de validare.

Intuitia pentru coborârea gradientului

Imaginează-ți că ești legat la ochi pe teren accidentat, iar obiectivul dvs. este să atingeți cea mai mică altitudine.

Una dintre cele mai simple strategii pe care o puteți folosi este să simțiți solul în toate direcțiile și să faceți un pas în direcția în care solul coboară cel mai repede.

Dacă tot repeti acest proces, s-ar putea să ajungi la lac, sau chiar mai bine, undeva în valea uriașă.

1612161187 13 Cum sa intelegeti Gradient Descent cel mai popular algoritm ML
Sursă: Cursul Stanford al lui Andrej Karpathy 3

Terenul accidentat este analog cu funcția de cost, iar minimizarea funcției de cost este similară cu încercarea de a atinge altitudini mai mici.

Sunteți orbi, deoarece nu avem luxul de a evalua (sau „a vedea”) valoarea funcției pentru fiecare set posibil de parametri.

Simțirea pantei terenului din jurul tău este analoagă cu calcularea gradientului și efectuarea unui pas este analog cu o iterație de actualizare a parametrilor.

Apropo – ca o mică parte – acest tutorial face parte din curs gratuit de știință a datelor și curs gratuit de învățare automată pe Commonlounge. Cursurile includ multe misiuni practice și proiecte. Dacă sunteți interesat să învățați știința datelor / ML, vă recomandăm cu siguranță să o verificați

Variante de descendență în gradient

Există mai multe variante de coborâre în gradient, în funcție de cât de multe date sunt utilizate pentru a calcula gradientul.

Motivul principal al acestor variații este eficiența de calcul. Un set de date poate avea milioane de puncte de date, iar calcularea gradientului pe întregul set de date poate fi costisitor din punct de vedere al calculului.

  • Coborârea în gradient a lotului calculează gradientul funcției de cost wrt to parameter W pentru date complete despre antrenament. Deoarece trebuie să calculăm gradienții pentru întregul set de date pentru a efectua o actualizare a parametrilor, coborârea gradientului în lot poate fi foarte lentă.
  • Coborârea în gradient stochastic (SGD) calculează gradientul pentru fiecare actualizare folosind un punct unic de date de antrenament x_i (ales la întâmplare). Ideea este că gradientul calculat în acest fel este o aproximare stocastică la gradientul calculat utilizând datele complete ale antrenamentului. Fiecare actualizare este acum mult mai rapidă de calculat decât în ​​coborâre în gradient de lot și, peste multe actualizări, ne vom îndrepta în aceeași direcție generală.
  • În coborâre în gradient mini-lot, calculăm gradientul pentru fiecare mic-lot mic de date de antrenament. Adică, mai întâi împărțim datele de formare în loturi mici (să spunem M probe pe lot). Efectuăm o actualizare pe mini-lot. M este de obicei în intervalul 30–500, în funcție de problemă. De obicei, mini-batch GD este utilizat deoarece infrastructura de calcul – compilatoare, procesoare, GPU – este adesea optimizată pentru efectuarea de adaosuri vectoriale și multiplicări vectoriale.

Dintre acestea, SGD și mini-lot GD sunt cele mai populare.

Într-un scenariu tipic, facem mai multe treceri peste datele de instruire înainte ca criteriile de terminare să fie îndeplinite. Fiecare trecere se numește an epocă. De asemenea, rețineți că, întrucât pasul de actualizare este mult mai eficient din punct de vedere al calculului în SGD și GD mini-lot, efectuăm de obicei între 100 și 1000 de actualizări între verificările pentru îndeplinirea criteriilor de terminare.

Alegerea ratei de învățare

De obicei, valoarea ratei de învățare este aleasă manual. De obicei, începem cu o valoare mică, cum ar fi 0,1, 0,01 sau 0,001 și o adaptăm în funcție de faptul dacă funcția de cost se reduce foarte lent (crește rata de învățare) sau explodează / este neregulată (scade rata de învățare).

Deși alegerea manuală a unei rate de învățare este încă cea mai obișnuită practică, au fost propuse mai multe metode, cum ar fi optimizatorul Adam, AdaGrad și RMSProp, pentru a alege automat o rată de învățare adecvată.

Co-autor de Keshav Dhandhania și Savan Visalpara.

Publicat inițial ca parte a curs gratuit de învățare automată și curs gratuit de știință a datelor pe www.commonlounge.com.