Retropropagare în Rețelele Neuronale: Algoritm ML și Exemplu

⚡ Rezumat inteligent

Retropropagarea este algoritmul de antrenament de bază al unei rețele neuronale, care ajustează fin fiecare pondere în funcție de eroarea măsurată în epoca anterioară, astfel încât modelul să generalizeze mai bine pe date nevăzute, câte un strat pe rând.

  • 🔘 Idee de bază: Regula lanțului dă gradientul pierderii pentru fiecare greutate, câte un strat pe rând.
  • ☑️ Bucla de antrenament: Trecere înainte, măsurarea erorii, propagarea ei înapoi, actualizarea ponderilor, repetarea.
  • Două variante: Retropropagarea statică mapează intrarea fixă ​​la ieșirea fixă; retropropagarea recurentă se stabilizează mai întâi, apoi se propagă.
  • 🧪 De ce conteaza: Coborârea gradienților rămâne practică pentru rețelele profunde doar deoarece gradienții sunt reutilizați strat cu strat.
  • 🛠️ Limite cunoscute: Performanța depinde de calitatea intrării, iar eșantioanele zgomotoase distorsionează ponderile învățate.
  • ⚙️ Sănătatea gradientului: Înmulțirea multor derivate mici provoacă gradienți care dispar; ReLU și normalizarea reduc acest efect.

Propagarea inversă în rețeaua neuronală: algoritm de învățare automată

Ce este o rețea neuronală artificială?

O rețea neuronală artificială este un grup de unități I/O conectate, unde fiecare conexiune are o pondere. Aceasta vă ajută să construiți modele predictive din baze de date mari, iar designul împrumută vocabularul său din sistemul nervos uman. Rețelele de acest tip susțin înțelegerea imaginilor, învățarea automată, vorbirea computerizată și multe alte sarcini de recunoaștere a tiparelor.

Retropropagarea este algoritmul care decide care ar trebui să fie aceste ponderi, așa că cele două idei sunt cel mai bine interpretate împreună.

Ce este Backpropagation?

Retropropagarea este esența antrenării rețelelor neuronale. Este metoda de reglare fină a ponderilor unei rețele neuronale pe baza ratei de eroare obținute în epoca anterioară (adică, iterația). Reglarea corectă a ponderilor permite reducerea ratelor de eroare și creșterea fiabilității modelului prin creșterea generalizării acestuia.

Propagarea înapoi în rețeaua neuronală este o formă scurtă pentru „propagarea înapoi a erorilor”. Este o metodă standard de antrenare a rețelelor neuronale artificiale. Această metodă ajută la calcularea gradientului unei funcții de pierdere în raport cu toate greutățile din rețea.

Doi termeni sunt adesea confundați. Doar retropropagare calculează gradientul; un optimizator precum gradient descens este ceea ce de fapt schimbari ponderile folosind acel gradient. Aproape fiecare framework modern efectuează automat backpropagation prin intermediul motorului său autodiff.

Cum funcționează algoritmul de backpropagation

Algoritmul de propagare inversă în rețelele neuronale calculează gradientul funcției de pierdere pentru o singură ponderare folosind regula lanțului. Calculează eficient câte un strat pe rând, spre deosebire de un calcul direct naiv. Calculează gradientul, dar nu definește modul în care este utilizat gradientul. Generalizează calculul în regula delta.

Regula lanțului este cea care face acest lucru eficient. Influența unei ponderi timpurii asupra pierderii finale este un produs al derivatelor locale de-a lungul căii către ieșire, astfel încât algoritmul stochează în cache rezultatul intermediar al fiecărui strat la întoarcere și îl reutilizează pentru fiecare pondere din stratul inferior în loc să recalculeze întreaga rețea per pondere.

Luați în considerare următoarea diagramă exemplu de rețea neuronală cu propagare inversă pentru a înțelege. Figura tracare o singură trecere completă: intrările intră pe stânga, activările avansează prin stratul ascuns către ieșire, iar eroarea măsurată se deplasează apoi înapoi de-a lungul acelorași conexiuni pentru a corecta ponderile.

