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ő.
- inicializálja a $ W $ súlyokat (véletlenszerű kis értékek)
- kiszámítjuk a $ E (h (X, W), C) $ hibát
- ha az eredmény kielégítő, akkor a munka vége
- kiszámítjuk a veszteség gradiens gradiense: $ \ nabla E (h (X, W), C) $
- kiszámítjuk a paraméterek változását: $ \ Delta W = \ eta \ cdot \ nabla E $
- javítjuk a paramétereket: $ W: = W- \ Delta W $
- átmenet a 2. tételre
Í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.- közvetlen átvitel: számolja ki az összes réteg neuronjai $ s $ állapotát és a hálózat kimenetét
- kiszámítja a kimeneti réteg $ \ delta: = \ partial E / \ partial y $ értékeit
- 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
- 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.
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 \
$ \ 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.- inicializálja a $ W $ súlyokat (véletlenszerű kis értékek)
- inicializálja a $ \ Delta W $ súlyok változásának kezdeti értékét nulla értékekkel
- 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
- ha az eredmény kielégítő, akkor elvégezzük a végső tesztet és a munka végét
- véletlenszerűen válasszon egy $ (X, C) _L $ részhalmazt a képzési készletből
- kiszámítjuk a $ \ nabla E $ veszteség függvény gradiensét a kiválasztott részhalmazon
- kiszámítjuk a paraméterek változását: $ \ Delta W: = \ eta \ cdot (\ nabla E + \ rho \ cdot W) + \ mu \ cdot \ Delta W $
- javítjuk a paramétereket: $ W: = W- \ Delta W $
- állítsa be a $ \ eta $ tanulási arányt
- átmenet a 3. tételre
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 \
A nyomatékparaméter a következő. $$ \ mu = \ left \
$ 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 \
$ \ 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 \
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
$ \ 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
$ \ 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