Ultima actualizare la 6 august 2019

Rețelele neuronale învață un set de greutăți care mapează cel mai bine intrările la ieșiri.

O rețea cu greutăți mari de rețea poate fi un semn al unei rețele instabile în care modificările mici în intrare pot duce la schimbări mari în ieșire. Acest lucru poate fi un semn că rețeaua a depășit setul de date de antrenament și probabil că va avea performanțe slabe atunci când se fac predicții cu privire la date noi.

O soluție la această problemă este actualizarea algoritmului de învățare pentru a încuraja rețeaua să mențină greutățile mici. Aceasta se numește regularizarea greutății și poate fi utilizată ca o tehnică generală pentru a reduce supraadaptarea setului de date de antrenament și pentru a îmbunătăți generalizarea modelului.

În acest post, veți descoperi regularizarea greutății ca o abordare pentru a reduce supraadaptarea pentru rețelele neuronale.

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

  • Greutățile mari într-o rețea neuronală sunt un semn al unei rețele mai complexe, care a depășit datele de antrenament.
  • Penalizarea unei rețele pe baza mărimii greutăților rețelei în timpul antrenamentului poate reduce supraadaptarea.
  • O optimizare a rețelei vectoriale L1 sau L2 poate fi adăugată la optimizarea rețelei pentru a încuraja greutăți mai mici.

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.

greutății

O introducere ușoară a regularizării greutății pentru a reduce supraadaptarea pentru modelele de învățare profundă
Fotografie de jojo nicdao, unele drepturi rezervate.

Problemă cu greutăți mari

Atunci când montăm un model de rețea neuronală, trebuie să învățăm greutățile rețelei (adică parametrii modelului) folosind descendența stocastică a gradientului și setul de date de antrenament.

Cu cât formăm rețeaua mai mult timp, cu atât greutățile vor deveni mai specializate în datele de antrenament, supradaptând datele de antrenament. Greutățile vor crește în dimensiune pentru a gestiona specificul exemplelor văzute în datele de instruire.

Greutățile mari fac rețeaua instabilă. Deși greutatea va fi specializată pentru setul de date de antrenament, variații minore sau zgomot statistic la intrările așteptate vor avea ca rezultat diferențe mari în producție.

Greutățile mari tind să provoace tranziții clare în funcțiile nodului și, astfel, schimbări mari în ieșire pentru modificări mici în intrări.

În general, ne referim la acest model ca având o varianță mare și o mică părtinire. Adică, modelul este sensibil la exemplele specifice, zgomotul statistic, din setul de date de antrenament.

Un model cu greutăți mari este mai complex decât un model cu greutăți mai mici. Este un semn al unei rețele care poate fi prea specializată în datele de instruire. În practică, preferăm să alegem modelele mai simple pentru a rezolva o problemă (de exemplu, aparatul de ras al lui Occam). Preferăm modelele cu greutăți mai mici.

… Având în vedere unele date de instruire și o arhitectură de rețea, mai multe seturi de valori de greutate (modele multiple) ar putea explica datele. Modelele mai simple sunt mai puțin susceptibile de a se potrivi prea mult decât cele complexe. Un model simplu în acest context este un model în care distribuția valorilor parametrilor are mai puțină entropie

O altă problemă posibilă este că pot exista multe variabile de intrare, fiecare cu niveluri diferite de relevanță pentru variabila de ieșire. Uneori putem folosi metode pentru a ajuta la selectarea variabilelor de intrare, dar de multe ori relațiile dintre variabile nu sunt evidente.

A avea greutăți mici sau chiar greutăți zero pentru intrări mai puțin relevante sau irelevante în rețea va permite modelului să se concentreze asupra învățării. Și asta va duce la un model mai simplu.

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.

Încurajați greutățile mici

Algoritmul de învățare poate fi actualizat pentru a încuraja rețeaua spre utilizarea unor greutăți mici.

O modalitate de a face acest lucru este să modificați calculul pierderilor utilizate în optimizarea rețelei pentru a lua în considerare și dimensiunea greutăților.

Amintiți-vă că atunci când instruim o rețea neuronală, minimizăm o funcție de pierdere, cum ar fi pierderea jurnalului în clasificare sau eroarea medie pătrată în regresie. La calcularea pierderii dintre valorile prezise și cele așteptate într-un lot, putem adăuga dimensiunea curentă a tuturor greutăților din rețea sau adăugați un strat la acest calcul. Aceasta se numește penalizare deoarece penalizăm modelul proporțional cu mărimea greutăților din model.

Multe abordări de regularizare se bazează pe limitarea capacității modelelor, cum ar fi rețelele neuronale, regresia liniară sau regresia logistică, prin adăugarea unei [...] penalizări funcției obiective.

Greutățile mai mari duc la o penalizare mai mare, sub forma unui scor mai mare de pierderi. Algoritmul de optimizare va împinge apoi modelul să aibă greutăți mai mici, adică greutăți nu mai mari decât este necesar pentru a performa bine pe setul de date de antrenament.

