Despre metodele de gradient de formare a rețelelor neuronale multistrat de propagare directă

Partea 2: Metode de gradient de ordinul întâi.

Acest text este o continuare a articolului despre metodele de predare a rețelelor neuronale multistrat de propagare directă. Aici vom vorbi despre metodele de gradient de ordinul întâi de formare a clasificatorului.







1. Introducere.

În articolul precedent, am stabilit în mod oficial sarcina de a antrena clasificatorul $ h $ ca minimizare a funcției de pierdere în spațiul de greutăți. \ begin \ min_W E (h (X, W), C) \ label \ end

În continuare vom rezolva această problemă.

2. Metode de predare gradient de ordinul întâi

Pentru a rezolva problema (\ ref), vom folosi metode de optimizare a gradientului (prima ordine). Gradientul de $ \ nabla E (W) $ la punctul $ W $ este cea mai abruptă creșterea în consecință, pentru a minimiza funcția, trebuie să modificați parametrii în direcția opusă gradientului. Această abordare se numește metoda de coborâre a gradientului. Schema generală a unei astfel de instruiri este după cum urmează.

  1. inițializați greutățile $ W $ (valori aleatorii mici)
  2. calculăm eroarea $ E (h (X, W), C) $
  3. dacă rezultatul este satisfăcător decât sfârșitul lucrului
  4. vom calcula gradientul gradientului de pierdere: $ \ nabla E (h (X, W), C) $
  5. vom calcula modificarea parametrilor: $ \ Delta W = \ eta \ cdot \ nabla E $
  6. am corectat parametrii: $ W: = W- \ Delta W $
  7. trecerea la punctul 2
Parametrul $ \ eta $ este numit rata de învățare. determină mărimea pasului procesului de optimizare și alegerea sa este o problemă separată, în cel mai simplu caz este dată ca o constantă $ 0 \ lt \ eta \ lt 1 $.

Astfel, următoarea problemă care trebuie rezolvată pentru realizarea de rețele neuronale de formare este de a găsi o modalitate de a calcula pierderea funcției de gradient de $ \ nabla E (h (X, W), C) $.

3. Metodă de eroare a propagării spatelui.

Pentru a rezolva problema de optimizare (\ ref) metoda gradient de coborâre, descrisă în secțiunea anterioară, trebuie să găsim o modalitate de a calcula pierderea funcției de gradient de $ \ nabla E $, care este un vector de derivate parțiale. $$ \ nabla E (W) = \ stânga [\ frac \ ldots, \ frac \ right] $$ unde $ k $ - numărul total de greutăți de rețea.

unde $ $ E - pierderea funcției, $ w_ $ - din cauza neuronale greutate $ i $ si $ j $, $ y_j $ - numărul de ieșire neuron $ j $, $ s_j $ - starea de neuron $ j $.

Considerăm separat părțile relației ($ \ ref $).

$ \ Parțial s_j / \ w_ partiala $ - $ i $ randament neuron anterior -lea (neuron cu privire la $ j $) strat, această parte este definită în mod explicit,

$ \ parțială y_j / \ parțială s_j $ este valoarea derivatului funcției de activare din argumentul său pentru neuronul $ j $, această parte poate fi ușor calculată,

$ \ partial E / \ partial y_j $ este eroarea numarului de neuroni $ j $, aici sunt cateva dificultati. Valorile de eroare sunt definite explicit numai pentru neuronii stratului de ieșire, dar despre straturile ascunse? Aici vom fi ajutați de metoda, care se numește - metoda propagării înapoi a erorii.

Esența sa constă în calcularea secvențială a erorilor straturilor ascunse cu ajutorul unor valori de eroare ale stratului de ieșire, adică Valorile de eroare se propagă prin rețea în direcția opusă de ieșire la intrare.
Aici nu vom deduce derivarea formulelor, vom da imediat rezultatul - o formulă recursivă pentru calcularea valorii lui $ \ partial E / \ partial y $.

pentru stratul de ieșire $$ \ delta_i: = \ frac $$ pentru strat ascuns \ începe \ delta_i: = \ frac \ cdot \ sum \ limits_j \ delta_j w_ \ label \ end unde $ \ parțial y / \ parțial s $ - valoare derivat funcția de activare prin argumentul său.

