Ultima actualizare la 6 august 2019

O provocare majoră în formarea rețelelor neuronale este cât timp trebuie să le antrenezi.

Prea puțin antrenament va însemna că modelul se va potrivi trenului și seturilor de testare. Prea mult antrenament va însemna că modelul se va potrivi cu setul de date de antrenament și va avea performanțe slabe pe setul de testare.

Un compromis este să te antrenezi asupra setului de date de antrenament, dar să oprești antrenamentul în momentul în care performanța unui set de date de validare începe să se degradeze. Această abordare simplă, eficientă și larg utilizată pentru antrenarea rețelelor neuronale se numește oprire timpurie.

În această postare, veți descoperi că oprirea antrenamentului unei rețele neuronale devreme înainte ca aceasta să se potrivească setului de date de antrenament poate reduce supraadaptarea și poate îmbunătăți generalizarea rețelelor neuronale profunde.

După ce citiți această postare, veți ști:

  • Provocarea de a antrena o rețea neuronală suficient de mult timp pentru a învăța cartarea, dar nu atât de mult încât să se potrivească cu datele de antrenament.
  • Performanța modelului pe un set de date de validare de rezistență poate fi monitorizată în timpul antrenamentului și antrenamentul oprit când eroarea de generalizare începe să crească.
  • Utilizarea opririi timpurii necesită selectarea unei măsuri de performanță pentru monitorizare, un declanșator pentru oprirea antrenamentului și o selecție a greutăților modelului de utilizat.

Lansați proiectul cu noua mea carte Better Deep Learning, inclusiv tutoriale pas cu pas și fișierele de cod sursă Python pentru toate exemplele.

Să începem.

ușoară

O introducere ușoară a opririi timpurii pentru evitarea modelelor de rețea neuronală de supraîntrenare
Fotografie de Benson Kua, unele drepturi rezervate.

Prezentare generală

Acest tutorial este împărțit în cinci părți; sunt:

  1. Problema instruirii este suficientă
  2. Opriți antrenamentul când crește eroarea de generalizare
  3. Cum să oprești antrenamentul devreme
  4. Exemple de oprire timpurie
  5. Sfaturi pentru oprirea timpurie

Problema instruirii este suficientă

Antrenarea rețelelor neuronale este o provocare.

Atunci când instruiți o rețea mare, va exista un moment în timpul antrenamentului când modelul va înceta să se generalizeze și va începe să învețe zgomotul statistic din setul de date de antrenament.

Această supra-dotare a setului de date de antrenament va duce la o creștere a erorii de generalizare, făcând modelul mai puțin util la efectuarea de predicții cu privire la date noi.

Provocarea este de a antrena rețeaua suficient de mult timp încât să fie capabilă să învețe cartografierea de la intrări la ieșiri, dar nu instruirea modelului atât de mult timp încât să se potrivească cu datele de formare.

Cu toate acestea, toți arhitecții standard ai rețelei neuronale, cum ar fi perceptronul multi-strat complet conectat, sunt predispuși la supra-montare [10]: În timp ce rețeaua pare să devină din ce în ce mai bună, adică, eroarea din setul de antrenament scade, la un moment dat în timpul antrenamentului de fapt începe să se înrăutățească din nou, adică eroarea la exemplele nevăzute crește.

O abordare pentru rezolvarea acestei probleme este de a trata numărul de epoci de antrenament ca un hiperparametru și de a antrena modelul de mai multe ori cu valori diferite, apoi de a selecta numărul de epoci care au ca rezultat cea mai bună performanță pe tren sau un set de date de testare.

Dezavantajul acestei abordări este că necesită mai multe modele pentru a fi antrenate și aruncate. Acest lucru poate fi ineficient din punct de vedere al calculului și consumă mult timp, în special pentru modelele mari instruite pe seturi de date mari de-a lungul zilelor sau săptămânilor.

Opriți antrenamentul când crește eroarea de generalizare

O abordare alternativă este antrenarea modelului o dată pentru un număr mare de epoci de antrenament.

În timpul antrenamentului, modelul este evaluat pe un set de date de validare de rezistență după fiecare epocă. Dacă performanța modelului pe setul de date de validare începe să se degradeze (de exemplu pierderea începe să crească sau precizia începe să scadă), atunci procesul de instruire este oprit.

