Backpropagation

De la Wikipedia, enciclopedia liberă

În învățarea automată, backpropagation este o metodă de estimare a gradientului utilizată pentru a antrena modele de rețele neurale. Estimarea gradientului este utilizată de algoritmul de optimizare pentru a calcula actualizările parametrilor rețelei.

Este o aplicare eficientă la astfel de rețele a regulii lanțului⁠(d) enunțată de Leibniz (1673) pentru calculul derivatelor funcțiilor compuse.[1] Este cunoscut și ca modul invers al diferențierii automate⁠(d) sau acumularea inversă⁠(d), datorită lui Seppo Linnainmaa⁠(d) (1970).[2][3][4][5][6][7] Termenul de „corectare a erorilor cu propagare inversă” a fost introdus în 1962 de Frank Rosenblatt⁠(d),[8][9] dar el nu știa cum să implementeze acest lucru, chiar dacă Henry J. Kelley⁠(d) avea un precursor continuu al lui backpropagation[10] deja în 1960 în contextul teoriei controlului⁠(d).[9]

Backpropagation calculează gradientul unei funcții de cost⁠(d) în raport cu ponderile rețelei pentru un singur exemplu de intrare-ieșire și face acest lucru eficient, calculând gradientul strat cu strat, iterând⁠(d) înapoi de la ultimul strat pentru a evita calculele redundante ale termenilor intermediari din regula lanțului; aceasta se poate calcula prin programare dinamică⁠(d).[10][11][12] În mod obișnuit, se utilizează metoda de descreștere a gradientului⁠(d) sau variante ale ei, cum ar fi cea stochastică⁠(d).[13]

În sens strict, termenul backpropagation se referă doar la algoritmul de calcul al gradientului, nu la modul în care este utilizat gradientul; dar termenul este adesea folosit în mod liber pentru a se referi la întregul algoritm de învățare – inclusiv la modul în care este utilizat gradientul, cum ar fi descreșterea stochastică.[14] În 1986 David E. Rumelhart⁠(d) et al. au publicat o analiză experimentală a tehnicii.[15] Aceasta a contribuit la popularizarea tehnicii și a ajutat la inițierea unei perioade active de cercetare în domeniul perceptronilor multistrat⁠(d).

Generalități[modificare | modificare sursă]