Algoritmul de calcul al gradientului funcției de pierdere prin metoda propagării înapoi a erorii este după cum urmează.
  1. trecere directă: calcula stările neuronilor $ s $ ale tuturor straturilor și ieșirea rețelei
  2. calculați valorile $ \ delta: = \ parțial E / \ parțial y $ pentru stratul de ieșire
  3. trecere inversă: succesiv de la sfârșitul la început pentru toate straturile ascunse se calculează $ \ delta $ prin formula ($ \ ref $)
  4. Pentru fiecare strat, calculați valoarea gradientului $ \ nabla E = \ parțială E / \ parțială W = y \ cdot \ delta ^ T $,
    unde $ y $ este vectorul de intrare al stratului, $ \ delta $ este vectorul de eroare la ieșirea stratului.
Apoi, vom analiza diverse modificări ale metodei descendenței gradientului pentru instruirea rețelelor neuronale și implementarea acestora.

4. Metoda de coborâre a gradientului

Mai sus, am prezentat deja schema metodei de coborâre a gradientului, aici va fi prezentată versiunea sa puțin mai complicată, acest algoritm este fundamental pentru algoritmii descriși în secțiunile următoare.

Metoda de coborâre mai abrupte în forma „pură“ este „blocat“ în minimele locale de pierdere $ E $ a funcției, pentru a face față cu acest lucru, vom folosi câteva completări pentru această metodă. Prima adăugire este aplicarea strategiei mini-lot descrise mai sus, iar a doua este așa-numitele "momente".

Metoda momentelor poate fi comparat cu comportamentul mingii grele, care se rostogolesc pe panta la cel mai apropiat nisinei capabil să se deplaseze la o anumită distanță în sus prin inerție, dobândind astfel de minimele locale. În mod oficial, se pare că este un add-on pentru schimbarea greutăților rețelei. $$ \ Delta W_t: = \ eta \ cdot \ nabla E + \ mu \ cdot \ Delta W_ $$ în cazul în care $ \ eta $ - învățare factor de rata
$ \ nabla E $ este gradientul funcției de pierdere,
$ \ mu $ este coeficientul de cuplu,
$ \ Delta W_ $ - schimbarea greutăților la iterația anterioară.

O altă îmbunătățire a metodei de optimizare va fi utilizarea regularizării. Regularizarea "impune o pedeapsă" asupra creșterii excesive a valorilor greutăților, aceasta ajută la lupta cu recalificarea. Formal, se pare că este un alt aditiv pentru modificarea greutății rețelei. $$ \ Delta W_t: = \ eta \ cdot \ left (\ nabla E + \ rho \ cdot W_ \ dreapta) + \ mu \ cdot \ Delta W_ $$ în cazul în care $ \ eta $ - învățare factor de rata
$ \ nabla E $ este gradientul funcției de pierdere,
$ \ mu $ este coeficientul de cuplu,
$ \ Delta W_ $ - schimbarea greutăților la iterația anterioară,
$ \ rho $ este coeficientul de regularizare,
$ W_ $ este greutatea la iterația anterioară.

De asemenea, vom schimba factorul de viteză de învățare $ \ eta $ la fiecare iterație $ t $, în funcție de modificarea erorii $ E $ după cum urmează.

$ \ eta_t = \ left \ \ alpha \ cdot \ eta_ . \ Delta E \ gt 0 \\ \ beta \ cdot \ eta_ . - \ end \ right. $$ unde $ \ eta_0 = 0.01 $ este valoarea inițială a ratei de învățare,
$ \ Delta E = E_t - \ gamma \ cdot E_ $ - modificarea erorii,
$ \ alpha = 0.99, \ \ beta = 1.01, \\ gamma = 1.01 $ sunt constantele

Astfel, cu o creștere semnificativă a erorii de $ E $, pasul de modificare a parametrilor $ \ eta $ scade, în caz contrar se va majora pasul $ \ eta $. Această adăugire poate crește rata de convergență a algoritmului.

