How do I manage 1cycle style training?

Revoluția Antrenamentului: Politica 1cycle și Fastai

23/02/2022

Rating: 4.24 (3208 votes)

Antrenarea rețelelor neuronale profunde (DNN) este o sarcină complexă, iar unul dintre cei mai critici hiperparametri de ajustat este rata de învățare (Learning Rate - LR). O rată de învățare aleasă greșit poate încetini drastic procesul de antrenament sau chiar împiedica modelul să convergă. Din fericire, există o metodă revoluționară care a schimbat jocul: politica 1cycle, popularizată și implementată eficient de biblioteca Fastai prin funcția sa fit_one_cycle(). Această abordare nu doar că accelerează semnificativ antrenamentul, dar adesea duce și la o precizie mai mare, depășind metodele tradiționale.

How do you fit a model using a 1cycle policy?
Cuprins

Problema Ratei de Învățare

Alegerea ratei de învățare este o problemă de optimizare globală dificilă. O rată de învățare prea mică înseamnă că modelul va învăța extrem de lent, necesitând un număr mare de epoci pentru a converge, dacă o face. Acest lucru se traduce prin timp pierdut și resurse consumate inutil. Pe de altă parte, o rată de învățare prea mare poate face ca funcția de pierdere să fluctueze haotic în jurul minimului sau chiar să diverge rapid, împiedicând modelul să atingă performanțe optime.

Găsirea punctului ideal necesită de obicei experimentare și răbdare. Metodele tradiționale, cum ar fi căutarea în grilă (grid search), sunt consumatoare de timp. În practică, rata de învățare nu rămâne statică pe parcursul antrenamentului; este de dorit să se înceapă cu o rată de învățare optimă pentru viteză și să se scadă treptat către final pentru precizie. Două abordări comune au fost programele de rată de învățare (learning rate schedules) și metodele de rată de învățare adaptivă:

  • Programe de rată de învățare: Acestea sunt formule matematice prestabilite (cum ar fi decăderea bazată pe timp, decăderea în trepte, decăderea exponențială) care diminuează rata de învățare într-un mod fix. Deși simple, ele nu se pot adapta la caracteristicile specifice ale setului de date.
  • Metode de rată de învățare adaptivă: Algoritmi precum Adagrad, Adadelta, RMSprop, Adam încearcă să ajusteze rata de învățare dinamic. Deși mai flexibile, ele pot fi costisitoare din punct de vedere computațional.

Iată o scurtă comparație a efectelor diferitelor rate de învățare:

Rata de ÎnvățareEfect asupra AntrenamentuluiRezultat Tipic
Foarte mică (e.g., 0.001)Antrenament lent, progres incrementalConvergență incompletă sau lentă
Optimă (e.g., 0.1)Antrenament rapid și eficientConvergență rapidă și precisă
Prea mare (e.g., 1.0)Fluctuații mari, salturi peste minimDivergență sau performanță slabă

Rate de Învățare Ciclice (CLRs)

Leslie Smith a descoperit o metodă nouă, numită Rate de Învățare Ciclice (Cyclical Learning Rates - CLRs), care elimină necesitatea de a găsi o valoare fixă optimă. În loc să folosească o rată de învățare constantă sau în scădere, metoda CLR permite ratei de învățare să oscileze continuu între limite minime și maxime rezonabile.

Un ciclu CLR constă, în general, din două etape: una în care rata de învățare crește și una în care scade. Fiecare etapă are o dimensiune (stepsize), care reprezintă numărul de iterații în care rata de învățare crește sau scade. Două etape formează un ciclu complet. De exemplu, un ciclu CLR cu un stepsize de 5.000 va consta din 5.000 + 5.000 = 10.000 de iterații totale. O politică CLR poate conține mai multe cicluri.

CLRs nu sunt costisitoare din punct de vedere computațional și, cel mai important, elimină nevoia de a găsi valoarea optimă unică a ratei de învățare – rata de învățare optimă va cădea undeva între limitele minime și maxime. O rată de învățare ciclică produce rezultate generale mai bune, chiar dacă ar putea împiedica temporar performanța rețelei.

How do you fit a model using a 1cycle policy?
Fit the model using 1cycle policy with a cycle length of 10 using a discriminative learning rate. Freeze, unfreeze, and freeze to last layers from training. Save and load model weights. Plot learning rate and momentum schedules. Plot train and validation losses. Plot metrics.

Eficacitatea ratelor de învățare ciclice provine din capacitatea lor de a negocia cu succes punctele șa (saddle points), care au de obicei gradienți mici (suprafețe plate) și pot încetini antrenamentul atunci când rata de învățare este mică. Cea mai bună modalitate de a depăși astfel de obstacole este de a accelera și de a se mișca rapid până când este găsită o suprafață curbată. Rata de învățare crescătoare a CLRs face exact acest lucru, în mod eficient.

Testul de Gamă a Ratei de Învățare (LR Range Test)

Smith a conceput, de asemenea, o metodă simplă pentru estimarea limitelor rezonabile minime și maxime ale ratei de învățare: testul de gamă a LR. Testul implică rularea unui model pentru câteva epoci, unde rata de învățare începe de la o valoare scăzută și crește liniar către o valoare ridicată. O reprezentare grafică a preciziei în funcție de rata de învățare arată când precizia începe să crească și când încetinește, devine neregulată sau scade. Acest test este crucial pentru a determina max_lr-ul optim.

Super-convergența și Politica 1cycle

Pe baza cercetărilor sale privind CLRs, Smith a continuat cu lucrarea sa despre super-convergență, un fenomen în care rețelele neuronale pot fi antrenate cu un ordin de mărime mai rapid decât cu metodele standard de antrenament. Super-convergența utilizează metoda CLR, dar cu un singur ciclu – care conține două etape de rată de învățare, una crescătoare și una descrescătoare – și o limită maximă mare a ratei de învățare.

Dimensiunea ciclului trebuie să fie mai mică decât numărul total de iterații/epoci. După finalizarea ciclului, rata de învățare ar trebui să scadă și mai mult pentru iterațiile/epocile rămase, cu câteva ordine de mărime mai puțin decât valoarea sa inițială. Smith a numit această strategie politica 1cycle.

Concret, în super-convergență, rata de învățare începe de la o valoare scăzută, crește la o valoare foarte mare și apoi scade la o valoare mult mai mică decât cea inițială. Efectul acestei mișcări a ratei de învățare este o curbă de precizie de antrenament foarte distinctivă. Curbele tradiționale de precizie de antrenament cresc, apoi se stabilizează pe măsură ce valoarea ratei de învățare se schimbă. Curbele de precizie de antrenament prin super-convergență au un salt inițial dramatic (mișcându-se rapid pe măsură ce rata de învățare crește), oscilează sau chiar scad puțin (în timp ce rata de învățare este foarte mare) și apoi sar din nou la un vârf de precizie distinctiv (pe măsură ce rata de învățare scade la o valoare foarte mică).

What is fit_one_cycle()?
In short, fit_one_cycle() is Fastai’s implementation of Leslie Smith’s 1cycle policy. Smith developed, refined and publicised his methodology over three research papers: In this article we’ll explore the underlying concepts behind the 1cycle policy and try to understand why this method works better.

Smith a descoperit că o rată de învățare mare acționează ca o metodă de regularizare. Prin urmare, atunci când se utilizează politica 1cycle, alte metode de regularizare (dimensiunea batch-ului, momentum, decăderea greutăților etc.) trebuie reduse.

Cum Implementează Fastai Politica 1cycle

Biblioteca Fastai abstractizează toate detaliile de implementare ale politicii 1cycle și oferă o interfață intuitivă sub forma funcției fit_one_cycle(). Aceasta apelează intern funcția fit(), adăugând un callback OneCycleScheduler. Parametrii cheie ai fit_one_cycle() includ:

  • cyc_len: Lungimea ciclului în epoci.
  • max_lr: Rata de învățare maximă, adesea furnizată ca un slice (e.g., slice(min_lr, max_lr)) pentru rate de învățare discriminative.
  • moms: O tuplă cu valorile minime și maxime pentru momentum (e.g., (0.95, 0.85)).
  • div_factor: Factorul prin care rata de învățare inițială este divizată pentru a obține rata de învățare minimă la începutul ciclului (max_lr / div_factor).
  • pct_start: Procentul din ciclu în care rata de învățare crește. Restul procentului (1 - pct_start) este dedicat scăderii ratei de învățare.

Utilizarea sa este remarcabil de simplă în ecosistemul Fastai, permițând dezvoltatorilor să beneficieze de avantajele super-convergenței fără a se adânci în complexitatea implementării subiacente.

Structura unui Ciclu 1cycle (Rata de Învățare și Momentum)

