Tehnici de reglare a hiper-parametrilor în învățarea profundă de către Javaid Nabi către știința datelor

Javaid Nabi

16 martie 2019 · 12 min de citire

Procesul de setare a hiper-parametrilor necesită expertiză și încercări și erori extinse. Nu există modalități simple și ușoare de a seta hiper-parametri - în mod specific, rata de învățare, dimensiunea lotului, impulsul și descompunerea greutății.

hiper-parametrilor

Modelele de învățare profundă sunt pline de hiper-parametri și găsirea celei mai bune configurații pentru acești parametri într-un spațiu atât de dimensional nu este o provocare banală.

Înainte de a discuta modalitățile de a găsi hiper-parametrii optimi, să înțelegem mai întâi acești hiper-parametri: rata de învățare, dimensiunea lotului, impuls, și descompunerea greutății. Acești hiper-parametri acționează ca butoane care pot fi modificate în timpul antrenamentului modelului. Pentru ca modelul nostru să ofere cel mai bun rezultat, trebuie să găsim valoarea optimă a acestor hiper-parametri.

Coborâre în gradient

Gradient des c ent este o tehnică de optimizare utilizată în mod obișnuit în antrenarea algoritmilor de învățare automată. Scopul principal al antrenării algoritmilor ML este de a ajusta greutățile pentru a minimiza pierderea sau costul. Acest cost este o măsură a performanței modelului nostru, reprezentăm acest cost cu J (w). Astfel, prin minimizarea funcției de cost, putem găsi parametrii optimi care dau cea mai bună performanță a modelului [1].

Un grafic tipic de funcție de pierdere a problemelor de regresie este în formă de bol ca mai jos.

În algoritmul de coborâre a gradientului, începem cu parametrii aleatori ai modelului și calculăm eroarea pentru fiecare iterație de învățare, continuăm să actualizăm parametrii modelului pentru a ne apropia de valorile care rezultă în costuri minime. Vă rugăm să consultați postarea mea pentru detalii. Algoritmii de coborâre a gradientului înmulțesc gradientul (panta) cu un scalar cunoscut sub numele de rata de învățare (sau mărimea pasului) pentru a determina următorul punct. Acest parametru indică cât de departe trebuie să mutați greutățile în direcția gradientului.

Dacă denotăm dw și db ca gradiente pentru a ne actualiza parametrii W și b pentru algoritmul de coborâre a gradientului după cum urmează:

Dacă rata de învățare este mică, atunci antrenamentul este mai fiabil, dar va dura mult timp, deoarece pașii către minimul funcției de pierdere sunt mici.

Dacă rata de învățare este ridicată, este posibil ca antrenamentul să nu convergă sau chiar să nu divergă. Schimbările de greutate pot fi atât de mari încât optimizatorul depășește minimul și înrăutățește pierderea. Astfel, scopul nostru este de a găsi rata de învățare optimă, care poate găsi rapid pierderea minimă.

Pentru modele mai generice, vă puteți gândi la Coborârea Degradat ca la o bilă care se rostogolește pe o vale. vrem să stea în cel mai adânc loc al munților, cu toate acestea, este ușor de văzut că lucrurile pot merge prost.

În funcție de locul în care mingea începe să se rostogolească, se poate odihni în fundul unei văi. Dar nu în cea mai joasă. Acest lucru se numește minim local. Modul în care inițializăm greutățile modelului nostru îl poate duce la odihnă într-un minim local. Pentru a evita acest lucru, inițializăm vectorii de greutate cu valori dintr-o distribuție aleatorie.

Putem reprezenta suprafața de pierdere în 2-D după cum urmează:

Punctul roșu este minimele globale și dorim să ajungem la acest punct. Folosind coborârea în gradient, actualizările vor arăta astfel:

Cu fiecare iterație de coborâre în gradient, ne deplasăm către optima locală cu oscilații în sus și în jos. Dacă folosim o rată de învățare mai mare, atunci oscilația verticală va avea o magnitudine mai mare. Deci, această oscilație verticală ne încetinește coborârea în gradient și ne împiedică să folosim o rată de învățare mult mai mare. În plus, o rată de învățare prea mică face ca coborârea gradientului să fie mai lentă.

Vrem o învățare mai lentă în direcția verticală și o învățare mai rapidă în direcția orizontală, care să ne ajute să atingem minimele globale mult mai repede.

Pentru a ne ajuta să realizăm acest lucru, folosim Descendența descendentă cu impuls [2].

Începem cu coborârea noastră Gradient:

În impuls, în loc să folosim dw și db independent pentru fiecare epocă, luăm mediile exponențial ponderate ale dw și db.

Unde beta „β” este un alt hiper-parametru numit impuls și variază de la 0 la 1. Stabilește greutatea între media valorilor anterioare și valoarea curentă pentru a calcula noua medie ponderată.

După calcularea mediilor ponderate exponențial, ne vom actualiza parametrii.

Utilizând valorile medii exponențial ponderate ale dw și db, avem tendința de a medie oscilațiile în direcția verticală mai aproape de zero. În timp ce, pe direcția orizontală, toate derivatele sunt îndreptate spre dreapta direcției orizontale, astfel încât media pe direcția orizontală va fi în continuare destul de mare. Permite algoritmului nostru să ia o cale mai dreaptă înainte către optima locală și să amortizeze oscilațiile verticale. Din acest motiv, algoritmul va ajunge la optima locală cu câteva iterații.

A avea o intuiție a modului în care funcționează acest lucru este să luăm în considerare exemplul unei mingi care se rostogolește pe deal - Vᵈʷ și Vᵈᵇ oferă viteza acelei mingi și o fac să se miște mai repede. Nu vrem ca mingea noastră să accelereze atât de mult încât să rateze minimele globale și, prin urmare, β acționează ca o frecare.

Există trei moduri de a face coborârea în gradient:

Coborârea în gradient a lotului: ‘

  • toate exemplele simultan: folosește toate instanțele de instruire pentru a actualiza parametrii modelului în fiecare iterație.
  • converge încet cu estimări precise ale erorii de gradient.

Coborârea gradientului stochastic (SGD):

  • un exemplu la un moment dat: actualizează parametrii utilizând doar o singură instanță de antrenament în fiecare iterație. Instanța de antrenament este de obicei selectată aleatoriu.
  • converge rapid cu estimări zgomotoase ale gradientului de eroare.

Coborâre în gradient mini-lot:

  • Exemple „B” la un moment dat: în loc să folosească toate exemplele, Descărcarea în gradient Mini-lot împarte setul de antrenament într-o dimensiune mai mică numită lot denotată cu „b”. Astfel, un mini-lot ‘b’ este utilizat pentru a actualiza parametrii modelului în fiecare iterație.

Coborârea gradientului mini-lot caută să găsească un echilibru între robustețea coborârii gradientului stochastic și eficiența coborârii gradientului lotului.