Colectăm toate împreună, algoritmul nostru are următorul formular.





  1. inițializați greutățile $ W $ (valori aleatorii mici)
  2. inițializați cu zero valoarea inițială a modificării greutăților $ \ Delta W $
  3. calculați eroarea $ E (h (X, W), C, W) $ și schimbați $ \ Delta E $ pe setul de comandă
  4. dacă rezultatul este satisfăcător, vom efectua testul final și sfârșitul lucrului
  5. alegeți aleatoriu un subset $ (X, C) _L $ din setul de antrenament
  6. vom calcula valoarea gradientului funcției de pierdere $ \ nabla E $ pentru subsetul ales
  7. Calculăm modificarea parametrilor: $ \ Delta W: = \ eta \ cdot (\ nabla E + \ rho \ cdot W) + \ mu \ cdot \ Delta W $
  8. am corectat parametrii: $ W: = W- \ Delta W $
  9. ajustați rata de învățare $ \ eta $
  10. trecerea la punctul 3
Apoi, construiți implementarea și vedeți cum funcționează.

5. Metoda quickProp

În această secțiune, vom lua în considerare modificarea metodei de coborâre a gradientului descrisă în secțiunea anterioară, numită rapidProp. Aceasta diferă de metoda de bază prin aceea că parametrul momentului $ \ mu $ și coeficientul de rată de învățare $ \ eta $ sunt setați individual pentru fiecare parametru. Modificarea parametrilor este descrisă de următoarea relație. $$ \ Delta W: = \ eta \ cdot (\ nabla E + \ rho \ cdot W) + \ mu \ cdot \ Delta W $$ unde $ \ rho $ - coeficientul de regularizare.

Parametrul vitezei de învățare se calculează după cum urmează. $$ \ eta = \ left \ \ eta_0 . (\ Delta W = 0) \ lor (- \ Delta W \ cdot S \ gt0) \\ 0 . - \ end \ right. $ $ \ eta_0 \ in (0.01. 0.6) $ este o constantă, $ S = \ nabla E + \ rho W $

Parametrul cuplului este după cum urmează. $$ \ mu = \ stânga \ \ mu_ . (\ beta \ gt \ mu_) \ lor (\ gamma \ lt 0) \\ \ beta . - \ end \ right. $$ unde $ \ mu_ = 1,75 $ este o constantă,
$ S = \ nabla E + \ rho W $,
$ \ beta = S (t) / (S (t-1) -S (t)) $
$ \ gamma = S \ cdot (- \ Delta W) \ cdot \ beta $

Apoi, construiți implementarea și vedeți cum funcționează.

6. Metoda rProp

În această secțiune, vom analiza modificarea metodei de coborâre a gradientului descrisă în secțiunea anterioară, numită rProp (propagarea înapoi a spiralei). În cazul rProp, momentele și regularizările nu sunt utilizate, se folosește o strategie simplă cu întregul lot. Un parametru cheie este parametrul vitezei de învățare $ \ eta $, este calculat pentru fiecare greutate individual. $ \ eta (t) = \ left \ min (\ eta_, a \ cdot \ eta (t-1)) . S \ gt0 \ max (\ eta_, b \ cdot \ eta (t-1)) . (T-1) . S = 0 \ end \ right. $ (t-1) \ cdot \ nabla E (t) $ este rezultatul valorilor gradientului la acest pas și la etapa anterioară,
$ \ eta_ = 50 \, \\ eta_ = 10 ^ \, \ a = 1,2 \, \ b = 0,5 $ sunt constantele

Schimbarea parametrilor este după cum urmează.

$$ \ Delta W_t: = \ eta \ cdot \ stânga (semn (\ nabla E) + \ rho \ cdot W_ \ dreapta) + \ mu \ cdot \ Delta W_ $$ unde $$ semn (x) = \ stângă \ -1 . x \ lt 0 \\ 0 . x = 0 \\ 1 . x \ gt 0 \ end \ right. $$

7. Metoda de gradient conjugat

În această secțiune vom analiza metoda gradientului conjugat. Particularitatea acestei metode este o alegere specială a direcției modificărilor parametrilor. Este aleasă în așa fel încât să fie ortogonală față de direcțiile anterioare. Schimbarea completă a greutăților este după cum urmează. $$ \ Delta W: = \ eta \ cdot (p + \ rho \ cdot W) + \ mu \ cdot \ Delta W $$ unde $ \ eta $ - raport de viteză de învățare,
$ p $ este direcția schimbării parametrilor,
$ \ mu $ este coeficientul de cuplu,
$ \ Delta W $ - schimbarea greutăților la iterația anterioară,
$ \ rho $ este coeficientul de regularizare,
$ W $ - greutățile la iterația anterioară.

