Fundamentele AI
Ce este Backpropagation?
Ce este Backpropagation?
Sistemele de învățare profundă sunt capabile să învețe modele extrem de complexe, iar ele realizează acest lucru prin ajustarea greutăților. Cum sunt ajustate exact greutățile unei rețele neuronale profunde? Ele sunt ajustate prin un proces numit backpropagation. Fără backpropagation, rețelele neuronale profunde nu ar fi capabile să efectueze sarcini precum recunoașterea imaginilor și interpretarea limbajului natural. Înțelegerea modului în care funcționează backpropagation este esențială pentru înțelegerea rețelelor neuronale profunde în general, așa că să discutăm despre backpropagation și să vedem cum se utilizează procesul pentru a ajusta greutățile unei rețele.
Backpropagation poate fi dificil de înțeles, iar calculele utilizate pentru a efectua backpropagation pot fi destul de complexe. Acest articol va încerca să vă ofere o înțelegere intuitivă a backpropagation, folosind puțină matematică complexă. Cu toate acestea, o discuție despre matematica din spatele backpropagation este necesară.
Scopul Backpropagation
Să începem prin a defini scopul backpropagation. Greutățile unei rețele neuronale profunde reprezintă puterea conexiunilor dintre unitățile unei rețele neuronale. Când rețeaua neuronală este stabilită, se fac presupuneri despre modul în care unitățile dintr-un strat sunt conectate la straturile alăturate. Pe măsură ce datele trec prin rețeaua neuronală, greutățile sunt calculate și se fac presupuneri. Când datele ajung la stratul final al rețelei, se face o previziune despre modul în care caracteristicile sunt legate de clasele din setul de date. Diferența dintre valorile previzionate și valorile reale este eroarea/pierderea, iar scopul backpropagation este de a reduce pierderea. Acest lucru se realizează prin ajustarea greutăților rețelei, făcând presupunerile mai asemănătoare cu relațiile reale dintre caracteristicile de intrare.
Antrenarea unei rețele neuronale profunde
Înainte de a se efectua backpropagation pe o rețea neuronală, trebuie efectuată trecerea regulată/înainte a rețelei neuronale. Când se creează o rețea neuronală, se initializează un set de greutăți. Valoarea greutăților va fi modificată pe măsură ce rețeaua este antrenată. Trecerea înainte a rețelei neuronale poate fi concepută ca trei pași distincti: activarea neuronului, transferul neuronului și propagarea înainte.
Când se antrenează o rețea neuronală profundă, trebuie să se utilizeze multiple funcții matematice. Neuronii dintr-o rețea neuronală profundă sunt alcătuiți din datele de intrare și o funcție de activare, care determină valoarea necesară pentru a activa nodul. Valoarea de activare a unui neuron este calculată cu mai multe componente, fiind o sumă ponderată a intrărilor. Greutățile și valorile de intrare depind de indicele nodurilor utilizate pentru a calcula activarea. O altă valoare trebuie luată în considerare la calculul valorii de activare, o valoare de bias. Valorile de bias nu se modifică, așa că nu sunt multiplicate împreună cu greutatea și intrările, ci sunt doar adăugate. Toate acestea înseamnă că următoarea ecuație poate fi utilizată pentru a calcula valoarea de activare:
Activare = sumă(greutate * intrare) + bias
După ce neuronul este activat, se utilizează o funcție de activare pentru a determina ce va fi ieșirea reală a neuronului. Funcțiile de activare diferite sunt optime pentru sarcini de învățare diferite, dar funcțiile de activare utilizate în mod obișnuit includ funcția sigmoid, funcția Tanh și funcția ReLU.
Odată ce ieșirile neuronului sunt calculate prin executarea valorii de activare prin funcția de activare dorită, se efectuează propagarea înainte. Propagarea înainte nu este altceva decât luarea ieșirilor unui strat și transformarea lor în intrări pentru stratul următor. Noile intrări sunt apoi utilizate pentru a calcula noile funcții de activare, iar ieșirea acestei operațiuni este transmisă stratului următor. Acest proces continuă până la sfârșitul rețelei neuronale.
Backpropagation în rețea
Procesul de backpropagation ia deciziile finale ale unei treceri de antrenare a modelului și apoi determină erorile din aceste decizii. Erorile sunt calculate prin contrastarea ieșirilor/deciziilor rețelei și ieșirilor dorite/previzionate ale rețelei.
Odată ce erorile din deciziile rețelei au fost calculate, aceste informații sunt propagate înapoi prin rețea și parametrii rețelei sunt modificați pe parcurs. Metoda utilizată pentru a actualiza greutățile rețelei se bazează pe calcul, în special pe regula lanțului. Cu toate acestea, o înțelegere a calculului nu este necesară pentru a înțelege ideea din spatele backpropagation. Pur și simplu știți că atunci când o valoare de ieșire este furnizată de la un neuron, panta valorii de ieșire este calculată cu o funcție de transfer, producând o ieșire derivată. Când se efectuează backpropagation, eroarea pentru un neuron specific este calculată în funcție de următoarea formulă:
eroare = (ieșire_previzionată – ieșire_reală) * panta valorii de ieșire a neuronului
Când se operează pe neuronii din stratul de ieșire, valoarea clasei este utilizată ca valoare previzionată. După ce eroarea a fost calculată, eroarea este utilizată ca intrare pentru neuronii din stratul ascuns, ceea ce înseamnă că eroarea pentru acest strat ascuns este eroarea ponderată a neuronilor din stratul de ieșire. Calculul erorilor se deplasează înapoi prin rețea de-a lungul greutăților rețelei.
După ce erorile pentru rețea au fost calculate, greutățile din rețea trebuie actualizate. Așa cum s-a menționat, calculul erorii implică determinarea pantei valorii de ieșire. După ce panta a fost calculată, se poate utiliza un proces numit coborâre gradient pentru a ajusta greutățile rețelei. Un gradient este o pantă, a cărei înclinație poate fi măsurată. Panta este calculată prin reprezentarea “y peste” sau “creșterea” peste “alergarea”. În cazul rețelei neuronale și al ratei erorii, “y” este eroarea calculată, în timp ce “x” este parametrii rețelei. Parametrii rețelei au o relație cu valorile erorii calculate, iar pe măsură ce greutățile rețelei sunt ajustate, rata erorii crește sau scade.
“Coborârea gradientului” este procesul de actualizare a greutăților astfel încât rata erorii să scadă. Backpropagation este utilizat pentru a prezice relația dintre parametrii rețelei neuronale și rata erorii, ceea ce pregătește rețeaua pentru coborârea gradientului. Antrenarea unei rețele cu coborârea gradientului implică calculul greutăților prin propagarea înainte, propagarea înapoi a erorii și apoi actualizarea greutăților rețelei.