Diagrama algoritmului de propagare inversă care arată trecerea înainte prin straturile de intrare, ascunse și de ieșire și eroarea care se deplasează înapoi

  1. Intrările X, ajung prin calea preconectată
  2. Intrarea este modelată folosind greutăți reale W. Greutățile sunt de obicei selectate aleatoriu.
  3. Calculați ieșirea pentru fiecare neuron de la stratul de intrare, la straturile ascunse, la stratul de ieșire.
  4. Calculați eroarea din ieșiri:
    ErrorB= Actual Output – Desired Output
    
  5. Călătoriți înapoi de la stratul de ieșire la stratul ascuns pentru a ajusta greutățile astfel încât eroarea să fie redusă.
  6. Repetați procesul până când se obține rezultatul dorit.

Multe manuale scriu aceeași cantitate ca dorit minus realAmbele convenții funcționează, deoarece semnul este absorbit atunci când optimizatorul subtraceste gradientul, cu condiția să păstrați o convenție în întreaga rețea.

În practică, eroarea este rareori o simplă subtitrare.tracO funcție de pierdere, cum ar fi eroarea medie pătratică pentru regresie sau entropia încrucișată pentru clasificare, convertește diferențele per ieșire într-un singur număr a cărui retropropagare a gradientului este calculată efectiv.

De ce avem nevoie de propagare inversă?

Cele mai importante avantaje ale propagării inverse sunt:

  • Backpropagarea este rapidă, simplă și ușor de programat
  • Nu adaugă parametri noi proprii; reglajul pe care îl faci aparține optimizatorului și rețelei, în principal rata de învățare și numărul de intrări.
  • Este o metodă flexibilă, deoarece nu necesită cunoștințe prealabile despre rețea
  • Este o metodă standard care, în general, funcționează bine
  • Nu are nevoie de nicio mențiune specială a caracteristicilor funcției de învățat.

Simplu spus, fără o modalitate eficientă de a obține gradienți, antrenarea a ceva mai profund decât un singur strat ar fi impracticabilă din punct de vedere computațional.

Ce este o rețea Feed Forward?

O rețea neuronală feedforward este o rețea neuronală artificială în care nodurile nu formează niciodată un ciclu. Acest tip de rețea neuronală are un strat de intrare, straturi ascunse și un strat de ieșire. Este primul și cel mai simplu tip de rețea neuronală artificială.

Distincția contează aici deoarece trecerea înainte a propagării inverse este exact o trecere feedforward; doar că corecția erorii se desfășoară în direcția opusă.

Tipuri de rețele de backpropagation

Două tipuri de rețele de backpropagation sunt:

  • Propagare inversă statică
  • Propagarea inversă recurentă

Propagare inversă statică

Este un tip de rețea de retropropagare care produce o hartăping a unei intrări statice pentru ieșire statică. Este util pentru a rezolva problemele de clasificare statică, cum ar fi recunoașterea optică a caracterelor.

Propagarea inversă recurentă

Propagare inversă recurentă în data mining este transmisă înainte până când se atinge o valoare fixă. După aceea, eroarea este calculată și propagată înapoi.

Principala diferență dintre aceste două metode este că hartaping este rapidă în retropropagarea statică, în timp ce este nestatică în retropropagarea recurentă. Tabelul de mai jos prezintă cele două alăturate.

Criteriu Propagare inversă statică Retropropagare recurentă
Hartăping Intrare statică către ieșire statică Nestatic; rețeaua se stabilizează înainte ca eroarea să fie utilizată
Viteză Rapid, o singură trecere per probă Mai lent, activarea este iterată până se stabilizează
Forma rețelei Feedforward, fără cicluri Conține conexiuni de feedback
Utilizare tipică Recunoaștere optică a caracterelor, clasificare cu dimensiuni fixe Probleme al căror rezultat depinde de o stare internă stabilizată

Istoria propagării inverse

  • În 1961, conceptul de bază al retropropagarii continue a fost derivat în contextul teoriei controlului de către J. Kelly, Henry Arthur și E. Bryson.
  • În 1969, Bryson și Ho au oferit o metodă de optimizare a sistemului dinamic în mai multe etape.
  • În 1970, Seppo Linnainmaa a publicat modul invers al diferențierii automate, metoda de calcul pe care se bazează retropropagarea modernă.
  • În 1974, Werbos a declarat posibilitatea aplicării acestui principiu într-o rețea neuronală artificială.
  • În 1982, Hopfield și-a adus ideea unei rețele neuronale.
  • În 1986, prin efortul lui David E. Rumelhart, Geoffrey E. Hinton, Ronald J. Williams, retropropagarea a câștigat recunoaștere.
  • În 1989, Yann LeCun și colegii săi au antrenat o rețea convoluțională cu retropropagare pentru a citi cifrele scrise de mână, una dintre primele utilizări practice la scară largă.
  • În 1993, Wan a fost prima persoană care a câștigat un concurs internațional de recunoaștere a modelelor cu ajutorul metodei de backpropagation.
  • În 2006, munca lui Hinton asupra rețelelor de credințe profunde și a pre-antrenamentului pe straturi a reînviat interesul pentru antrenarea rețelelor profunde, care stagnase din cauza dispariției gradienților.
  • În 2010, Xavier Glorot și Yoshua Bengio au analizat de ce rețelele profunde erau greu de antrenat și au introdus o inițializare îmbunătățită a ponderilor, care, împreună cu activările ReLU, a făcut ca retropropagarea profundă să fie practică.
  • În 2012, AlexNet (Krizhevsky, Sutskever și Hinton) a câștigat competiția ImageNet folosind backpropagation accelerată de GPU, declanșând boom-ul învățării profunde moderne.
  • În 2014, a fost introdus optimizatorul Adam (Kingma și Ba) și a devenit rapid varianta implicită de coborâre în gradient utilizată cu backpropagation.
  • În 2015, normalizarea în loturi și rețelele reziduale (ResNet) au rezolvat problemele de flux gradient în rețele foarte profunde, permițând retropropagarea prin sute de straturi.
  • În perioada 2015-2017, TensorFlow și PyTorch a transformat diferențierea automată într-o funcție software standard, astfel încât gradienții nu mai trebuiau să fie derivați manual.
  • În 2017, a fost introdusă arhitectura Transformer, care este antrenată end-to-end cu backpropagation, la fel ca și modelele lingvistice mari construite pe baza acesteia.
  • În 2019, Bengio, Hinton și LeCun au primit premiul ACM AM Turing pentru munca lor asupra rețelelor neuronale profunde.
  • În 2020, lucrarea „Backpropagation and the Brain” (Lillicrap, Santoro, Marris, Akerman și Hinton) a susținut că, deși creierul poate aproxima învățarea de tip backpropagation, redeschizând dezbaterea privind plauzibilitatea biologică.
  • În 2022, Hinton a propus algoritmul Forward-Forward, o metodă de antrenament care evită complet o trecere înapoi.
  • În 2024, John Hopfield și Geoffrey Hinton au primit Premiul Nobel pentru fizică pentru descoperirile fundamentale care au permis învățarea automată cu ajutorul rețelelor neuronale artificiale.
  • În 2025, metodele forward-forward au fost extinse la rețele convoluționale, demonstrând că antrenamentul fără backpropagation ar putea funcționa în sarcini de clasificare a imaginilor.
  • Începând cu 2026, backpropagation rămâne algoritmul standard de antrenament pentru practic toate modelele de deep learning, în timp ce cercetările continuă în ceea ce privește metodele de învățare fără gradient, locale și paralele, care reduc costurile de memorie și de calcul.

Puncte cheie pentru propagarea inversă

  • Simplifică structura rețelei prin eliminarea legăturilor ponderate care au cel mai mic efect asupra rețelei antrenate
  • Trebuie să studiați un grup de valori de intrare și activare pentru a dezvolta relația dintre straturile de intrare și unități ascunse.
  • Ajută la evaluarea impactului pe care o anumită variabilă de intrare îl are asupra ieșirii rețelei. Cunoștințele dobândite în urma acestei analize ar trebui să fie reprezentate în reguli.
  • Propagarea inversă este utilă în special pentru rețelele neuronale profunde care lucrează la proiecte predispuse la erori, cum ar fi recunoașterea imaginii sau a vorbirii.
  • Propagarea inversă profită de regulile lanțului și ale puterii, ceea ce îi permite să funcționeze cu orice număr de ieșiri.

Cea mai bună practică pentru retropropagare

