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.

Coborârea în gradient mini-lot este cea mai comună implementare a coborârii în gradient folosită în domeniul învățării profunde. Partea inferioară a Mini-lotului este că adaugă un hiper-parametru suplimentar „dimensiunea lotului” sau „b” pentru algoritmul de învățare.

Căutare grilă

În căutarea în grilă [3], încercăm fiecare configurație posibilă a parametrilor.

  • Definiți o grilă pe n dimensiuni, unde fiecare dintre aceste hărți pentru un hiper-parametru. de exemplu. n = (rate_învățare, dimensiune_baterie)
  • Pentru fiecare dimensiune, definiți gama valorilor posibile: de ex. batch_size = [4, 8, 16, 32], learning_rate = [0,1, 0,01, 0,0001]
  • Căutați toate configurațiile posibile și așteptați ca rezultatele să stabilească cea mai bună: de ex. C1 = (0,1, 4) -> acc = 92%, C2 = (0,01, 4) -> acc = 92,3%, etc (

După cum putem vedea cu mai multe dimensiuni, cu atât căutarea va exploda în complexitatea timpului. Este obișnuit să folosiți această abordare atunci când dimensiunile sunt mai mici sau egale cu 4. Deși garantează că veți găsi cea mai bună configurație la final, tot nu este de preferat. În schimb, este mai bine să folosiți Căutarea aleatorie

Căutare aleatorie

Căutarea aleatorie [4] efectuează căutări aleatorii la pasul 1 pentru a alege un punct aleatoriu din spațiul de configurare. Intuiția modului în care funcționează mai bine este că putem explora mai mult spațiul hiper-parametri cu Căutare aleatorie (în special pentru variabilele mai importante). Acest lucru ne va ajuta să găsim cea mai bună configurație în mai puține iterații. De exemplu, consultați imaginea de mai jos:

În aspectul grilei, este ușor de observat că, chiar dacă am instruit 9 modele (n = 3), am folosit doar 3 valori pe variabilă. În timp ce, cu aspectul aleatoriu, este extrem de puțin probabil să selectăm aceleași variabile de mai multe ori. Se ajunge la faptul că, cu cea de-a doua abordare, vom avea 9 modele antrenate folosind 9 valori diferite pentru fiecare variabilă. Pentru o analiză detaliată a Grid vs Random, vă rugăm să consultați această lucrare.

Chiar dacă căutarea aleatorie are o performanță mai bună decât căutarea în rețea, ambele abordări sunt încă costisitoare din punct de vedere al calculației și consumă mult timp. În 2018, Leslie N. Smith a ieșit cu un raport detaliat despre diferite abordări pentru identificarea hiper-parametrilor optimi în clasicul său hârtie . Vom parcurge rapid abordarea sugerată de Smith [5]. Abordarea se bazează pe găsirea echilibrului între subfitting și overfitting prin examinarea pierderii de testare/validare a antrenamentului pentru indicii de subfitting și overfitting pentru a depune eforturi pentru setul optim de hiper-parametri.

Procesul de reglare a hiper-parametrilor este o plimbare pe funie pentru a obține un echilibru între subfitting și overfitting.

Sub-amenajare este atunci când modelul de învățare automată nu este în măsură să reducă eroarea pentru test sau set de antrenament. Un model de sub-montare nu este suficient de puternic pentru a se potrivi complexităților de bază ale distribuțiilor de date.

Suprapunerea se întâmplă atunci când modelul de învățare automată este atât de puternic încât să se potrivească prea bine setului de antrenament și eroarea de generalizare crește. Reprezentarea acestui compromis de subfitting și overfitting afișată în figura de mai sus.

Abordare

  1. Observați și înțelegeți indicii disponibile în timpul antrenamentului, monitorizând validarea/pierderea testului la începutul antrenamentului, reglați-vă arhitectura și hiper-parametrii cu scurte scurte de câteva epoci.
  2. Semne de subfittingsau suprasolicitarea testului sau a pierderii validării la începutul procesului de instruire sunt utile pentru reglarea hiper-parametrilor.

Rata de învățare (LR)

Dacă rata de învățare (LR) este prea mică, poate apărea supraadaptare. Ratele mari de învățare ajută la reglarea instruirii, dar dacă rata de învățare este prea mare, instruirea va fi diferită. Prin urmare, este posibilă o căutare în grilă de curse scurte pentru a găsi rate de învățare care converg sau diverg, dar avem o altă abordare numită „Rata ciclică de învățare (CLR)” de Leslie N. Smith.

Experimentele lui Leslie arată că variația ratei de învățare în timpul antrenamentului este benefică în general și, prin urmare, propune modificarea ciclului de învățare în mod ciclic într-o bandă de valori, în loc să o setați la o valoare fixă. Esența acestei politici privind rata de învățare vine din observația că creșterea ratei de învățare ar putea avea un efect negativ pe termen scurt și totuși să obțină un efect benefic pe termen mai lung. Această observație duce la ideea de a lăsa rata de învățare să varieze într-un interval de valori, mai degrabă decât să adopte o valoare pas cu pas, fixă ​​sau exponențial descrescătoare. Adică, se stabilesc limite minime și maxime, iar rata de învățare variază ciclic între aceste limite.

Cum se poate estima valori limită rezonabile minime și maxime?

Test de gama LR: Rulați modelul pentru mai multe epoci, lăsând în același timp rata de învățare să crească liniar între valorile LR scăzute și ridicate. Acest test este extrem de valoros ori de câte ori vă confruntați cu o nouă arhitectură sau set de date. Pentru o arhitectură cu 3 straturi de mică adâncime, dimensiunea mare este 0,01, în timp ce pentru resnet, dimensiunea mare este 3.0, s-ar putea să încercați mai mult de un maxim.

Folosind politica LR cu un ciclu cu o rată maximă de învățare determinată dintr-un test al intervalului LR, o rată minimă de învățare ca zecime din maxim pare să funcționeze bine [6].

Dimensiunea lotului

Spre deosebire de hiper-parametrul ratei de învățare în care valoarea sa nu afectează timpul de calcul, dimensiunea lotului trebuie examinată împreună cu timpul de execuție al antrenamentului. Dimensiunea lotului este limitată de memoria hardware-ului dvs., în timp ce rata de învățare nu este. Leslie recomandă utilizarea unei dimensiuni de lot care să se potrivească în memoria hardware-ului dvs. și să permită utilizarea unor rate de învățare mai mari.

Dacă serverul dvs. are mai multe GPU-uri, dimensiunea totală a lotului este dimensiunea lotului pe un GPU înmulțită cu numărul de GPU-uri. Dacă arhitectura este mică sau hardware-ul dvs. permite dimensiuni de lot foarte mari, atunci puteți compara performanțele diferitelor dimensiuni de lot. În plus, amintiți-vă că dimensiunile mici ale lotului adaugă regularizare, în timp ce dimensiunile mari ale lotului adaugă mai puțin, așa că utilizați acest lucru echilibrând cantitatea adecvată de regularizare. Este adesea mai bine să utilizați o dimensiune mai mare a lotului, astfel încât să poată fi utilizată o rată de învățare mai mare.

Moment ciclic

Momentul și rata de învățare sunt strâns legate. Rata optimă de învățare este dependentă de impuls și impulsul este dependent de rata de învățare. Deoarece rata de învățare este considerată cel mai important hiper-parametru de reglat, atunci impulsul este, de asemenea, important. La fel ca ratele de învățare, este valoros să stabiliți un impuls cât mai mare posibil, fără a provoca instabilități în timpul antrenamentului.

Procedură pentru găsirea combinației Rată de învățare & Momentum

  • Folosirea ratei de învățare ciclică: Procedura optimă de formare este o combinație între o rată de învățare ciclică în creștere, în care o rată de învățare mică inițială permite convergența să înceapă și un impuls ciclic în scădere, în care impulsul în scădere permite rată de învățare să devină mai mare în primele părți medii ale antrenamentului . Utilizarea unui impuls ciclic în scădere atunci când rata de învățare crește oferă o convergență inițială mai rapidă și stabilizează antrenamentul pentru a permite rate de învățare mai mari.

Impulsul ciclic este util pentru a începe cu un impuls mare și pentru a scădea impulsul, în timp ce rata de învățare este în creștere, deoarece îmbunătățește precizia testului și face antrenamentul mai robust până la rate de învățare mari.

Graficul de mai jos din postarea mea arată de obicei modul în care rata de învățare și impulsul se schimbă în timpul unui ciclu (o epocă) de antrenament.

Cu o rată de învățare ciclică sau cu o rată de învățare constantă, o procedură bună este să testați valorile impulsului în intervalul 0,9 - 0,99 și să alegeți o valoare care să aibă cele mai bune performanțe.

Decadere în greutate

Decaderea în greutate este o formă de regularizare și joacă un rol important în antrenament, astfel încât valoarea sa trebuie să fie stabilită corect [7]. Decadere în greutate este definit ca înmulțirea fiecărei greutăți în coborârea gradientului la fiecare epocă cu un factor λ [0 declinul greutății ciclice nu este util).

Dacă nu aveți nicio idee despre o valoare rezonabilă pentru descompunerea greutății, testați 1/10³, 1/10 1, 1/10⁵ și 0. Seturile de date mai mici și arhitecții par să necesite valori mai mari pentru descompunerea greutății, în timp ce seturile de date mai mari și mai profunde arhitecții par să necesite valori mai mici. Ipoteza noastră este că datele complexe oferă propria regularizare, iar alte regularizări ar trebui reduse.

Degradarea optimă a greutății este diferită dacă căutați cu o rată de învățare constantă față de utilizarea unui interval de rată de învățare. Acest lucru se aliniază cu intuiția noastră, deoarece ratele mai mari de învățare asigură regularizarea, astfel încât o valoare de decădere a greutății mai mică este optimă.