Greutățile mai mici sunt considerate mai regulate sau mai puțin specializate și, ca atare, ne referim la această penalizare ca regularizare a greutății.

Când această abordare a penalizării coeficienților modelului este utilizată în alte modele de învățare automată, cum ar fi regresia liniară sau regresia logistică, aceasta poate fi denumită contracție, deoarece penalizarea încurajează coeficienții să se micșoreze în timpul procesului de optimizare.

Contracție. Această abordare implică adaptarea unui model care implică toți predictorii p. Cu toate acestea, coeficienții estimați sunt micșorați spre zero [...] Această contracție (cunoscută și sub denumirea de regularizare) are ca efect reducerea varianței

Adăugarea unei penalizări pentru mărimea greutății sau a regularizării greutății într-o rețea neuronală are ca efect reducerea erorii de generalizare și permiterea modelului să acorde mai puțină atenție variabilelor de intrare mai puțin relevante.

1) Suprimă orice componentă irelevantă a vectorului de greutate alegând cel mai mic vector care rezolvă problema învățării. 2) Dacă dimensiunea este aleasă corect, o descompunere a greutății poate suprima o parte din efectul zgomotului static asupra țintelor.

Cum se penalizează greutățile mari

Penalizarea modelului are două părți în funcție de mărimea greutăților.

Primul este calculul mărimii greutăților, iar al doilea este cantitatea de atenție pe care procesul de optimizare ar trebui să o acorde penalității.

Calculați dimensiunea greutății

Ponderile rețelei neuronale sunt valori reale care pot fi pozitive sau negative, ca atare, simpla adăugare a ponderilor nu este suficientă. Există două abordări principale utilizate pentru a calcula dimensiunea greutăților, acestea fiind:

  • Calculați suma valorilor absolute ale greutăților, numite L1.
  • Calculați suma valorilor pătrate ale greutăților, numite L2.

L1 încurajează greutățile la 0,0 dacă este posibil, rezultând greutăți mai rare (greutăți cu mai multe valori de 0,0). L2 oferă mai multe nuanțe, ambele penalizând greutăți mai mari, dar rezultând greutăți mai puțin rare. Utilizarea L2 în regresia liniară și logistică este adesea denumită Ridge Regression. Acest lucru este util de știut atunci când încercăm să dezvoltăm o intuiție pentru pedeapsă sau exemple de utilizare a acesteia.

În alte comunități academice, regularizarea L2 este, de asemenea, cunoscută sub numele de regresie de creastă sau regularizare Tihonov.

Greutățile pot fi considerate un vector, iar magnitudinea unui vector se numește norma sa, din algebră liniară. Ca atare, penalizarea modelului pe baza mărimii greutăților este, de asemenea, denumită o penalizare a normei de greutate sau parametru.

Este posibil să se includă atât abordările L1, cât și L2 pentru calcularea dimensiunii greutăților ca penalizare. Acest lucru este asemănător cu utilizarea ambelor penalizări utilizate în algoritmul Elastic Net pentru regresia liniară și logistică.

Abordarea L2 este probabil cea mai utilizată și este denumită în mod tradițional „decădere în greutate” în domeniul rețelelor neuronale. Se numește „contracție” în statistici, un nume care te încurajează să te gândești la impactul penalizării asupra ponderilor modelului în timpul procesului de învățare.

Această alegere specială a regulatorului este cunoscută în literatura de învățare automată ca descompunere a greutății, deoarece în algoritmii de învățare secvențială încurajează valorile greutății să se descompună spre zero, cu excepția cazului în care sunt susținute de date. În statistici, oferă un exemplu de metodă de micșorare a parametrilor, deoarece micșorează valorile parametrilor spre zero.

Amintiți-vă că fiecare nod are greutăți de intrare și o greutate de părtinire. Greutatea de prejudecată nu este în general inclusă în penalizare, deoarece „intrarea” este constantă.

Controlul impactului pedepsei

Mărimea calculată a greutăților este adăugată la funcția obiectivului de pierdere la antrenarea rețelei.

În loc să adauge fiecare greutate direct la penalizare, acestea pot fi cântărite folosind un nou hiperparametru numit alfa (a) sau uneori lambda. Aceasta controlează cantitatea de atenție pe care procesul de învățare ar trebui să o acorde pedepsei. Sau altfel spus, suma pentru a penaliza modelul pe baza mărimii greutăților.

Hiperparametrul alfa are o valoare cuprinsă între 0,0 (fără penalizare) și 1,0 (penalizare completă). Acest hiperparametru controlează cantitatea de distorsiune din model de la 0,0, sau distorsiune redusă (varianță mare), până la 1,0, sau distorsiune ridicată (varianță redusă).

Dacă penalizarea este prea puternică, modelul va subestima greutățile și va satisface problema. Dacă penalizarea este prea slabă, modelului i se va permite să depășească datele de antrenament.

