O introducere ușoară pentru oprirea timpurie pentru a evita reîntrenarea rețelelor neuronale

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.