Tipuri de optimizatori în învățarea profundă pe care fiecare inginer AI ar trebui să le cunoască

Publicat: 2020-12-01

Cuprins

Introducere

Învățarea profundă este un mare progres față de învățarea automată în ceea ce privește flexibilitatea, precizia mai mare și o gamă largă de posibilități în aplicațiile industriale. Fie că este vorba despre o aplicație de chat, corectare automată a gramaticii, traducere între diferite limbi, detectarea știrilor false sau scriere automată a povestirilor bazată pe unele formulări inițiale, învățarea profundă își găsește utilizarea în aproape fiecare sector.

Cu atâta utilizare, devine important ca acești algoritmi să funcționeze cu resurse minime, astfel încât să putem reduce costurile recurente și să oferim rezultate eficiente în mai puțin timp. Un optimizator este o metodă sau un algoritm de actualizare a diferiților parametri care pot reduce pierderea cu mult mai puțin efort. Să ne uităm la câțiva optimizatori populari de învățare profundă care oferă rezultate acceptabile.

Învață cursuri AI ML de la cele mai bune universități din lume. Câștigă programe de master, Executive PGP sau Advanced Certificate pentru a-ți accelera cariera.

Coborâre în gradient (GD)

Acesta este cel mai elementar optimizator care utilizează direct derivatul funcției de pierdere și rata de învățare pentru a reduce pierderea și a atinge minimele. Această abordare este, de asemenea, adoptată în retropropagarea în rețelele neuronale, unde parametrii actualizați sunt împărțiți între diferite straturi, în funcție de momentul în care este atinsă pierderea minimă. Este ușor de implementat și interpretat rezultatele, dar are diverse probleme.

Greutățile sunt actualizate atunci când se calculează întregul gradient al setului de date, ceea ce încetinește procesul. De asemenea, necesită o cantitate mare de memorie pentru a stoca aceste date temporare, făcându-l un proces care necesită resurse. Deși ideea din spatele acestui algoritm este potrivită, trebuie să fie ajustată.

Coborâre cu gradient stocastic

Aceasta este o versiune modificată a metodei GD, în care parametrii modelului sunt actualizați la fiecare iterație. Înseamnă că după fiecare eșantion de antrenament, funcția de pierdere este testată și modelul este actualizat. Aceste actualizări frecvente duc la convergerea către minime în mai puțin timp, dar se produce cu prețul unei variații crescute care poate face modelul să depășească poziția necesară.

Dar un avantaj al acestei tehnici este necesarul redus de memorie în comparație cu cea anterioară, deoarece acum nu este nevoie să stocați valorile anterioare ale funcțiilor de pierdere.

Coborâre gradient mini-lot

O altă variantă a acestei abordări GD este mini-lotul, în care parametrii modelului sunt actualizați în loturi mici. Înseamnă că după fiecare n loturi, parametrii modelului vor fi actualizați și acest lucru asigură că modelul avansează către minime în mai puțini pași, fără a fi deraiat des. Acest lucru are ca rezultat o utilizare mai mică a memoriei și o variație scăzută a modelului.

Citiți: Idei de proiecte de învățare automată

Coborâre în gradient bazată pe impuls

Să revedem metoda pe care o folosim pentru a actualiza parametrii. Pe baza derivatei de ordinul întâi a funcției de pierdere, propagăm invers gradienții. Frecvența actualizărilor poate fi după fiecare iterație, un lot sau la ultima, dar nu avem în vedere câte actualizări avem în parametri.

Dacă acest element de istorie este inclus în următoarele actualizări, atunci poate accelera întregul proces și acesta este ceea ce înseamnă impuls în acest optimizator. Acest element de istorie este ca modul în care mintea noastră memorează lucrurile. Dacă mergeți pe o stradă și parcurgeți o distanță destul de mare, atunci veți fi sigur că destinația dvs. este cu o anumită distanță în față și vă veți crește viteza.

Acest element depinde de valoarea anterioară, rata de învățare și un nou parametru numit gamma, care controlează această actualizare a istoricului. Regula de actualizare va fi ceva de genul w = w – v, unde v este elementul istoric.

Gradient accelerat Nesterov (NAG)

GD bazat pe impuls a dat un impuls optimizatoarelor utilizate în prezent, convergând cel mai devreme către minime, dar a introdus o nouă problemă. Această metodă necesită o mulțime de întoarceri și oscilează în și în afara văii minime, adăugând timpul total. Timpul necesar este încă mult prea mai mic decât GD normal, dar această problemă necesită și o remediere și aceasta se face în NAG.

Abordarea urmată aici a fost ca actualizarea parametrilor să fie făcută mai întâi cu elementul istoric și apoi se calculează doar derivata care o poate muta în direcția înainte sau înapoi. Aceasta se numește abordarea de a privi înainte și are mai mult sens, deoarece dacă curba ajunge aproape de minime, atunci derivata o poate face să se miște încet, astfel încât să existe mai puține oscilații și, prin urmare, economisind mai mult timp.

Citește și: Tehnici de învățare profundă pe care ar trebui să le cunoști

Adagrad

Până acum ne concentrăm doar asupra modului în care parametrii modelului ne afectează antrenamentul, dar nu am vorbit despre hiper-parametri cărora li se atribuie o valoare constantă pe parcursul antrenamentului. Un astfel de hiper-parametru important este rata de învățare, iar modificarea acesteia poate schimba ritmul antrenamentului.

Pentru o intrare de caracteristică rară în care majoritatea valorilor sunt zero, ne putem permite o rată de învățare mai mare, care va stimula gradientul de moarte rezultat din aceste caracteristici rare. Dacă avem date dense, atunci putem avea o învățare mai lentă.

Soluția pentru aceasta este de a avea o rată de învățare adaptivă care se poate modifica în funcție de intrarea furnizată. Optimizatorul Adagrad încearcă să ofere această adaptabilitate prin scăderea ratei de învățare proporțional cu istoricul actualizat al gradienților.

Înseamnă că atunci când există actualizări mai mari, elementul istoric se acumulează și, prin urmare, reduce rata de învățare și invers. Un dezavantaj al acestei abordări este că rata de învățare scade agresiv și după un timp se apropie de zero.

RMSProp

Este o îmbunătățire a optimizatorului Adagrad. Acest lucru urmărește să reducă agresivitatea ratei de învățare prin luarea unei medii exponențiale a gradienților în loc de suma cumulativă a gradienților pătrați. Rata de învățare adaptivă rămâne intactă, deoarece acum media exponențială va pedepsi o rată de învățare mai mare în condițiile în care există mai puține actualizări și o rată mai mică într-un număr mai mare de actualizări.

Adam

Adaptive Moment Estimation combină puterea RMSProp (root-mean-square prop) și GD bazată pe impuls. În optimizatorii Adam, puterea momentului GD de a păstra istoricul actualizărilor și rata de învățare adaptivă oferită de RMSProp fac din Adam Optimizer o metodă puternică. De asemenea, introduce doi noi hiper-parametri beta1 și beta2 care sunt de obicei păstrați în jurul valorii de 0,9 și 0,99, dar îi puteți modifica în funcție de cazul dvs. de utilizare.

Trebuie citit: Regularizarea în învățarea profundă

Concluzie

În acest articol, am analizat 8 optimizatori de învățare profundă în ordinea ușurinței utilizării lor și modul în care limitarea unui optimizator este depășită de următorul și așa mai departe. Există mai multe modificări ale unuia sau altor optimizatori menționate aici, dar acestea sunt cele fundamentale pe care ar trebui să le luați în considerare înainte de a alege soluții complexe.

Alegerea unui câștigător dintre acestea este foarte subiectivă pentru cazul de utilizare și problema cu care aveți de-a face, dar cu siguranță se poate clasa Adam Optimizer pe primul loc datorită combinației sale cu conceptul de impuls care a schimbat modul în care parametrii modelului ar trebui actualizați și adaptând schimbarea. rata de învățare pentru diferite scenarii, permițând procesarea eficientă a oricăror tipuri de intrări.

O tendință generală arată că pentru aceeași pierdere, acești optimizatori converg la minime locale diferite. În timp ce optimizatorii de învățare adaptive converg la minime mai clare, alte tipuri de tehnici converg la minime mai plate, ceea ce este mai bine pentru generalizare. Aceste tehnici pot ajuta doar într-o oarecare măsură deoarece, pe măsură ce rețelele neuronale profunde devin mai mari, sunt necesare metode mai eficiente pentru a obține rezultate bune.

Dacă sunteți curios să stăpâniți învățarea automată și inteligența artificială, sporiți-vă cariera cu un Master of Science în Învățare automată și inteligență artificială cu IIIT-B și Universitatea John Moores din Liverpool.

Cum lucrează optimizatorii în deep learning?

În timp ce rețelele neuronale sunt hype în acest moment, un optimizator este ceva care este mult mai fundamental pentru învățarea unei rețele neuronale. În timp ce rețelele neuronale pot învăța pe cont propriu, fără cunoștințe anterioare, un optimizator este un program care rulează cu rețeaua neuronală și îi permite să învețe mult mai rapid. Face acest lucru, pe scurt, modificând parametrii rețelei neuronale astfel încât să facă antrenamentul cu acea rețea neuronală mult mai rapid și mai ușor. Acești optimizatori sunt cei care permit rețelelor neuronale să funcționeze în timp real, iar antrenamentul durează doar câteva minute. Fără ei, antrenamentul ar dura cu ușurință zile.

De ce este dificil să optimizați algoritmii de învățare profundă?

Sistemele de învățare profundă sunt în general considerate greu de optimizat, deoarece sunt mari și complexe, implicând adesea mai multe straturi și neliniarități. Optimizatorii trebuie să se ocupe de un sistem uriaș, care nu este ușor de înțeles. Unele instrumente de învățare profundă oferă doar un număr limitat de parametri care pot fi reglați, ceea ce limitează utilitatea acestora. Există, totuși, câteva modalități eficiente de a optimiza modelele de învățare profundă și de a îmbunătăți generalizarea acestora.

Care sunt diferiții optimizatori în deep learning?

În deep learning, optimizatorii sunt utilizați pentru a ajusta parametrii pentru un model. Scopul unui optimizator este de a ajusta greutățile modelului pentru a maximiza o funcție de pierdere. Funcția de pierdere este utilizată ca o modalitate de a măsura cât de bine funcționează modelul. Un optimizator trebuie utilizat atunci când antrenați un model de rețea neuronală. Există o varietate de optimizatori diferite care pot fi utilizate cu un model de învățare profundă. Unele dintre cele mai populare optimizatoare sunt RMSprop, momentum și Adam