Backpropagation calculează gradientul în spațiul ponderilor⁠(d) unei rețele neuronale feedforward, în raport cu o funcție de cost⁠(d). Se notează cu:

  • : input (vectorul de caracteristici)
  • : ieșirea așteptată
    Pentru clasificare, ieșirea va fi un vector de probabilități pe toate clasele (de ex., , iar ieșirea așteptată este o anumită clasă, codificată prin variabila one-hot (de ex., ).
  • : funcția de cost⁠(d)
    Pentru clasificare, aceasta este de obicei entropia încrucișată (XC, cost logaritmic⁠(d)), în timp ce pentru regresie este de obicei costul erorii la pătrat
    (SEL).
  • : numărul de straturi
  • : ponderile legăturilor între straturile și , unde este ponderea între nodul din stratul și nodul din stratul [a]
  • : funcțiile de activare⁠(d) de pe stratul
    Pentru clasificare, ultimul strat este de regulă funcția logistică⁠(d) pentru clasificare binară, și softmax⁠(d) (softargmax) pentru clasificare cu mai multe clase, în timp ce pentru stratele ascunse, aceasta este tradițiomal o funcție sigmoidă⁠(d) (funcția logistică sau altele) pe fiecare nod (coordonată), dar astăzi gama este mai variată, fiind comună și funcția rectificator⁠(d) (ramp⁠(d), ReLU⁠(d)).
  • : activarea nodului din stratul .

În calculul lui backpropagation, se folosesc alte cantități intermediare introducându-le după cum este necesar mai jos. Termenii de bias nu sunt tratați în mod special, deoarece corespund unei ponderi cu o intrare fixă de 1. Pentru backpropagation, funcția de cost și funcțiile de activare specifice nu contează atâta timp cât ele și derivatele lor pot fi evaluate eficient. Printre funcțiile tradiționale de activare se numără sigmoidele, tanh și ReLU. Au mai fost propuse și swish,[16] mish,[17] și alte funcții de activare.

Rețeaua de ansamblu este o combinație de compuneri de funcții⁠(d) și înmulțiri de matrici:

Ca mulțime de antrenare se ia o mulțime de perechi intrare-ieșire, . Pentru fiecare pereche intrare-ieșire din mulțimea de antrenare, costul modelului pe acea pereche este costul diferenței dintre rezultatul prezis și rezultatul așteptat :

În timpul evaluării modelului, ponderile sunt fixe, în timp ce intrările variază (și ieșirea așteptată poate fi necunoscută), iar rețeaua se termină cu stratul de ieșire (nu include funcția de cost). În timpul antrenării modelului, perechea intrare-ieșire este fixă în timp ce ponderile variază, iar rețeaua se termină cu funcția de cost.

Backpropagation calculează gradientul pentru o pereche de intrare-ieșire fixă , unde ponderile pot varia. Fiecare componentă individuală a gradientului, poate fi calculată prin regula lanțului; dar a face acest lucru separat pentru fiecare pondere este ineficient. Backpropagation calculează eficient gradientul, evitând calculele duplicate și nu calculează valori intermediare inutile, calculând gradientul fiecărui strat — în special gradientul intrării ponderate a fiecărui strat, notat cu – din spate către față.

Cu alte cuvinte, punctul cheie este că, din moment ce singurul mod în care o pondere din afectează costul este prin efectul său asupra stratului următor și face acest lucru liniar, rezultă că sunt singurele date de care este nevoie pentru a calcula gradienții ponderilor stratului , iar apoi stratul anterior poate fi calculat cu și repetat recursiv. Aceasta evită ineficiența în două moduri. În primul rând, evită duplicarea, deoarece atunci când se calculează gradientul la stratul – nu mai este nevoie să se recalculeze toate derivatele pe straturile ulterioare de fiecare dată. În al doilea rând, evită calculele intermediare inutile, deoarece în fiecare etapă calculează direct gradientul ponderilor în raport cu rezultatul final (costul), și nu calculează inutil derivatele valorilor straturilor ascunse în raport cu modificările ponderilor .

Backpropagation poate fi exprimat pentru rețelele simple feedforward în termeni de înmulțire de matrici sau, mai general, în termeni de graf adjunct.

Înmulțire de matrici[modificare | modificare sursă]

Pentru cazul de bază al unei rețele feedforward, în care nodurile din fiecare strat sunt conectate numai la nodurile din stratul imediat următor (fără a sări peste niciun strat) și există o funcție de cost care calculează costul scalar pentru ieșirea finală, backpropagation poate fi înțeles pur și simplu prin înmulțiri de matrici.[b] În esență, backpropagation evaluează expresia derivatei funcției de cost ca un produs al derivatelor între fiecare strat de la dreapta la stânga – „înapoi” – iar gradientul ponderilor dintre fiecare strat este o simplă modificare a produsele parțiale („eroarea propagată înapoi”).

Dacă se dă o pereche intrare-ieșire , costul este:

Pentru a-l calcula, se începe cu intrarea și se merge înainte; se notează intrarea ponderată a fiecărui strat ascuns cu și rezultatul stratului ascuns ca activarea . Pentru backpropagation, activarea precum și derivatele (evaluat la ) trebuie să fie memorate pentru utilizare în timpul trecerii înapoi.

Derivata costului în termeni de intrări este dată de regula lanțului; fiecare termen este o derivată totală⁠(d), evaluată la valoarea rețelei (în fiecare nod) pe intrarea :

Unde este o matrice diagonală.

Acești termeni sunt: derivata funcției de cost;[c] derivatele funcțiilor de activare;[d] și matricile ponderilor:[e]

Gradientul este transpusa derivatei ieșirii în termeni de intrare, deci matricile sunt transpuse și ordinea înmulțirii se inversează, dar intrările sunt aceleași:

Backpropagation constă apoi, în esență, în evaluarea acestei expresii de la dreapta la stânga (echivalent, înmulțirea expresiei anterioare pentru derivată de la stânga la dreapta), calculând gradientul la fiecare strat pe parcurs; se mai adaugă un pas, deoarece gradientul ponderilor nu este doar o subexpresie: există o înmulțire suplimentară.

Introducerea mărimii auxiliare pentru produsele parțiale (înmulțirea de la dreapta la stânga), interpretată ca „eroare la nivelul ” și definită ca gradientul valorilor de intrare la nivelul :

Cum este un vector, de lungime egală cu numărul de noduri din nivelul , fiecare componentă este interpretată drept „costul atribuibil (valorii) nodului respectiv”.

Gradientul ponderilor din stratul este atunci:

Factorul este pentru că greutățile între nivelele și afectează proporțional cu intrările (activările): intrările sunt fixe, ponderile variază.

poate fi ușor calculat recursiv, mergând de la dreapta la stânga, după cum urmează:

Gradienții ponderilor pot fi astfel calculați folosind câteva înmulțiri de matrici pentru fiecare nivel; aceasta este backpropagation.

Se compară cu calculul naiv înainte (folosind pentru ilustrare):

În backpropagation există două diferențe esențiale:

  1. Calculul lui în termeni de evită evidenta dublare a înmulțirii straturilor și mai departe.
  2. Înmulțirea începând de la – propagarea erorii înapoi – înseamnă că la fiecare pas pur și simplu se înmulțește un vector () cu matricile de ponderi și derivatele activărilor . În schimb, înmulțirea înainte, pornind de la modificările de la un strat anterior, înseamnă că la fiecare înmulțire se înmulțește o matrice cu altă matrice. Aceasta este mult mai costisitoare și corespunde urmăririi tuturor căilor posibile ale unei modificări dintr-un singur strat până în stratul (pentru înmulțirea lui cu , cu înmulțiri suplimentare pentru derivatele activărilor), care calculează în mod inutil cantități intermediare ale modului în care modificările de pondere afectează valorile nodurilor ascunse.

Graful adjunct[modificare | modificare sursă]

Pentru grafuri mai generale și alte variații avansate, backpropagation poate fi înțeles în termeni de diferențiere automată⁠(d), unde backpropagation este un caz particular al acumulării inverse (sau „modului invers”).

Motivația[modificare | modificare sursă]

Obiectivul oricărui algoritm de învățare supravegheată⁠(d) este de a găsi o funcție care mapează cel mai bine un set de intrări la ieșirea lor corectă. Motivația pentru backpropagation este de a antrena o rețea neurală cu mai multe straturi, astfel încât să poată învăța reprezentările interne adecvate pentru a-i permite să învețe orice mapare arbitrară a intrării la ieșire.[18]

Învățarea ca problemă de optimizare[modificare | modificare sursă]

Pentru a înțelege calculul matematic al algoritmului de backpropagation, este nevoie mai întâi de dezvoltarea unei intuiții despre relația dintre produsul real al unui neuron și rezultatul corect pentru un anumit exemplu de antrenament. Fie o rețea neurală simplă cu două unități de intrare, o unitate de ieșire și fără unități ascunse și în care fiecare neuron utilizează o ieșire liniară (spre deosebire de majoritatea lucrărilor pe rețelele neurale, în care maparea de la intrări la ieșiri este neliniară)[f] care este suma ponderată a intrărilor sale.

O rețea neurală simplă cu două unități de intrare (fiecare cu o singură intrare) și o unitate de ieșire (cu două intrări)

Inițial, înainte de antrenare, ponderile pot fi stabilite aleatoriu. Apoi neuronul învață din exemplele de antrenare⁠(d), care în acest caz constau dintr-o mulțime de tupluri⁠(d) unde și sunt intrările rețelei și t este ieșirea corectă (ieșirea pe care rețeaua ar trebui să o producă când primește acele intrări, la momentul antrenării). Când primește la intrare și , rețeaua inițială va calcula o ieșire y care probabil diferă de t (dat fiind că ponderile sunt aleatorii). O funcție de cost este utilizată pentru măsurarea discrepanței dintre ieșirea așteptată t și ieșirea calculată y. Pentru problemele de analiză de regresie, eroarea pătrată poate fi folosită ca funcție de cost, dar pentru clasificare⁠(d) se poate folosi entropia încrucișată categorială⁠(d).

De exemplu, fie o problemă de regresie folosind eroarea pătrată ca funcție de cost:

unde E este discrepanța sau eroarea.

Fie rețeaua pe un singur caz de antrenare: . Astfel, intrările și sunt 1 și, respectiv, 1, iar ieșirea corectă t este 0. Acum, dacă este reprezentată relația dintre ieșirea rețelei y pe axa orizontală și eroarea E pe axa verticală, rezultatul este o parabolă. Minimul parabolei corespunde ieșirii y care minimizează eroarea E. Pentru un singur caz de antrenament, minimul atinge și axa orizontală, ceea ce înseamnă că eroarea va fi zero și rețeaua poate produce o ieșire y care se potrivește exact cu ieșirea țintă t. Prin urmare, problema mapării intrărilor la ieșiri poate fi redusă la o problemă de optimizare⁠(d) a găsirii unei funcții care va produce eroarea minimă.

Suprafața de eroare a unui neuron liniar pentru un singur caz de antrenament

Ieșirea unui neuron depinde însă de suma ponderată a tuturor intrărilor sale:

Unde și sunt ponderile conexiunii de la unitățile de intrare la unitatea de ieșire. Prin urmare, eroarea depinde și de ponderile de intrare ale neuronului, care este în cele din urmă ceea ce trebuie schimbat în rețea pentru a permite învățarea.

În acest exemplu, la injectarea datelor de antrenare , funcția de cost devine

Atunci, funcția de cost ia forma unui cilindru parabolic cu baza îndreptată de-a lungul dreptei . Deoarece toate mulțimile de ponderi care satisfac minimizează funcția de cost, în acest caz sunt necesare constrângeri suplimentare pentru a converge către o soluție unică. Constrângerile suplimentare ar putea fi generate fie prin stabilirea unor condiții specifice pentru ponderi, fie prin injectarea de date suplimentare de antrenare.

Un algoritm utilizat în mod obișnuit pentru a găsi mulțimea de ponderi care minimizează eroarea este descreșterea gradientului⁠(d). Prin backpropagation, se calculează cea mai abruptă direcție de descreștere a funcției de cost față de ponderile sinaptice actuale. Ponderile pot fi apoi modificate pe cea mai abruptă direcție de descreștere, iar eroarea este redusă la minimum într-un mod eficient.

Derivare[modificare | modificare sursă]

cu

unde

este costul pentru ieșirea și valoarea așteptată ,
este rezultatul așteptat pentru un eșantion de antrenare și
este ieșirea reală a neuronului de ieșire.

Pentru fiecare neuron , ieșirea sa este definită ca

unde funcția de activare⁠(d) este neliniară⁠(d) și diferențiabilă în regiunea de activare (ReLU nu este diferențiabilă într-un punct). O funcție de activare folosită istoric este funcția logistică⁠(d):

care are o derivată convenabilă:

Prin urmare, derivata în raport cu poate fi calculată dacă se cunosc toate derivatele în raport cu ieșirile ale stratului următor – cele mai apropiate de neuronul de ieșire. Dacă vreunul dintre neuroni din mulțimea nu este conectat la neuronul , atunci ar fi independent de , iar derivata parțială corespunzătoare sub însumare s-ar reduce la 0.

Găsirea derivatei erorii[modificare | modificare sursă]

Diagrama unei rețele neurale artificiale care ilustrează notația folosită aici

Calculul derivatei parțiale a erorii în raport cu o pondere se face folosind regula lanțului⁠(d) de două ori:

 

 

 

 

(Eq. 4)

În ultimul factor din partea dreaptă a celor de mai sus, un singur termen din sumă, , depinde de , astfel încât

 

 

 

 

(Eq. 5)

Dacă neuronul se află în primul strat după stratul de intrare, este doar .

Intrarea a unui neuron este suma ponderată a ieșirilor a neuronilor anteriori. Dacă neuronul se află în primul strat după stratul de intrare, atunci ale stratului de intrare sunt pur și simplu intrările la rețea. Numărul de unități de intrare către neuron este . Variabila denotă ponderea dintre neuronul din stratului anterior și neuronul din stratului curent.

care pentru funcția de activare logistică⁠(d)

Acesta este motivul pentru care backpropagation necesită ca funcția de activare să fie diferențiabilă. (Cu toate acestea, funcția de activare ReLU⁠(d), care este nediferențiabilă în 0, a devenit destul de populară, de exemplu în AlexNet⁠(d))

Primul factor este simplu de evaluat dacă neuronul se află în stratul de ieșire, pentru că atunci și

Dacă jumătate din pătratul erorii este folosit ca funcție de cost, o putem rescrie ca

Dacă însă se află într-un strat interior arbitrar al rețelei, metoda de găsire a derivatei în raport cu este mai puțin evidentă.

Considerând o funcție, intrările fiind toți neuronii care primesc intrare de la neuronul ,

și luând derivata totală⁠(d) în raport cu , se obține o expresie recursivă pentru derivată:

Înlocuind Eq. 2, Eq. 3 Eq.4 și Eq. 5 în Eq. 1 se obține:

Metoda descreșterii de gradient implică calculul derivatei funcției de cost în raport cu ponderile rețelei. Aceasta se face în mod normal utilizând backpropagation. Presupunând un neuron de ieșire,[g] funcția de eroare pătrată este

dacă este funcția logistică, iar eroarea este pătratul erorii:

Pentru a actualiza ponderea folosind descreșterea gradientului, trebuie aleasă o rată de învățare, . Modificarea ponderii trebuie să reflecte impactul asupra lui al unei creșteri sau scăderi a lui . Dacă , atunci o creștere a lui va face să crească  ; invers, dacă , o creștere a lui va face să scadă . Noul se adaugă la ponderea veche, iar produsul dintre rata de învățare și gradient, înmulțit cu garantează că se schimbă într-un mod care scade întotdeauna . Cu alte cuvinte, în ecuația imediat de mai jos, îl schimbă întotdeauna pe în așa fel încât să se reducă:

Descreșterea gradientului de ordinul doi[modificare | modificare sursă]

Folosind o matrice Hessiană⁠(d) de derivate de ordinul doi ale funcției de eroare, algoritmul Levenberg-Marquardt⁠(d) converge adesea mai rapid decât descreșterea gradientului de ordinul întâi, mai ales când topologia funcției de eroare este complicată.[19][20] De asemenea, el poate găsi soluții cu un număr mai mic de noduri, cu care alte metode ar putea să nu conveargă.[20] Hessiana poate fi aproximată prin matricea de informații Fisher⁠(d).[21]

Funcția de cost[modificare | modificare sursă]

Funcția de cost este o funcție care mapează valorile uneia sau mai multor variabile pe un număr real reprezentând intuitiv un „cost” asociat cu acele valori. Pentru backpropagation, funcția de cost calculează diferența dintre ieșirea rețelei și rezultatul așteptat, după ce un exemplu de antrenare s-a propagat prin rețea.

Ipoteze[modificare | modificare sursă]

Expresia matematică a funcției de cost trebuie să îndeplinească două condiții pentru ca ea să poată fi utilizată în backpropagation. Prima este că poate fi scrisă ca o medie a funcțiilor de eroare , pentru exemple individuale de antrenare, . Motivul pentru această ipoteză este că algoritmul backpropagation calculează gradientul funcției de eroare pentru un singur exemplu de antrenare, care trebuie generalizat la funcția de eroare generală. A doua presupunere este că poate fi scrisă în funcție de ieșirile din rețeaua neurală.

Exemplu de funcție de cost[modificare | modificare sursă]

Fie vectori în .

Se alege o funcție de eroare care măsoară diferența dintre două ieșiri. Alegerea standard este pătratul distanței euclidiene dintre vectori și :

Limitări[modificare | modificare sursă]

Descreșterea gradientului poate găsi un minim local în locul minimului global.
  • Descreșterea gradientului din backpropagation nu garantează că va găsi minimul global al funcției de eroare, ci doar un minim local; de asemenea, are probleme la traversarea platourilor⁠(d) din peisajul funcțiilor de eroare. Această problemă, cauzată de neconvexitatea⁠(d) funcțiilor de eroare din rețelele neurale, a fost mult timp considerată a fi un dezavantaj major, dar Yann LeCun⁠(d) et al. susțin că în multe probleme practice, nu este.[22]
  • Învățarea prin backpropagation nu necesită normalizarea vectorilor de intrare; totuși, normalizarea ar putea îmbunătăți performanța.[23]
  • Backpropagation necesită ca derivatele funcțiilor de activare să fie cunoscute în momentul proiectării rețelei.

Istorie[modificare | modificare sursă]

Precursori[modificare | modificare sursă]

Backpropagation a fost derivată în mod repetat, deoarece este în esență o aplicare eficientă a regulii lanțului⁠(d) (enunțată în premieră de Gottfried Wilhelm Leibniz în 1676[1][24]) asupra rețelelor neurale.

Terminologia „corectare a erorilor prin backpropagation” a fost introdusă în 1962 de Frank Rosenblatt⁠(d), dar el nu știa cum să implementeze acest lucru.[25] În orice caz, el a studiat doar neuronii ale căror ieșiri erau niveluri discrete, care aveau doar derivate zero, făcând backpropagation imposibil.

Precursorii lui backpropagation au apărut în teoria controlului optim⁠(d) încă din anii 1950. Yann LeCun⁠(d) et al. creditează lucrările din anii 1950 a lui Pontreaghin⁠(d) și alții, în teoria controlului optim, în special metoda stării adjuncte⁠(d), ca fiind o versiune în timp continuu a lui backpropagation.[26] Hecht-Nielsen⁠(d)[27] creditează algoritmul Robbins–Monro⁠(d) (1951) și Applied Optimal Control (1969) a lui Arthur Bryson⁠(d) și Yu-Chi Ho⁠(d) ca ceva ce anticipa backpropagation. Alți precursori au fost Henry J. Kelley⁠(d) 1960, [10] și Arthur E. Bryson⁠(d) (1961).[11] În 1962, Stuart Dreyfus⁠(d) a publicat un calcul mai simplu bazată doar pe regula lanțului⁠(d).[28][29][30] În 1973, el adapta parametrii controllerelor proporțional cu gradienții de eroare.[31] Spre deosebire de backpropagation modern, acești precursori foloseau calcule standard cu matricea jacobiană de la o etapă la cea anterioară, fără a aborda legăturile directe în mai multe etape și nici potențialele câștiguri suplimentare de eficiență datorate dispersității rețelei.

Algoritmul de învățare ADALINE⁠(d) (1960) a fost o descreștere de gradient cu funcția de cost pătratul erorii pentru un singur strat. Primul perceptron multistrat⁠(d) (MLP) cu mai mult de un strat antrenat prin descreșterea de gradient stochastică⁠(d)[13] a fost publicat în 1967 de Shun'ichi Amari⁠(d).[32][9] MLP avea 5 straturi, din care 2 straturi puteau fi învățate, și a învățat să clasifice modele care nu sunt separabile liniar.[9]

Backpropagation modern[modificare | modificare sursă]

Backpropagation modern a fost publicat pentru prima dată de Seppo Linnainmaa⁠(d) ca „mod invers de diferențiere automată⁠(d)” (1970)[2] pentru rețele discrete conectate de funcții diferențiabile imbricate.[3][4]

În 1982, Paul Werbos⁠(d) a aplicat backpropagation la MLP-uri în modul care a devenit standard.[33][34] Werbos descria într-un interviu cum a dezvoltat backpropagation. În 1971, în timpul lucrării sale de doctorat, el a dezvoltat backpropagation pentru a matematiciza „fluxul de energie psihică” al lui Freud. S-a confruntat cu dificultăți repetate în publicarea lucrării, reușind abia în 1981.[35]

Prin preajma lui 1982,[35]:376 David E. Rumelhart⁠(d) a dezvoltat independent[36]:252 backpropagation și a predat algoritmul celor din cercul său de cercetare. El nu cita lucrări anterioare, deoarece nu le cunoștea. A publicat algoritmul mai întâi într-o lucrare din 1985, apoi, într-un articol din Nature din 1986, a descris o analiză experimentală a tehnicii.[15] Aceste lucrări au devenit foarte citate, au contribuit la popularizarea lui backpropagation și au coincis cu renașterea interesului de cercetare în rețelele neurale în anii 1980.[18][37][38]

În 1985, metoda a fost descrisă și de David Parker.[39] Yann LeCun⁠(d) a propus o formă alternativă de backpropagation pentru rețelele neurale în teza sa de doctorat din 1987.[40]

Descreșterea gradientului a avut nevoie de o perioadă considerabilă de timp pentru a ajunge la acceptare. Unele dintre obiecțiile inițiale au fost: că nu existau garanții că descreșterea gradientului poate atinge un minim global, ci doar un minim local; că neuronii erau „cunoscuți” de fiziologi ca producând semnale discrete (0/1), nu continue, iar cu semnale discrete, nu există nici un gradient de luat. Vezi interviul cu Geoffrey Hinton⁠(d).[35]

Primele succese[modificare | modificare sursă]

La acceptare au contribuit mai multe aplicații de antrenare a rețelelor neurale prin backpropagation, uneori atingând popularitate în afara cercurilor de cercetare.

În 1987, NETtalk⁠(d) a învățat să convertească textul în limba engleză în pronunție. Sejnowski a încercat să-l antreneze atât cu backpropagation, cât și cu mașina Boltzmann, dar a constatat că backpropagation funcționează mult mai rapid, așa că l-a folosit pentru varianta finală de NETtalk.[35](p324) Programul NETtalk a avut un mare succes și a apărut în emisiunea ''Today''⁠(d).[41]

În 1989, Dean A. Pomerleau a publicat ALVINN, o rețea neurală antrenată să conducă autonom vehicule⁠(d) folosind backpropagation.[42]

LeNet⁠(d), publicat în 1989, recunoștea codurile poștale scrise de mână.

În 1992, TD-Gammon⁠(d) a atins nivelul unui jucător uman de table. Era un agent de învățare cu întârire, cu o rețea neurală cu două straturi, antrenată prin backpropagation.[43]

În 1993, Eric Wan a câștigat un concurs internațional de recunoaștere a șabloanelor cu backpropagation.[6][44]

După backpropagation[modificare | modificare sursă]

În anii 2000 a pierdut din popularitate, dar a revenit în anii 2010, beneficiind de sisteme de calcul ieftine și puternice bazate pe GPU-uri. A fost mai ales cazul în domeniul recunoașterii vocale, vederii automate⁠(d), prelucrării limbajului natural și cercetării învățării structurii limbajului (în care a fost folosită pentru a explica o varietate de fenomene legate de învățarea primei[45] și celei de-a doua limbi[46]).[47]

Backpropagation a fost sugerat pentru a explica componentele ERP⁠(d) ale creierului uman, cum ar fi N400⁠(d) și P600⁠(d).[48]

În 2023, un algoritm de backpropagation a fost implementat pe un procesor fotonic de către o echipă de la Universitatea Stanford.[49]

Note de completare[modificare | modificare sursă]

  1. ^ Aceasta rezultă din Nielsen (2015), și înseamnă că înmulțirea (la stânga) cu matricea corespunde convertirii valorilor de ieșire ale stratului în valori de intrare ale stratului : coloanele corespund coordonatelor de intrare, rândurile corespund coordonatelor de ieșire.
  2. ^ Secțiunea se bazează pe și rezumă Nielsen (2015).
  3. ^ Derivata funcției de cost este un Covector⁠(d), deoarece funcția de cost este o funcție cu valori scalare de mai multe variabile.
  4. ^ Funcția de activare se aplică fiecărui nod în parte, deci derivata ei este doar matricea diagonală a derivatei fiecărui nod. Aceasta se reprezintă adesea ca produsul Hadamard cu vectorul derivatelor, notat cu , care este matematic identic dar se potrivește mai bine cu reprezentarea internă a derivatelor ca vectori în loc de matrice diagonală.
  5. ^ Întrucât multiplicarea matricilor este liniară, derivata ei este doar matricea: .
  6. ^ Se poate observa că rețelele neurale multistrat folosesc funcții de activare neliniare, astfel că exemplul cu neuroni liniari pare obscur. Chiar dacă însă suprafațele de erori ale rețelelor multistrat sunt mai complicate, local acestea pot fi aproximate cu un paraboloid. Neuronii liniari sunt folosiți, deci, pentru simplitate și ușurință de învățare.
  7. ^ Pot fi mai mulți neuroni de ieșire, caz în care eroarea este norma la pătrat a vectorului de diferențe.

Note bibliografice[modificare | modificare sursă]

  1. ^ a b Leibniz, Gottfried Wilhelm Freiherr von (). The Early Mathematical Manuscripts of Leibniz: Translated from the Latin Texts Published by Carl Immanuel Gerhardt with Critical and Historical Notes (Leibniz published the chain rule in a 1676 memoir) (în engleză). Open court publishing Company. p. 90. ISBN 9780598818461. 
  2. ^ a b Linnainmaa, Seppo. The representation of the cumulative rounding error of an algorithm as a Taylor expansion of the local rounding errors (Teză) (în finlandeză). University of Helsinki. 
  3. ^ a b Linnainmaa, Seppo (). „Taylor expansion of the accumulated rounding error”. BIT Numerical Mathematics. 16 (2): 146–160. doi:10.1007/bf01931367. 
  4. ^ a b Griewank, Andreas (). „Who Invented the Reverse Mode of Differentiation?”. Optimization Stories. Documenta Matematica, Extra Volume ISMP. pp. 389–400. 
  5. ^ Griewank, Andreas; Walther, Andrea (). Evaluating Derivatives: Principles and Techniques of Algorithmic Differentiation, Second Edition. SIAM. ISBN 978-0-89871-776-1. 
  6. ^ a b Schmidhuber, Jürgen (). „Deep learning in neural networks: An overview”. Neural Networks. 61: 85–117. doi:10.1016/j.neunet.2014.09.003. PMID 25462637. 
  7. ^ Schmidhuber, Jürgen (). „Deep Learning”. Scholarpedia. 10 (11): 32832. Bibcode:2015SchpJ..1032832S. doi:10.4249/scholarpedia.32832. 
  8. ^ Rosenblatt, Frank (). Principles of Neurodynamics: Perceptrons and the Theory of Brain Mechanisms Cornell Aeronautical Laboratory. Report no. VG-1196-G-8 Report (Cornell Aeronautical Laboratory). Spartan. pp. Page XIII Table of contents, Page 292 "13.3 Back–Propagating Error Correction Procedures", Page 301 "figure 39 BACK–PROPAGATING ERROR–CORRECTION EXPERIMENTS". 
  9. ^ a b c d Un robot va completa această citare în curând. Clic aici pentru a trece mai în față arXiv:[1].
  10. ^ a b c Kelley, Henry J. (). „Gradient theory of optimal flight paths”. ARS Journal. 30 (10): 947–954. doi:10.2514/8.5282. 
  11. ^ a b Bryson, Arthur E. (). „A gradient method for optimizing multi-stage allocation processes”. Proceedings of the Harvard Univ. Symposium on digital computers and their applications, 3–6 April 1961. Cambridge: Harvard University Press. OCLC 498866871. 
  12. ^ Goodfellow, Bengio & Courville 2016, p. 214.
  13. ^ a b Robbins, H.; Monro, S. (). „A Stochastic Approximation Method”. The Annals of Mathematical Statistics. 22 (3): 400. doi:10.1214/aoms/1177729586. 
  14. ^ Goodfellow, Bengio & Courville 2016, p. 200. , "The term back-propagation is often misunderstood as meaning the whole learning algorithm for multilayer neural networks. Backpropagation refers only to the method for computing the gradient, while other algorithms, such as stochastic gradient descent, is used to perform learning using this gradient."
  15. ^ a b Rumelhart; Hinton; Williams (). „Learning representations by back-propagating errors” (PDF). Nature. 323 (6088): 533–536. Bibcode:1986Natur.323..533R. doi:10.1038/323533a0. 
  16. ^ Ramachandran. „Searching for Activation Functions”. arXiv:1710.05941Accesibil gratuit. 
  17. ^ Misra. „Mish: A Self Regularized Non-Monotonic Activation Function”. arXiv:1908.08681Accesibil gratuit. 
  18. ^ a b Rumelhart, David E.; Hinton, Geoffrey E.; Williams, Ronald J. (). „Learning representations by back-propagating errors”. Nature. 323 (6088): 533–536. Bibcode:1986Natur.323..533R. doi:10.1038/323533a0. 
  19. ^ Tan, Hong Hui; Lim, King Han (). „Review of second-order optimization techniques in artificial neural networks backpropagation”. IOP Conference Series: Materials Science and Engineering. 495 (1): 012003. Bibcode:2019MS&E..495a2003T. doi:10.1088/1757-899X/495/1/012003. 
  20. ^ a b Wiliamowski, Bogdan; Yu, Hao (iunie 2010). „Improved Computation for Levenberg–Marquardt Training” (PDF). IEEE Transactions on Neural Networks and Learning Systems. 21 (6). 
  21. ^ Martens, James (august 2020). „New Insights and Perspectives on the Natural Gradient Method”. Journal of Machine Learning Research (21). 
  22. ^ LeCun, Yann; Bengio, Yoshua; Hinton, Geoffrey (). „Deep learning”. Nature. 521 (7553): 436–444. Bibcode:2015Natur.521..436L. doi:10.1038/nature14539. PMID 26017442. 
  23. ^ Buckland, Matt; Collins, Mark (). AI Techniques for Game Programming. Boston: Premier Press. ISBN 1-931841-08-X. 
  24. ^ Rodríguez, Omar Hernández; López Fernández, Jorge M. (). „A Semiotic Reflection on the Didactics of the Chain Rule”. The Mathematics Enthusiast. 7 (2): 321–332. doi:10.54870/1551-3440.1191. Accesat în . 
  25. ^ Rosenblatt, Frank (). Principles of Neurodynamics. Spartan, New York. pp. 287–298. 
  26. ^ LeCun, Yann, et al. "A theoretical framework for back-propagation." Proceedings of the 1988 connectionist models summer school. Vol. 1. 1988.
  27. ^ Hecht-Nielsen, Robert (). Neurocomputing. Internet Archive. Reading, Mass. : Addison-Wesley Pub. Co. pp. 124–125. ISBN 978-0-201-09355-1. 
  28. ^ Dreyfus, Stuart (). „The numerical solution of variational problems”. Journal of Mathematical Analysis and Applications. 5 (1): 30–45. doi:10.1016/0022-247x(62)90004-5. 
  29. ^ Dreyfus, Stuart E. (). „Artificial Neural Networks, Back Propagation, and the Kelley-Bryson Gradient Procedure”. Journal of Guidance, Control, and Dynamics. 13 (5): 926–928. Bibcode:1990JGCD...13..926D. doi:10.2514/3.25422. 
  30. ^ Mizutani, Eiji; Dreyfus, Stuart; Nishio, Kenichi (iulie 2000). „On derivation of MLP backpropagation from the Kelley-Bryson optimal-control gradient formula and its application” (PDF). Proceedings of the IEEE International Joint Conference on Neural Networks. 
  31. ^ Dreyfus, Stuart (). „The computational solution of optimal control problems with time lag”. IEEE Transactions on Automatic Control. 18 (4): 383–385. doi:10.1109/tac.1973.1100330. 
  32. ^ Amari, Shun'ichi (). „A theory of adaptive pattern classifier”. IEEE Transactions. EC (16): 279–307. 
  33. ^ Werbos, Paul (). „Applications of advances in nonlinear sensitivity analysis” (PDF). System modeling and optimization. Springer. pp. 762–770. Accesat în . 
  34. ^ Werbos, Paul J. (). The Roots of Backpropagation : From Ordered Derivatives to Neural Networks and Political Forecasting. New York: John Wiley & Sons. ISBN 0-471-59897-6. 
  35. ^ a b c d Anderson, James A.; Rosenfeld, ed. (). Talking Nets: An Oral History of Neural Networks (în engleză). The MIT Press. doi:10.7551/mitpress/6626.003.0016. ISBN 978-0-262-26715-1. 
  36. ^ Olazaran Rodriguez, Jose Miguel. A historical sociology of neural network research. PhD Dissertation. University of Edinburgh, 1991.
  37. ^ Rumelhart, David E.; Hinton, Geoffrey E.; Williams, Ronald J. (). „8. Learning Internal Representations by Error Propagation”. În Rumelhart, David E.; McClelland, James L. Parallel Distributed Processing : Explorations in the Microstructure of Cognition. 1 : Foundations. Cambridge: MIT Press. ISBN 0-262-18120-7. 
  38. ^ Alpaydin, Ethem (). Introduction to Machine Learning. MIT Press. ISBN 978-0-262-01243-0. 
  39. ^ Hertz, John (). Introduction to the theory of neural computation. Krogh, Anders., Palmer, Richard G. Redwood City, Calif.: Addison-Wesley. p. 8. ISBN 0-201-50395-6. OCLC 21522159. 
  40. ^ Le Cun, Yann (). Modèles connexionnistes de l'apprentissage (Teză). Paris, France: Université Pierre et Marie Curie. 
  41. ^ Sejnowski, Terrence J. (). The deep learning revolution. Cambridge, Massachusetts London, England: The MIT Press. ISBN 978-0-262-03803-4. 
  42. ^ Pomerleau, Dean A. (). „ALVINN: An Autonomous Land Vehicle in a Neural Network”. Advances in Neural Information Processing Systems. Morgan-Kaufmann. 1. 
  43. ^ Sutton, Richard S.; Barto, Andrew G. (). „11.1 TD-Gammon”. Reinforcement Learning: An Introduction (ed. 2nd). Cambridge, MA: MIT Press. 
  44. ^ Wan, Eric A. (). „Time Series Prediction by Using a Connectionist Network with Internal Delay Lines”. În Weigend, Andreas S.; Gershenfeld, Neil A. Time Series Prediction : Forecasting the Future and Understanding the Past. Proceedings of the NATO Advanced Research Workshop on Comparative Time Series Analysis. 15. Reading: Addison-Wesley. pp. 195–217. ISBN 0-201-62601-2. 
  45. ^ Chang, Franklin; Dell, Gary S.; Bock, Kathryn (). „Becoming syntactic”. Psychological Review. 113 (2): 234–272. doi:10.1037/0033-295x.113.2.234. PMID 16637761. 
  46. ^ Janciauskas, Marius; Chang, Franklin (). „Input and Age-Dependent Variation in Second Language Learning: A Connectionist Account”. Cognitive Science. 42 (Suppl Suppl 2): 519–554. doi:10.1111/cogs.12519. PMC 6001481Accesibil gratuit. PMID 28744901. 
  47. ^ „Decoding the Power of Backpropagation: A Deep Dive into Advanced Neural Network Techniques”. janbasktraining.com (în engleză). 
  48. ^ Fitz, Hartmut; Chang, Franklin (). „Language ERPs reflect learning through prediction error propagation”. Cognitive Psychology (în engleză). 111: 15–52. doi:10.1016/j.cogpsych.2019.03.002. PMID 30921626. 
  49. ^ „Photonic Chips Curb AI Training's Energy Appetite - IEEE Spectrum”. spectrum.ieee.org (în engleză). Accesat în . 

Lectură suplimentară[modificare | modificare sursă]

Legături externe[modificare | modificare sursă]