Propagarea inversă în rețelele neuronale poate fi explicată cu ajutorul analogiei „șiretului de pantofi”. Actualizările de greutate se comportă foarte asemănător tensiunii pe un șiret: dacă este prea puțin, nimic nu este ținut împreună, dacă este prea mult, ceva se rupe.

Tensiunea dantelelor Ce înseamnă în timpul antrenamentului
Prea puțină tensiune Nu este suficient de constrângător și foarte lejer — modelul nu se potrivește bine
Prea multă tensiune Prea multă constrângere (supraantrenament); necesită prea mult timp (proces relativ lent); probabilitate mai mare de eșec
Tragerea unui șiret mai mult decât a celuilalt Disconfort (prejudecată) - o parte a rețelei domină potrivirea

Două obiceiuri practice decurg din analogie: scalarea inputurilor înainte de antrenament, astfel încât nicio caracteristică să nu fie mai solicitată decât restul și urmărirea pierderii validării, astfel încât tensiunea să fie eliberată înainte de instalarea supraantrenamentului.

Dezavantajele utilizării Backpropagation

  • Performanța reală a propagării inverse pentru o problemă specifică depinde de datele de intrare.
  • Algoritmul de propagare înapoi în mineritul de date poate fi destul de sensibil la datele zgomotoase
  • Pe parcursul unui mini-lot, retropropagarea ar trebui implementată cu o abordare bazată pe matrice; looping mai mult de un exemplu odată este semnificativ mai lent.
  • În rețelele profunde, multiplicarea repetată a derivatelor mici poate micșora gradienții spre zero, astfel încât cele mai timpurii straturi abia învață - problema gradientului care dispare descrisă în Google Curs de accident de învățare automată.

Niciuna dintre acestea nu exclude metoda. Acestea sunt motivele pentru care practicienii apelează la activări ReLU, normalizare și programe atente ale ratei de învățare atunci când trec de la o rețea superficială la una... învățare profundă model.

Întrebări frecvente

Propagarea inversă calculează gradientul pierderii în raport cu fiecare pondere. Coborârea gradientului este optimizatorul care consumă acel gradient și mută fiecare pondere. Unul măsoară panta; celălalt face pasul.

Rata de învățare stabilește cât de mult se deplasează fiecare pondere de-a lungul gradientului său. Dacă este prea mică, antrenamentul se întârzie; dacă este prea mare, pierderea oscilează sau diverge. Programele care reduc rata de-a lungul epocilor converg de obicei mai fiabil.

Retropropagarea în timp antrenează rețele recurente prin desfășurarea secvenței într-un lanț de copii, apoi prin aplicarea retropropagarii obișnuite pe aceasta. Secvențele lungi sunt de obicei trunchiate, deoarece altfel gradienții dispar sau explodează pe parcursul mai multor etape.

Orice pierdere diferențiabilă funcționează. Eroarea medie pătratică se potrivește regresiei, entropia încrucișată binară se potrivește problemelor cu două clase, iar entropia încrucișată categorială se potrivește straturilor de ieșire multi-clasă. Alegerea modifică gradientul la stratul de ieșire, nu algoritmul invers în sine.

Instrumentele automate de căutare explorează ratele de învățare, lățimile straturilor și setările de regularizare mult mai rapid decât prin încercări manuale și erori. Optimizare bayesiană și oprire timpurieping Planificatorii elimină rapid rulările slabe, lăsând calculul pentru configurațiile care reduc de fapt pierderile de validare.

Copilotul GitHub elaborează bucle de antrenament, verificări ale gradienților și definiții ale straturilor dintr-un comentariu scurt, ceea ce scurtează lucrul standard. Verifică derivatele pe care le produce în raport cu o verificare numerică a gradienților, deoarece un semn aparent plauzibil, dar greșit, se antrenează în tăcere.

Ponderile mari fac ca produsele inverse să crească la fiecare strat până când actualizările depășesc acțiunea și pierderea devine instabilă. Decuparea gradientuluiping, ponderi inițiale mai mici, normalizarea în lot și o rată de învățare mai mică mențin magnitudinile în interval.

Un lot este grupul de eșantioane procesate înainte de o actualizare a ponderilor. O iterație este o singură astfel de actualizare. O epocă este o trecere completă peste setul de antrenament, conținând tot atâtea iterații câte loturi există.

Rezumați această postare cu: