Cuprins
S19/Sesiunea 19/Deep learning/~1 săptămână

Deep learning II

La final știi săScrii singur bucla de antrenare și reglezi optimizator, learning rate și regularizare, ca modelul să învețe stabil.

Toate moduleleS19 · Deep learning II

Un model bun antrenat prost nu învață. Modulul ăsta e despre bucla de antrenare: cum alegi optimizatorul, cum reglezi learning rate-ul (butonul cel mai important), și cum ții overfitting-ul sub control. Aceleași straturi, antrenate cu grijă sau la nimereală, dau rezultate complet diferite.

01

Epoci, loturi, pași

Trei cuvinte de fixat. Un lot (batch) e un grup mic de exemple pe care le procesezi deodată. O epocă e o trecere completă prin tot setul de antrenare. Un pas (step) e o actualizare a greutăților, adică un lot procesat. Antrenezi de obicei multe epoci, fiecare cu mulți pași.

De ce loturi și nu tot setul deodată? Pentru că e mai rapid și adaugă un zgomot util care ajută modelul să nu se blocheze. De ce nu câte un exemplu? Pentru că loturile folosesc mai bine hardware-ul. Un batch size între 32 și 256 e tipic.

02

Optimizatoare

Optimizatorul decide cum folosește gradienții ca să actualizeze greutățile. SGD (coborâre pe gradient stochastică) cu momentum e solid și de încredere: momentum-ul adaugă inerție, ca o bilă care se rostogolește, ca să treacă peste denivelări mici.

Adam și AdamW se adaptează singure: dau pași mai mari unde e nevoie și mai mici unde nu. Pornesc mai ușor și cer mai puțin reglaj, de aceea sunt alegerea implicită pentru mulți. AdamW gestionează mai corect weight decay-ul. Începe cu Adam/AdamW dacă nu ești sigur.

03

Learning rate, butonul cel mai important

Learning rate-ul (η) e mărimea pasului la fiecare actualizare. E cel mai important hiperparametru din tot deep learning-ul. Prea mare: loss-ul sare haotic sau explodează, modelul diverge. Prea mic: învață dureros de lent sau se blochează înainte să ajungă undeva bun.

Nu-l ghici, caută-l. Încearcă valori pe o scară logaritmică (de exemplu 0.1, 0.01, 0.001) și uită-te la curba de loss. Vrei cel mai mare learning rate cu care loss-ul încă scade lin, nu haotic.

Scheduler-ele schimbă learning rate-ul în timpul antrenării. O rețetă care merge des: un warmup scurt la început (crești rata treptat, ca să nu destabilizezi), urmat de o scădere lină (cosine) spre final, ca să te așezi fin în minim.

04

Regularizarea: ține overfitting-ul în frâu

Regularizarea e orice tehnică prin care împiedici modelul să memoreze antrenarea. Fără ea, o rețea mare învață pe de rost exemplele și cade pe date noi. Ai mai multe unelte, folosite des împreună:

  • Dropout: la antrenare, oprește aleator o parte din neuroni la fiecare pas. Forțează rețeaua să nu se bazeze pe un singur drum, deci generalizează mai bine.
  • Weight decay: penalizează greutățile mari, ținându-le mici și modelul simplu.
  • Batch normalization: normalizează activările în fiecare lot, stabilizează și accelerează antrenarea.
  • Early stopping: oprești când scorul pe validare începe să se înrăutățească, chiar dacă cel pe antrenare încă scade.

Inițializarea greutăților contează mai mult decât pare la început. Greutăți pornite prost pot bloca antrenarea de la zero. Din fericire, straturile din PyTorch au inițializări bune implicit, deci rar trebuie să intervii, dar merită să știi că e un factor.

Reține
  • Lot, epocă, pas: un lot procesat = un pas; o trecere prin tot setul = o epocă.
  • Adam/AdamW pornesc ușor și cer puțin reglaj; SGD cu momentum e solid.
  • Learning rate-ul e butonul cel mai important; caută-l pe scară logaritmică.
  • Warmup plus scădere cosine e o rețetă bună de scheduler.
  • Dropout, weight decay, batch norm și early stopping țin overfitting-ul în frâu.
Index
Bucla de antrenare scrisă manual, integral de elevSGD, momentum, RMSProp, Adam, AdamWLearning rateScheduler-e: step, cosine, warmupRegularizare: L1/L2, dropout, batch normalization, early stoppingInițializarea greutăților
Dacă vrei mai mult