Eroare eroarea măsurată în ceea ce privește datele independente, denumită în general un set de validare, arată adesea o scădere la început, urmată de o creștere pe măsură ce rețeaua începe să se potrivească excesiv. Prin urmare, instruirea poate fi oprită în punctul celei mai mici erori în ceea ce privește setul de date de validare

Modelul în momentul opririi antrenamentului este apoi utilizat și se știe că are o bună performanță de generalizare.

Această procedură se numește „oprire timpurie” și este probabil una dintre cele mai vechi și mai utilizate forme de regularizare a rețelei neuronale.

Această strategie este cunoscută sub numele de oprire timpurie. Este probabil cea mai frecventă formă de regularizare în învățarea profundă. Popularitatea sa se datorează atât eficacității sale, cât și simplității sale.

Dacă metodele de regularizare, cum ar fi degradarea greutății, care actualizează funcția de pierdere pentru a încuraja modele mai puțin complexe, sunt considerate regularizări „explicite”, atunci oprirea timpurie poate fi considerată ca un tip de regularizare „implicită”, la fel ca utilizarea unei rețele mai mici, care are o capacitate mai mică.

Regularizarea poate fi, de asemenea, implicită, așa cum este cazul opririi timpurii.

Vrei rezultate mai bune cu Deep Learning?

Urmează acum cursul meu gratuit de 7 zile pentru e-mail (cu un exemplu de cod).

Faceți clic pentru a vă înscrie și pentru a obține, de asemenea, o versiune PDF Ebook gratuită a cursului.

Cum să oprești antrenamentul devreme

Oprirea timpurie necesită configurarea rețelei dvs. pentru a fi constrânsă, ceea ce înseamnă că are o capacitate mai mare decât este necesară pentru problemă.

Atunci când instruiți rețeaua, se utilizează un număr mai mare de epoci de antrenament decât ar putea fi necesar în mod normal, pentru a oferi rețelei o mulțime de oportunități de a se potrivi, apoi începeți să îmbrăcați setul de date de antrenament.

Există trei elemente pentru utilizarea opririi timpurii; sunt:

  • Monitorizarea performanței modelului.
  • Declanșați pentru a opri antrenamentul.
  • Alegerea modelului de utilizat.

Monitorizarea performantei

Performanța modelului trebuie monitorizată în timpul antrenamentului.

Aceasta necesită alegerea unui set de date care este utilizat pentru a evalua modelul și a unei valori utilizate pentru a evalua modelul.

Este obișnuit să împărțiți setul de date de antrenament și să utilizați un subset, cum ar fi 30%, ca set de date de validare utilizat pentru a monitoriza performanța modelului în timpul antrenamentului. Acest set de validare nu este utilizat pentru antrenarea modelului. De asemenea, este obișnuit să utilizați pierderea pe un set de date de validare ca metrică pentru monitorizare, deși puteți utiliza, de asemenea, erori de predicție în cazul regresiei sau acuratețe în cazul clasificării.

Pierderea modelului din setul de date de antrenament va fi disponibilă, de asemenea, ca parte a procedurii de antrenament, iar metricile suplimentare pot fi, de asemenea, calculate și monitorizate pe setul de date de antrenament.

Performanța modelului este evaluată pe setul de validare la sfârșitul fiecărei epoci, care adaugă un cost de calcul suplimentar în timpul antrenamentului. Acest lucru poate fi redus prin evaluarea mai puțin frecventă a modelului, cum ar fi la fiecare 2, 5 sau 10 epoci de antrenament.

Declanșator de oprire timpurie

Odată selectată o schemă de evaluare a modelului, trebuie ales un factor declanșator pentru oprirea procesului de formare.

Declanșatorul va utiliza o valoare de performanță monitorizată pentru a decide când să oprească antrenamentul. Aceasta este adesea performanța modelului în setul de date restrâns, cum ar fi pierderea.

În cel mai simplu caz, antrenamentul este oprit de îndată ce performanța din setul de date de validare scade în comparație cu performanța din setul de date de validare în epoca anterioară de antrenament (de exemplu, o creștere a pierderii).

