A közvetlen szaporítással rendelkező többrétegű neurális hálózatok képződési módszereiről

2. rész: Első sorrendű gradiens módszerek.

Ez a szöveg folytatja a közvetlen szaporítás multilayer neurális hálózatait oktató módszerekről szóló cikk folytatását. Itt beszélünk a gradiens módszerekről az első osztályú osztályozó képzés.

1. Bevezetés.

Az előző cikkben hivatalosan meghatároztuk a $ h $ osztályozó képzését a veszteség függvény minimalizálása érdekében a súlyok térben. \ begin \ min_W E (h (X, W), C) \ címke \ vége

Ezután megoldjuk ezt a problémát.

2. Az elsõ osztályú gradiens tanítási módszerek

A probléma megoldásához (\ ref) a gradiensoptimalizálási módszereket alkalmazzuk (elsőrendű). A $ W $ $ függvénynek a $ \ $ E $ W $ függvény gradiense a legmeredekebb növekmény iránya, így minimalizálva a függvényt a paraméterek megváltoztatásához a gradienssel ellentétes irányba. Ezt a megközelítést a gradiens süllyedés módszerének nevezik. A képzés általános rendszere a következő.

  1. inicializálja a $ W $ súlyokat (véletlenszerű kis értékek)
  2. kiszámítjuk a $ E (h (X, W), C) $ hibát
  3. ha az eredmény kielégítő, akkor a munka vége
  4. kiszámítjuk a veszteség gradiens gradiense: $ \ nabla E (h (X, W), C) $
  5. kiszámítjuk a paraméterek változását: $ \ Delta W = \ eta \ cdot \ nabla E $
  6. javítjuk a paramétereket: $ W: = W- \ Delta W $
  7. átmenet a 2. tételre
A $ \ eta $ paramétert a tanulási aránynak nevezik. meghatározza az optimalizálási folyamat lépésméretét, és a választása különálló probléma, a legegyszerűbb esetben állandó $ 0 \ lt \ eta \ lt 1 $.

Így a következő feladat, amelyet meg kell oldani a neurális hálózat képzésének megvalósításához, megtalálni egy módot a $ \ nabla E (h (X, W), C) $ veszteség függvény gradiensének kiszámítására.

3. A hiba visszaadásának módja.

Az optimalizációs probléma megoldása (\ ref) az előző szakaszban leírt gradiens süllyedési módszer segítségével meg kell találnunk egy módot a $ \ nabla E $ veszteség függvény gradiensének kiszámítására, amely a részleges származékok vektora. $$ \ nabla E (W) = \ bal [\ frac \ ldots, \ frac \ right] $$ ahol $ k $ a hálózati súlyok teljes száma.

ahol $ E $ - funkciójának elvesztése, $ W_ $ - kellő súlyt neuronális $ i $ és $ j $, $ y_j $ - output neuron szám $ j $, $ s_j $ - állam a neuron $ j $.

A kapcsolat egyes részeit ($ \ ref $) külön-külön tekintjük.

$ \ partial s_j / \ részleges w_ $ az előző $ i $ -th neuron kimenetének (a neuron $ j $) rétegének kimenete, ez a rész kifejezett formában van meghatározva,

$ \ partial y_j / \ partial s_j $ az aktiváló függvény derivált értéke az neuron $ j $ argumentumától, ez a rész könnyen kiszámítható,

$ \ részleges E / \ részleges y_j $ a neuron $ j $ hibája, itt vannak nehézségek. A hibaértékeket kifejezetten csak a kimeneti réteg neuronjai határozzák meg, mi a helyzet a rejtett rétegekkel? Itt segíteni fog a módszer, amelyet úgynevezett - a hiba visszaadásának módja.

A lényege a rejtett rétegek hibáinak sorozatos kiszámítása a kimeneti réteg hiba-értékei, azaz a kimeneti réteg segítségével. A hibaértékek a hálózaton keresztül a kimenetről a bemenetre ellentétes irányban terjednek.
Itt nem származtatjuk a képletek származtatását, azonnal megadjuk az eredményt - egy rekurzív képlet a $ \ partial E / \ partial y $ értékének kiszámításához.