Norma vectorială a greutăților este adesea calculată pe strat, mai degrabă decât pe întreaga rețea. Acest lucru permite mai multă flexibilitate în alegerea tipului de regularizare utilizat (de exemplu, L1 pentru intrări, L2 în altă parte) și flexibilitate în valoarea alfa, deși este obișnuit să utilizați în mod implicit aceeași valoare alfa pe fiecare strat.

În contextul rețelelor neuronale, este uneori de dorit să se utilizeze o penalizare separată cu un coeficient diferit pentru fiecare strat al rețelei. Deoarece poate fi costisitor să căutați valoarea corectă a mai multor hiperparametri, este încă rezonabil să utilizați aceeași descompunere a greutății la toate straturile doar pentru a reduce dimensiunea spațiului de căutare.

Sfaturi pentru utilizarea regularizării greutății

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

Utilizați cu toate tipurile de rețea

Regularizarea greutății este o abordare generică.

Poate fi utilizat cu majoritatea, poate cu toate tipurile de modele de rețele neuronale, nu în ultimul rând cu cele mai comune tipuri de rețele de perceptroni multistrat, rețele neuronale convoluționale și rețele neuronale recurente de memorie pe termen scurt.

În cazul LSTM-urilor, poate fi de dorit să se utilizeze diferite penalizări sau configurații de penalizare pentru intrarea și conexiunile recurente.

Standardizați datele de intrare

În general, este o bună practică să actualizați variabilele de intrare pentru a avea aceeași scară.

Când variabilele de intrare au scări diferite, scara ponderilor rețelei va varia, la rândul său, în consecință. Acest lucru introduce o problemă atunci când se utilizează regularizarea greutății, deoarece valorile absolute sau pătrate ale greutăților trebuie adăugate pentru a fi utilizate în penalizare.

Această problemă poate fi abordată fie prin normalizarea, fie prin standardizarea variabilelor de intrare.

Folosiți o rețea mai mare

Este obișnuit ca rețelele mai mari (mai multe straturi sau mai multe noduri) să îmbrace mai ușor datele de antrenament.

Atunci când se utilizează regularizarea greutății, este posibil să se utilizeze rețele mai mari cu un risc mai mic de supra-montare. O strategie bună de configurare poate fi aceea de a începe cu rețele mai mari și de a utiliza descompunerea greutății.

Parametrii de căutare a grilei

Este comun să se utilizeze valori mici pentru hiperparametrul de regularizare care controlează contribuția fiecărei greutăți la penalizare.

Poate începeți prin testarea valorilor pe o scară de jurnal, cum ar fi 0,1, 0,001 și 0,0001. Apoi utilizați o căutare în grilă la ordinea de mărime care arată cea mai promițătoare.

Folosiți L1 + L2 împreună

Mai degrabă decât să încercați să alegeți între penalizările L1 și L2, utilizați ambele.

Metodele moderne și eficiente de regresie liniară, cum ar fi Elastic Net, utilizează atât penalizări L1, cât și L2 în același timp și aceasta poate fi o abordare utilă de încercat. Acest lucru vă oferă atât nuanța L2, cât și raritatea încurajată de L1.

Utilizați într-o rețea instruită

Utilizarea regularizării greutății poate permite scheme de antrenament mai elaborate.

De exemplu, un model poate fi potrivit mai întâi pe datele de antrenament fără nicio regularizare, apoi actualizat ulterior cu utilizarea unei penalități de greutate pentru a reduce dimensiunea greutăților modelului deja performant.

Aveți vreun sfat pentru utilizarea regularizării greutății?
Anunță-mă în comentariile de mai jos.

Lecturi suplimentare

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

Cărți

  • Secțiunea 7.1 Sancțiuni ale normelor parametrilor, Deep Learning, 2016.
  • Secțiunea 5.5 Regularizarea în rețelele neuronale, recunoașterea modelelor și învățarea automată, 2006.
  • Secțiunea 16.5 Decadere în greutate, Forțare neuronală: învățare supravegheată în rețelele neuronale artificiale Feedforward, 1999.
  • Secțiunea 4.4.2 Adăugarea regularizării greutății, Deep Learning cu Python, 2017.
  • Secțiunea 6.2 Metode de reducere, o introducere în învățarea statistică: cu aplicații în R, 2013.

Hârtii

Articole

rezumat

În acest post, ați descoperit regularizarea greutății ca o abordare pentru a reduce supraadaptarea pentru rețelele neuronale.

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

  • Greutățile mari într-o rețea neuronală sunt un semn al unei rețele mai complexe, care a depășit datele de antrenament.
  • Penalizarea unei rețele pe baza mărimii greutăților rețelei în timpul antrenamentului poate reduce supraadaptarea.
  • O optimizare a rețelei vectoriale L1 sau L2 poate fi adăugată la optimizarea rețelei pentru a încuraja greutăți mai mici.

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.