Politica 1cycle, în forma sa optimizată, are două faze principale, influențând atât rata de învățare, cât și momentum-ul:

  1. Faza de Creștere (pct_start din ciclu):
    • Rata de Învățare (LR): Crește progresiv de la o valoare mică (max_lr / div_factor) la valoarea sa maximă (max_lr). Această creștere rapidă ajută la explorarea spațiului de greutăți și la evitarea minimelor locale superficiale.
    • Momentum: Scade progresiv de la o valoare maximă (mom_max) la o valoare minimă (mom_min). Un momentum mai mic în timpul creșterii LR ajută la o explorare mai agresivă a spațiului de căutare.
  2. Faza de Scădere (1 - pct_start din ciclu):
    • Rata de Învățare (LR): Scade progresiv de la max_lr la o valoare foarte mică, adesea aproape de zero, urmând o formă de decădere, cum ar fi annealing-ul cosinus. Această scădere lentă permite modelului să se stabilizeze și să se apropie de un minim global cu precizie.
    • Momentum: Crește progresiv de la mom_min înapoi la mom_max, urmând o curbă simetrică cu cea a ratei de învățare. Un momentum mai mare în timpul scăderii LR ajută la o convergență mai lină și la evitarea oscilațiilor.

Această corelare dinamică dintre rata de învățare și momentum este cheia succesului politicii 1cycle, permițând modelului să navigheze eficient pe suprafața de pierdere, să evite punctele șa și să găsească soluții optime rapid.

Întrebări Frecvente

Ce este fit_one_cycle()?

fit_one_cycle() este implementarea Fastai a politicii 1cycle a lui Leslie Smith. Este o metodă de antrenament care utilizează o rată de învățare ciclică și o ajustare inversă a momentum-ului pentru a antrena modelele de Deep Learning semnificativ mai rapid și cu o precizie mai mare decât metodele tradiționale.

De ce este fit_one_cycle() mai bun decât fit()?

fit_one_cycle() este considerat superior funcției generice fit() (fără politică 1cycle) datorită beneficiilor de viteză și precizie oferite de politica 1cycle. Aceasta permite explorarea eficientă a spațiului de pierdere prin creșterea ratei de învățare (care ajută la depășirea punctelor șa) și apoi o convergență precisă prin scăderea ei, evitând în același timp minimele locale și acționând ca o formă de regularizare.

Why do I need 'fit_one_cycle'?
(Starting layers usually don't require large variations in parameters) Additionally, if you use 'fit_one_cycle', all the groups will have learning rate annealing with their respective variable learning.

Cum aleg rata de învățare maximă pentru 1cycle?

Cea mai bună metodă de a alege max_lr este utilizarea funcției lr_find() a Fastai (sau a unei implementări similare). Aceasta rulează o pre-antrenare rapidă, crescând liniar rata de învățare și înregistrând pierderea. Se generează apoi un grafic al pierderii în funcție de rata de învățare. Punctul optim pentru max_lr este de obicei cel de dinainte ca pierderea să înceapă să crească sau să devină instabilă, indicând momentul în care rata de învățare devine prea mare.

Ce este super-convergența?

Super-convergența este un fenomen descoperit de Leslie Smith, în care rețelele neuronale pot fi antrenate cu un ordin de mărime mai rapid decât metodele standard de antrenament, obținând în același timp o precizie similară sau chiar superioară. Acest lucru este realizat prin utilizarea politicii 1cycle, care implică un ciclu scurt și intens de variație a ratei de învățare și a momentum-ului.

1cycle policy înlocuiește alte metode de regularizare?

Politica 1cycle acționează ca o formă implicită de regularizare, în special prin utilizarea unei rate de învățare maxime mari, care ajută la explorarea mai eficientă a spațiului de greutăți și la evitarea supra-adaptării. Din acest motiv, Leslie Smith sugerează că, atunci când se utilizează politica 1cycle, alte metode de regularizare (cum ar fi decăderea greutăților sau dropout-ul) ar trebui reduse sau ajustate, deoarece o regularizare excesivă poate împiedica beneficiile super-convergenței.

Concluzie

Politica 1cycle și implementarea sa prin fit_one_cycle() în Fastai reprezintă un pas uriaș înainte în domeniul antrenamentului modelelor de Deep Learning. Prin înțelegerea și aplicarea principiilor ratei de învățare ciclice, a testului de gamă a LR și a fenomenului de super-convergență, dezvoltatorii pot reduce drastic timpul de antrenament și pot obține modele mai precise. Această abordare inteligentă a optimizării hiperparametrilor nu doar că simplifică procesul, dar deschide și noi posibilități pentru cercetarea și aplicațiile practice ale inteligenței artificiale. Este o tehnică esențială în arsenalul oricărui specialist în Deep Learning modern.

Dacă vrei să descoperi și alte articole similare cu Revoluția Antrenamentului: Politica 1cycle și Fastai, poți vizita categoria Fitness.

Go up