A kimeneti réteg $$ \ delta_i: = \ frac $$ rejtett réteg \ begin \ delta_i: = \ frac \ cdot \ sum \ limits_j \ delta_j W_ \ label \ end ahol $ \ részleges y / \ részleges s $ - deriváltakat az aktiválási függvény az argumentumával.

A veszteség függvény gradiensének kiszámításához a hiba visszaadása módszerével a következő algoritmust alkalmazzuk.
  1. közvetlen átvitel: számolja ki az összes réteg neuronjai $ s $ állapotát és a hálózat kimenetét
  2. kiszámítja a kimeneti réteg $ \ delta: = \ partial E / \ partial y $ értékeit
  3. fordított át: egymás után minden rejtett rétegről a végétől a kezdetig számítsd ki $ \ delta $ -ot a ($ \ ref $) képlet segítségével
  4. minden egyes réteg esetében számolja ki a $ \ nabla E = \ partial E / \ részleges W = y \ cdot \ delta ^ T $ gradiens értékét,
    ahol $ y $ a réteg bemeneti vektora, $ \ delta $ a réteg kilépési hibavektor.
Ezután megfontoljuk a gradiens süllyedési módszer különböző módosításait a neurális hálózatok képzésére és végrehajtására.

4. A gradiens süllyedés módszere

Fentebb már bemutattuk a gradiens süllyedés módszerének sémáját, itt bemutatjuk annak egy kicsit bonyolultabb verzióját, ez az algoritmus alapja a következő szakaszokban leírt algoritmusoknak.

A "tiszta" formájú gradiens-süllyedés módja "elakadhat" a $ E $ veszteségfunkció helyi minimumjaiból, ennek leküzdésére számos kiegészítést használunk ehhez a módszerhez. Az első kiegészítés a fent leírt mini-batch stratégia alkalmazása, a második az úgynevezett "pillanatok".

A pillanatok módszerét összehasonlíthatjuk egy nehéz labdával, amely a lejtőn a legközelebbi síkság felé haladva képes bizonyos távolságot felhúzni a tehetetlenségig, így a helyi minimumok közül választva. Formálisan úgy néz ki, mint egy kiegészítő a hálózati súlyok megváltoztatására. $$ \ Delta W_t: = \ eta \ cdot \ nabla E + \ mu \ cdot \ Delta W_ $ $ ahol $ \ eta $ a tanulás sebességi együtthatója,
$ \ nabla E $ a veszteség függvény gradiense,
$ \ mu $ a nyomaték-együttható,
$ \ Delta W_ $ - súlyváltozás az előző iterációnál.

Az optimalizációs módszer további javulása a szabályosodás alkalmazása lesz. A regularizálódás "büntetést szab" a súlyok túlzott mértékű növekedésére, ez segít a küzdelemben az átképzéssel. Formálisan úgy tűnik, egy másik adalék a hálózati súlyok megváltoztatásához. $$ \ Delta W_t: = \ eta \ cdot \ left (\ nabla E + \ Rho \ cdot W_ \ right) + \ mu \ cdot \ Delta W_ $$ ahol $ \ eta $ - tanulási sebesség faktor
$ \ nabla E $ a veszteség függvény gradiense,
$ \ mu $ a nyomaték-együttható,
$ \ Delta W_ $ - súlyváltozás az előző iterációnál,
$ \ rho $ a szabályozási együttható,
$ W_ $ az előző iteráció súlya.

A $ $ $ minden egyes iterációban a $ \ eta $ tanulási sebesség tényezőt is megváltoztatjuk a következő $ E $ hiba változásától függően.

$$ \ eta_t = \ left \ \ alpha \ cdot \ eta_ . \ Delta E \ gt 0 \\ \ bé \ cdot \ eta_ . - \ end \ right. $$ ahol $ \ eta_0 = 0.01 $ a tanulási arány kezdeti értéke,
$ \ Delta E = E_t - \ gamma \ cdot E_ $ - hibaváltás,
$ \ alpha = 0.99, \ \ beta = 1.01, \ \ gamma = 1.01 $ a konstansok

Így az $ E $ hiba jelentős növekedésével a $ \ eta $ paraméterek megváltoztatásának lépései csökkennek, különben a $ \ eta $ lépés növekszik. Ez a kiegészítés növelheti az algoritmus konvergenciájának sebességét.

Összegyűjtjük az összeset, algoritmusunk a következő formát veszi fel.
  1. inicializálja a $ W $ súlyokat (véletlenszerű kis értékek)
  2. inicializálja a $ \ Delta W $ súlyok változásának kezdeti értékét nulla értékekkel
  3. kiszámítja a $ E (h (X, W), C, W) $ hibát és változtassa meg a $ \ Delta E $ értéket a vezérlőegységen
  4. ha az eredmény kielégítő, akkor elvégezzük a végső tesztet és a munka végét
  5. véletlenszerűen válasszon egy $ (X, C) _L $ részhalmazt a képzési készletből
  6. kiszámítjuk a $ \ nabla E $ veszteség függvény gradiensét a kiválasztott részhalmazon
  7. kiszámítjuk a paraméterek változását: $ \ Delta W: = \ eta \ cdot (\ nabla E + \ rho \ cdot W) + \ mu \ cdot \ Delta W $
  8. javítjuk a paramétereket: $ W: = W- \ Delta W $
  9. állítsa be a $ \ eta $ tanulási arányt
  10. átmenet a 3. tételre
Ezután készítsd el a megvalósítást, és nézd meg, hogyan működik.

5. A quickProp módszer

Ebben a részben megnézzük az előző részben leírt gradiens süllyedési módszer módosítását, amelyet quickProp-nak nevezünk. Ez eltér az alapmódszertől, mivel a $ \ mu $ paraméter és a $ \ eta $ tanulási sebességi együttható egyenként állíthatók be minden paraméterhez. A paraméterek változását az alábbi összefüggés írja le. $$ \ Delta W: = \ eta \ cdot (\ nabla E + \ rho \ cdot W) + \ mu \ cdot \ Delta W $ $ ahol $ \ rho $ a szabályozási együttható.

A tanulási sebesség paramétere az alábbiak szerint kerül kiszámításra. $$ \ eta = \ left \ \ eta_0 . (\ Delta W = 0) \ lor (- \ Delta W \ cdot S \ gt 0) \\ 0 . - \ end \ right. $$ ahol $ \ eta_0 \ in (0.01. 0.6) $ egy állandó, $ S = \ nabla E + \ rho W $

A nyomatékparaméter a következő. $$ \ mu = \ left \ \ mu_ . (\ beta \ gt \ mu_) \ lor (\ gamma \ 0 0) \\ \ béta . - \ end \ right. $$ ahol $ \ mu_ = 1.75 $ állandó,
$ S = \ nabla E + \ rho W $,
$ \ beta = S (t) / (S (t-1) -S (t)) $
$ \ gamma = S \ cdot (- \ Delta W) \ cdot \ béta $

Ezután készítsd el a megvalósítást, és nézd meg, hogyan működik.

6. Az rProp módszer

Ebben a részben megvizsgáljuk az előző szakaszban leírt gradiens-leeresztési módszer módosítását, az rProp-ot (rugalmas hátsó szaporítás). Az rProp esetében a pillanatokat és a szabályozást nem használják, egyszerű teljes tételes stratégiát alkalmaznak. A legfontosabb paraméter a $ \ eta $ tanulási sebesség paraméter, minden egyes súlynál kiszámítható. $$ \ eta (t) = \ left \ min (\ eta_, a \ cdot \ eta (t-1)) . S \ gt0 \\ max (\ eta_, b \ cdot \ eta (t-1)) . S \ 0 \ \ \ eta (t-1) . S = 0 \ end \ right. $$ ahol $ S = \ nabla E (t-1) \ cdot \ nabla E (t) $ a gradiens értékekből származó termék ezen és az előző lépésben,
$ \ eta_ = 50 \, \\ eta_ = 10 ^ \, \ a = 1,2 \, \ b = 0,5 $ a konstansok

A paraméterek változása a következő.

$$ \ Delta W_t: = \ eta \ cdot \ left (jel (\ nabla E) + \ Rho \ cdot W_ \ right) + \ mu \ cdot \ Delta W_ $$ ahol $$ aláírására (x) = \ left \ -1 . x \ 0 0 \\ 0 . x = 0 \\ 1 . x \ gt 0 \ end \ jobb. $$