În practică pot fi necesare declanșatoare mai elaborate. Acest lucru se datorează faptului că formarea unei rețele neuronale este stocastică și poate fi zgomotoasă. Plotată pe un grafic, performanța unui model pe un set de date de validare poate crește și coborî de multe ori. Acest lucru înseamnă că este posibil ca primul semn de supra-echipare să nu fie un loc bun pentru a opri antrenamentul.

Eroarea de validare validă poate continua să coboare mai mult după ce a început să crească [...] Curbele reale de eroare de validare au aproape întotdeauna mai mult de un minim local.

Unele declanșatoare mai elaborate pot include:

  • Nicio modificare a valorii metrice pe un anumit număr de epoci.
  • O schimbare absolută într-o valoare.
  • O scădere a performanței observată într-un anumit număr de epoci.
  • Modificarea medie a valorii metrice într-un anumit număr de epoci.

O anumită întârziere sau „răbdare” în oprire este aproape întotdeauna o idee bună.

… Rezultatele indică faptul că criteriile „mai lente”, care se opresc mai târziu decât altele, conduc în general la o generalizare îmbunătățită în comparație cu criteriile „mai rapide”. Cu toate acestea, timpul de instruire care trebuie cheltuit pentru astfel de îmbunătățiri este destul de mare în medie și, de asemenea, variază dramatic atunci când sunt utilizate criterii lente.

Alegerea modelului

În momentul întreruperii antrenamentului, se știe că modelul are o eroare de generalizare ușor mai gravă decât un model de la o epocă anterioară.

Ca atare, poate fi necesar să se ia în considerare exact ce model este salvat. Mai exact, epoca de antrenament din care sunt ponderate în model care sunt salvate în fișier.

Acest lucru va depinde de declanșatorul ales pentru a opri procesul de instruire. De exemplu, dacă declanșatorul este o simplă scădere a performanței de la o epocă la alta, atunci vor fi preferate greutățile pentru modelul din epoca anterioară.

Dacă declanșatorul este necesar pentru a observa o scădere a performanței pe un număr fix de epoci, atunci modelul de la începutul perioadei de declanșare va fi preferat.

Poate că o abordare simplă este să salvați întotdeauna greutățile modelului dacă performanța modelului într-un set de date restrâns este mai bună decât în ​​epoca anterioară. În acest fel, veți avea întotdeauna modelul cu cea mai bună performanță pe setul de rezistență.

De fiecare dată când eroarea din setul de validare se îmbunătățește, stocăm o copie a parametrilor modelului. Când algoritmul de antrenament se termină, returnăm acești parametri, mai degrabă decât cei mai noi parametri.

Exemple de oprire timpurie

Această secțiune rezumă câteva exemple în care a fost utilizată oprirea timpurie.

Yoon Kim în aplicația sa seminală a rețelelor neuronale convoluționale la analiza sentimentului în lucrarea din 2014 intitulată „Rețele neuronale convoluționale pentru clasificarea sentințelor” a folosit oprirea timpurie cu 10% din setul de date de antrenament utilizat ca început de validare.

Altfel, nu efectuăm nicio reglare specifică setului de date, altele decât oprirea timpurie a seturilor de dezvoltatori. Pentru seturile de date fără un set de dev standard, selectăm aleatoriu 10% din datele de instruire ca set de dev.

Chiyuan Zhang și colab. de la MIT, Berkeley și Google în lucrarea lor din 2017 intitulată „Înțelegerea învățării profunde necesită regândirea generalizării” subliniază faptul că pe rețelele neuronale convoluționale foarte profunde pentru clasificarea fotografiilor, unde există un set de date abundent, care oprirea timpurie poate să nu ofere întotdeauna beneficii, deoarece modelul este mai puțin probabil să depășească seturi de date atât de mari.

[în ceea ce privește] precizia de formare și testare pe ImageNet [rezultatele sugerează] o referință a potențialului câștig de performanță pentru oprirea timpurie. Cu toate acestea, în setul de date CIFAR10, nu observăm niciun beneficiu potențial al opririi timpurii.

Yarin Gal și Zoubin Ghahramani de la Cambridge în lucrarea lor din 2015 intitulată „O aplicație teoretică bazată pe abandon în rețelele neuronale recurente” folosesc oprirea timpurie ca „linie de bază nereglementată” pentru modelele LSTM pe o suită de probleme de modelare a limbajului.