În acest caz, coeficientul de viteză de învățare $ \ eta $ este ales la fiecare iterație, prin rezolvarea problemei de optimizare. $$ \ min_ \ eta E (\ Delta W (\ eta)) $$

Direcția de modificare a parametrilor este selectată după cum urmează. $$ p = \ nabla E + \ beta \ cdot p $$ Direcția inițială este aleasă ca $ p_0: = \ nabla E $.

Momentul cheie este calculul coeficientului de conjugare $ \ beta $. Acesta poate fi calculat în cel puțin două moduri diferite. Prima metodă este formula Fletcher-Reeves. $$ \ beta = \ frac ^ T \ cdot g_>; $$ A doua cale este formula Polaka-Ribiera. $$ \ beta = \ frac)> ^ T \ cdot g_>; $$ unde $ g = \ nabla E $ este gradientul funcției de pierdere la această iterație și la cele precedente.

Pentru a compensa metoda de calcul de eroare acumulată implică resetarea dublă direcție și anume ($ \ Beta: = 0 $, $ p: = \ nabla E $) la fiecare $ n $ cicluri, în cazul în care este selectat $ n $ în funcție de numărul de parametri W.

8. Metoda NAG (Gradientul Accelerat al lui Nesterov)

În această secțiune considerăm o modificare a metodei de gradient de coborâre NAG, aici gradientul este calculat în raport cu valoarea timpului deplasate spre echilibrul. $$ \ Delta W_t: = \ eta \ cdot \ left (\ nabla E (W_ + \ mu \ cdot \ Delta W_) + \ rho \ cdot W_ \ dreapta) + \ mu \ cdot \ Delta W_ $$ în cazul în care $ \ eta $ este rata de învățare,
$ \ nabla E $ este gradientul funcției de pierdere,
$ \ mu $ este coeficientul de cuplu,
$ \ Delta W_ $ - schimbarea greutăților la iterația anterioară,
$ \ rho $ este coeficientul de regularizare,
$ W_ $ este greutatea la iterația anterioară.

(I.Sutskever, J.Martens, G.Dahl, G.Hinton Cu privire la importanța inițializării și a impulsului în învățarea profundă)

9. Metoda AdaGrad (Adaptive Gradient)

Metoda AdaGrad ia în considerare istoricul valorilor de gradient după cum urmează. $$ g_t: = \ frac<\nabla E_t><\sqrt<\sum\limits_^t \nabla E_i^2>> $$ $$ \ Delta W_t: = \ eta \ cdot \ stânga (g_t + \ rho \ cdot W_ \ dreapta) + \ mu \ cdot \ Delta W_ $$ în cazul în care $ \ eta $ - învățare factor de rata
$ \ nabla E $ este gradientul funcției de pierdere,
$ \ mu $ este coeficientul de cuplu,
$ \ Delta W_ $ - schimbarea greutăților la iterația anterioară,
$ \ rho $ este coeficientul de regularizare,
$ W_ $ este greutatea la iterația anterioară.

(J.Duchi, E.Hazan, Y.Singer, Adaptive subgradient Metode de învățare online și Stochastic de optimizare)

10. Metoda AdaDelta

Metoda AdaDelta ia în considerare istoricul valorilor de gradient și istoricul modificării greutăților, după cum urmează. $$ S_t: = \ alpha \ cdot S_ + (1- \ alpha) \ cdot \ nabla E_t ^ 2 \; \ S_0: = 0 $$ $$ D_t: = \ beta \ cdot D_ + (1- \ beta) \ cdot \ Delta W_ ^ 2 \; \ D_0: = 0 $$ $ $ g_t: = \ frac<\sqrt><\sqrt> \ Cdot \ nabla E_t $$ $$ \ Delta W_t: = \ eta \ cdot \ stânga (g_t + \ rho \ cdot W_ \ dreapta) + \ mu \ cdot \ Delta W_ $$ în cazul în care $ \ eta $ - raport de viteză pregătire
$ \ nabla E $ este gradientul funcției de pierdere,
$ \ mu $ este coeficientul de cuplu,
$ \ Delta W_ $ - schimbarea greutăților la iterația anterioară,
$ \ rho $ este coeficientul de regularizare,
$ W_ $ este greutatea la iterația anterioară,
$ \ alpha = \ beta = 0,9 $