7. A konjugátum gradiens módszer

Ebben a részben megnézzük a konjugált gradiens módszerét. Ennek a módszernek a sajátossága a paraméterek változásának iránya. Olyan módon választják ki, hogy az az előző irányokhoz merőleges legyen. A teljes súlyváltozás a következő. $$ \ delta W: = \ eta \ cdot (p + \ rho \ cdot W) + \ mu \ cdot \ Delta W $ $ ahol $ \ eta $ a tanulás sebességi együtthatója,
$ p $ a paraméterváltozás iránya,
$ \ mu $ a nyomaték-együttható,
$ \ Delta W $ - súlyváltozás az előző iterációnál,
$ \ rho $ a szabályozási együttható,
$ W $ - az előző iteráció súlyai.

Ebben az esetben a $ \ eta $ tanulási sebességi együtthatót minden iterációnál kiválasztjuk az optimalizálási probléma megoldásával. $$ \ min_ \ eta E (\ Delta W (\ eta)) $$

A paraméterek megváltoztatásának iránya az alábbiak szerint van kiválasztva. $$ p = \ nabla E + \ béta \ cdot p $$ A kezdeti irányt $ p_0: = \ nabla E $ -ként választjuk ki.

A legfontosabb pillanat a $ \ beta $ konjugációs együttható kiszámítása. Számítható legalább két különböző módon. Az első módszer a Fletcher-Reeves formula. $$ \ beta = \ frac ^ T \ cdot g_>; $$ A második út a Polaka-Ribiera formula. $$ \ beta = \ frac)> ^ T \ cdot g_>; $$ ahol $ g = \ nabla E $ a veszteség függvény gradiense a fenti és az előző iterációknál.

A számítások felhalmozási hibájának kompenzálására az eljárás a konjugált irány visszaállítását jelenti, azaz ($ \ béta = 0 $, $ p: = \ nabla E $) minden $ n $ ciklusban, ahol $ n $ a W paraméterek számától függ.

8. NAG módszer (Nesterov gyorsított gradiens)

Ebben a részben figyelembe vesszük a NAG gradiens leeresztési módszer módosítását, itt a gradiens kiszámítása az érték által eltolódott súlyokhoz viszonyítva történik. $$ \ Delta W_t: = \ eta \ cdot \ left (\ nabla E (W_ + \ mu \ cdot \ Delta W_) + \ Rho \ cdot W_ \ right) + \ mu \ cdot \ Delta W_ $$ ahol $ \ eta $ a tanulás aránya,
$ \ nabla E $ a veszteség függvény gradiense,
$ \ mu $ a nyomaték-együttható,
$ \ Delta W_ $ - súlyváltozás az előző iterációnál,
$ \ rho $ a szabályozási együttható,
$ W_ $ az előző iteráció súlya.

(I.Sutskever, J.Martens, G.Dahl, G.Hinton Az inicializálás és a lendület fontossága a mélytanulásban)

9. Az AdaGrad módszer (Adaptive Gradient)

Az AdaGrad módszer a következőképpen veszi figyelembe a gradiens értékek történetét. $$ g_t: = \ frac<\nabla E_t><\sqrt<\sum\limits_^t \nabla E_i^2>> $$ $$ \ Delta W_t: = \ eta \ cdot \ left (g_t + \ Rho \ cdot W_ \ right) + \ mu \ cdot \ Delta W_ $$ ahol $ \ eta $ - tanulási sebesség faktor
$ \ nabla E $ a veszteség függvény gradiense,
$ \ mu $ a nyomaték-együttható,
$ \ Delta W_ $ - súlyváltozás az előző iterációnál,
$ \ rho $ a szabályozási együttható,
$ W_ $ az előző iteráció súlya.

(J. Duchi, E. Hazan, Y. Singer, Adaptív Subgradient Methods for Online Learning és Sztochasztikus Optimalizálás)

10. Az AdaDelta módszer

Az AdaDelta módszer figyelembe veszi a gradiens értékek történetét és a súlyváltozás történetét az alábbiak szerint. $$ 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 \ left (g_t + \ Rho \ cdot W_ \ right) + \ mu \ cdot \ Delta W_ $$ ahol $ \ eta $ - sebesség aránya edzés
$ \ nabla E $ a veszteség függvény gradiense,
$ \ mu $ a nyomaték-együttható,
$ \ Delta W_ $ - súlyváltozás az előző iterációnál,
$ \ rho $ a szabályozási együttható,
$ W_ $ az előző iteráció súlya,
$ \ alpha = \ béta = 0,9 $

(M.Zeiler Adadelta: adaptív tanulási sebesség módszer)

11. Módszer Adam

Az Ádám módszer a következőképpen alakítja át a gradienset. $$ 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 \ left (g_t + \ Rho \ cdot W_ \ right) + \ mu \ cdot \ Delta W_ $$ ahol $ \ eta $ - tanulási sebesség faktor
$ \ nabla E $ a veszteség függvény gradiense,
$ \ mu $ a nyomaték-együttható,
$ \ Delta W_ $ - súlyváltozás az előző iterációnál,
$ \ rho $ a szabályozási együttható,
$ W_ $ az előző iteráció súlya,
$ \ alpha = 0,999, \ \ béta = 0,9 $

(Diederik P. Kingma, Jimmy Lei Ba Adam: módszer sztochasztikus optimalizálásra)

12. Végrehajtás.

Ebben a részben bemutatjuk a fent leírt módszerek megvalósítását. Több adatkészleten is megvizsgáljuk őket - három pontot (két osztályban) és egy 0-9-es számjegyű képeket a felismeréshez. A képzési folyamat megkezdése előtt minden pontsorozat véletlenszerűen három részre van felosztva: képzés, ellenőrzés és tesztelés.

12.1 Első készlet.

Ezután bemutatjuk az eredményeket a különböző tanítási módszerek számára.

A gradiens süllyedés módszere. fogja használni a neurális hálózat három réteg feldolgozás: a bemeneti neuron réteget 2, az első kezelés ágy 20 neuronok aktiválása tanh, a második réteg feldolgozása 20 neuronok szigmoid aktivációs exponenciális, a harmadik réteg - 2 neuron (az osztályok száma) az aktiválással Softmax. A képzés 2500 korszakot vett igénybe, az eredményeket alább mutatjuk be.


Ábra: a hibaváltás története p.1


Ábra: a hibamódosítás előzményei


Ábra: vizsgálati eredmény

A konjugátum gradiens módszer. Fogjuk használni a neurális hálózat három réteg feldolgozás: a bemeneti neuron réteget 2, az első kezelés ágy 30 aktiválásával neuronok exponenciális szigmoid, a második kezelőágy 30 neuronok aktiválását relu, a harmadik réteg - 2 neuron (az osztályok száma) az aktiválással Softmax. A képzés 100 korszakot vett igénybe, az eredményeket az alábbiakban mutatjuk be.


Ábra: a hibaváltás története p.1


Ábra: a hibamódosítás előzményei, 2. rész


Ábra: vizsgálati eredmény

A quickProp módszer. fogja használni fogja használni a neurális hálózat három réteg feldolgozás: a bemeneti neuron réteget 2, az első kezelés ágy 20 neuronok aktiválása tanh, a második feldolgozó 20 réteg neuronok aktiválása tanh, harmadik réteg - 2 neuron (az osztályok száma) az exponenciális szigmoid aktiválást. A képzés 3000 pontot vett igénybe, az eredményeket az alábbiakban mutatjuk be.


Ábra: a hibaváltás története p.1


Ábra: a hibamódosítás előzményei


Ábra: vizsgálati eredmény

Az rProp módszer. Fogjuk használni a neurális hálózat három réteg feldolgozás: a bemeneti neuron réteget 2, az első kezelés ágy 20 neuronok aktiválása tanh, a második feldolgozó 20 réteg neuronok aktiválása tanh, harmadik réteg - 2 neuron (az osztályok száma) az exponenciális szigmoid aktiválást. A képzés 350 pontot vett igénybe, az eredményeket az alábbiakban mutatjuk be.


Ábra: a hibaváltás története p.1


Ábra: a hibamódosítás előzményei


Ábra: vizsgálati eredmény