Lipsa de regularizare în modelele RNN face dificilă manipularea datelor mici și pentru a evita supraadaptarea cercetătorii folosesc adesea oprirea timpurie sau modele mici și subspecificate

Alex Graves și colab., În faimoasa lor lucrare din 2013 intitulată „Recunoașterea vorbirii cu rețele neuronale recurente profunde”, au obținut rezultate de ultimă generație cu LSTM pentru recunoașterea vorbirii, folosind în același timp oprirea timpurie.

Regularizarea este vitală pentru performanțe bune cu RNN-uri, deoarece flexibilitatea lor le face predispuse la supra-montare. Au fost utilizate două regulatoare în această lucrare: oprire timpurie și zgomot de greutate ...

Sfaturi pentru oprirea timpurie

Această secțiune oferă câteva sfaturi pentru utilizarea regularizării opririi timpurii cu rețeaua dvs. neuronală.

Când utilizați oprirea timpurie

Oprirea timpurie este atât de ușor de utilizat, de ex. cu cel mai simplu declanșator, că există puține motive pentru a nu-l folosi atunci când instruiți rețelele neuronale.

Utilizarea opririi timpurii poate fi un element esențial al antrenamentului modern al rețelelor neuronale profunde.

Oprirea timpurie trebuie utilizată aproape universal.

Plasați curbele de învățare pentru a selecta un declanșator

Înainte de a utiliza oprirea timpurie, poate fi interesant să se potrivească un model sub restricții și să se monitorizeze performanța modelului pe un set de date de tren și validare.

Trasarea performanței modelului în timp real sau la sfârșitul unei perioade lungi va arăta cât de zgomotos este procesul de antrenament cu modelul și setul de date specific.

Acest lucru poate ajuta la alegerea unui declanșator pentru oprirea timpurie.

Monitorizați o valoare importantă

Pierderea este o valoare ușor de monitorizat în timpul antrenamentului și de a declanșa oprirea timpurie.

Problema este că pierderea nu surprinde întotdeauna ceea ce este cel mai important pentru model pentru dvs. și proiectul dvs.

Poate fi mai bine să alegeți o valoare a performanței pentru a monitoriza care definește cel mai bine performanța modelului în ceea ce privește modul în care intenționați să-l utilizați. Aceasta poate fi valoarea pe care intenționați să o utilizați pentru a raporta performanța modelului.

Sugerate epoci de instruire

O problemă cu oprirea timpurie este că modelul nu folosește toate datele disponibile despre antrenament.

Poate fi de dorit să se evite supraadaptarea și să se antreneze cu privire la toate datele posibile, în special cu privire la problemele în care cantitatea de date de instruire este foarte limitată.

O abordare recomandată ar fi tratarea numărului de epoci de antrenament ca un hiperparametru și căutarea în grilă a unei game de valori diferite, probabil folosind validarea încrucișată k-fold. Acest lucru vă va permite să stabiliți numărul de epoci de antrenament și să încadrați un model final pe toate datele disponibile.

Oprirea timpurie ar putea fi utilizată în schimb. Procedura de oprire timpurie ar putea fi repetată de mai multe ori. Numărul de epocă la care a fost oprit antrenamentul a putut fi înregistrat. Apoi, media numărului de epocă pentru toate repetările de oprire timpurie ar putea fi utilizată la montarea unui model final pe toate datele disponibile de antrenament.

Acest proces ar putea fi realizat folosind o împărțire diferită a setului de instruire în tren și pași de validare de fiecare dată când se execută oprirea timpurie.

O alternativă ar putea fi utilizarea opririi timpurii cu un set de date de validare, apoi actualizarea modelului final cu instruire suplimentară asupra setului de validare întins.

Oprire timpurie cu validare încrucișată

Oprirea timpurie ar putea fi utilizată cu validarea încrucișată k-fold, deși nu este recomandată.

Procedura de validare încrucișată k-fold este concepută pentru a estima eroarea de generalizare a unui model prin refacerea și evaluarea repetată a acestuia pe diferite subseturi ale unui set de date.

Oprirea timpurie este concepută pentru a monitoriza eroarea de generalizare a unui model și a opri antrenamentul atunci când eroarea de generalizare începe să se degradeze.

Acestea sunt în contradicție, deoarece validarea încrucișată presupune că nu cunoașteți eroarea de generalizare și oprirea timpurie încearcă să vă ofere cel mai bun model bazat pe cunoașterea erorii de generalizare.

Poate fi de dorit să utilizați validarea încrucișată pentru a estima performanța modelelor cu valori diferite ale hiperparametrului, cum ar fi rata de învățare sau structura rețelei, utilizând în același timp oprirea timpurie.

În acest caz, dacă aveți resursele necesare pentru a evalua în mod repetat performanța modelului, atunci poate că numărul de epoci de antrenament poate fi tratat și ca un hiperparametru pentru a fi optimizat, în loc să utilizați oprirea timpurie.

În loc să se utilizeze validarea încrucișată cu oprire timpurie, oprirea timpurie poate fi utilizată direct fără evaluare repetată atunci când se evaluează diferite valori de hiperparametru pentru model (de exemplu, rate de învățare diferite).

Un posibil punct de confuzie este că oprirea timpurie este uneori denumită „antrenament validat încrucișat”. În plus, cercetările privind oprirea timpurie care compară factorii declanșatori pot utiliza validarea încrucișată pentru a compara impactul diferitelor declanșatoare.

Validarea suprasolicitării

Repetarea procedurii de oprire timpurie de multe ori poate avea ca rezultat modelul care să corespundă setului de date de validare.

Acest lucru se poate întâmpla la fel de ușor ca supradaptarea setului de date de antrenament.

O abordare este de a utiliza oprirea timpurie numai după ce toți ceilalți hiperparametri ai modelului au fost aleși.

O altă strategie poate fi utilizarea unei împărțiri diferite a setului de date de formare în tren și seturi de validare de fiecare dată când este utilizată oprirea timpurie.

Lecturi suplimentare

Această secțiune oferă mai multe resurse pe această temă dacă doriți să aprofundați.

Cărți

  • Secțiunea 7.8 Oprire timpurie, învățare profundă, 2016.
  • Secțiunea 5.5.2 Oprirea timpurie, recunoașterea modelelor și învățarea automată, 2006.
  • Secțiunea 16.1 Oprire timpurie, forțare neuronală: învățare supravegheată în rețelele neuronale artificiale Feedforward, 1999.

Hârtii

  • Oprire timpurie - Dar când?, 2002.
  • Îmbunătățirea selecției modelului prin metode neconvergente, 1993.
  • Oprire timpurie automată folosind validarea încrucișată: cuantificarea criteriilor, 1997.
  • Înțelegerea învățării profunde necesită regândirea generalizării, 2017.

Postări

Articole

rezumat

În această postare, ați descoperit că oprirea antrenamentului rețelei neuronale mai devreme înainte ca aceasta să se potrivească setului de date de antrenament poate reduce supraadaptarea și poate îmbunătăți generalizarea rețelelor neuronale profunde.

Mai exact, ați învățat:

  • Provocarea de a antrena o rețea neuronală suficient de mult timp pentru a învăța cartarea, dar nu atât de mult încât să se potrivească cu datele de antrenament.
  • Performanța modelului pe un set de date de validare de rezistență poate fi monitorizată în timpul antrenamentului și antrenamentul oprit când eroarea de generalizare începe să crească.
  • Utilizarea opririi timpurii necesită selectarea unei măsuri de performanță pentru monitorizare, un declanșator pentru oprirea antrenamentului și o selecție a greutăților modelului de utilizat.

Aveti vreo intrebare?
Puneți întrebările dvs. în comentariile de mai jos și voi face tot posibilul pentru a răspunde.

Dezvoltați astăzi modele de învățare profundă mai bune!

Antrenați-vă mai repede, reduceți supratensiunea și ansamblurile

. cu doar câteva linii de cod python

Descoperiți cum în noua mea carte electronică:
O mai bună învățare profundă

Oferă tutoriale de auto-studiu pe subiecte precum:
descompunerea greutății, normalizarea lotului, abandonul, stivuirea modelelor și multe altele.