(M.Zeiler Adadelta: o metodă de învățare adaptivă)

11. Metoda Adam

Metoda Adam convertește gradientul după cum urmează. $$ S_t: = \ alpha \ cdot S_ + (1- \ alpha) \ cdot \ nabla E_t ^ 2 \; \ S_0: = 0 $$ $$ D_t: = \ beta \ cdot D_ + (1- \ beta) \ cdot \ nabla E_t \; \ D_0: = 0 $$ $ $ g_t: = \ frac \ cdot \ sqrt<\frac> $$ $$ \ Delta W_t: = \ eta \ cdot \ stânga (g_t + \ rho \ cdot W_ \ dreapta) + \ mu \ cdot \ Delta W_ $$ în cazul în care $ \ eta $ - învățare factor de rata
$ \ nabla E $ este gradientul funcției de pierdere,
$ \ mu $ este coeficientul de cuplu,
$ \ Delta W_ $ - schimbarea greutăților la iterația anterioară,
$ \ rho $ este coeficientul de regularizare,
$ W_ $ este greutatea la iterația anterioară,
$ \ alpha = 0.999, \ \ beta = 0,9 $

(Diederik P. Kingma, Jimmy Lei Ba Adam: o metodă de optimizare stochastică)

12. Punerea în aplicare.

În această secțiune, prezentăm implementările metodelor descrise mai sus. Le vom testa pe mai multe seturi de date - trei seturi de puncte (în două clase) și un set de fotografii cu numerele de la 0 la 9 pentru recunoaștere. Fiecare punct stabilit înainte de a începe procedura de formare împărțite aleator în trei părți: formare, control și de testare.

12.1 Primul set.

În continuare, prezentăm rezultatele diferitelor metode de predare.

Metodă de coborâre a gradientului. se va utiliza o rețea neuronală cu trei straturi de procesare: stratul de intrare neuron 2, primul tratament pat 20 neuroni la activarea tanh, al doilea strat de procesare de 20 de neuroni cu activare sigmoidă exponențială, al treilea strat - 2 neuron (numărul de clase) cu activare SOFTmax. Formarea a durat 2500 de epoci, rezultatele fiind prezentate mai jos.


Fig: istoricul modificării erorii p.1


Fig: istoricul modificării erorii, partea 2


Fig: rezultatul testului

Metoda gradientului conjugat. Vom folosi o rețea neuronală cu trei straturi de procesare: stratul de intrare neuron 2, primul pat de tratament 30 prin activarea neuronilor cu sigmoid exponențială, al doilea pat de tratament de 30 de neuroni la activarea relu, al treilea strat - 2 neuron (numărul de clase) cu activarea SOFTmax. Formarea a avut 100 de epoci, rezultatele fiind prezentate mai jos.


Fig: istoricul modificării erorii p.1


Figura: istoricul modificării erorii


Fig: rezultatul testului

Metoda rapidProp. va folosi va folosi o rețea neuronală cu trei straturi de procesare: stratul de intrare neuron 2, primul tratament pat 20 neuroni la tanh activare, al doilea strat de procesare de 20 de neuroni la activarea tanh, al treilea strat - 2 neuron (numărul de clase) cu activarea sigmoid exponențială. Instruirea a durat 3000 de epoci, rezultatele fiind prezentate mai jos.


Fig: istoricul modificării erorii p.1


Fig: istoricul modificării erorii, partea 2


Fig: rezultatul testului

Metoda rProp. Vom folosi o rețea neuronală cu trei straturi de procesare: stratul de intrare neuron 2, primul tratament pat 20 neuroni la tanh activare, al doilea strat de procesare de 20 de neuroni la activarea tanh, al treilea strat - 2 neuron (numărul de clase) cu activarea sigmoid exponențială. Formarea a avut 350 de epoci, rezultatele fiind prezentate mai jos.


Fig: istoricul modificării erorii p.1


Figura: istoricul modificării erorii


Fig: rezultatul testului







Trimiteți-le prietenilor: