Gradiens backpragation
A statisztikákban a gradiens backpragation egy módszer a hibagradiens kiszámítására az ideghálózat egyes neuronjainál , az utolsó rétegtől az elsőig. Visszaélésszerű módon a gradiens hátteresítésének technikáját gyakran a hibák javításának hagyományos algoritmusának nevezzük a gradiens kiszámítása alapján a backpropagationnak köszönhetően, és ezt a módszert mutatjuk be itt. Valójában a hibák kijavítása más módszerekkel is elvégezhető, különös tekintettel a második derivált kiszámítására. Ez a technika a hibák kijavítását jelenti azon elemek fontossága szerint, amelyek pontosan részt vettek e hibák megvalósításában. Neurális hálózatok esetében a nagy hibát előidéző szinaptikus súlyok lényegesen módosulnak, mint a marginális hibát generáló súlyok.
Ez az elv a gradiens algoritmus típusú módszerek alapja , amelyeket hatékonyan alkalmaznak többrétegű neurális hálózatokban, például többrétegű perceptronokban . A gradiens algoritmus célja az iteratív konvergálás a szinaptikus súlyok optimalizált konfigurációja felé. Ez az állapot lehet az optimalizálandó függvény helyi minimuma, és ideális esetben ennek a függvénynek a globális minimumja (az úgynevezett költségfüggvény ).
Normális esetben a költségfüggvény nem lineáris a szinaptikus súlyokhoz képest. Alsó határa van, és az edzés során bizonyos óvintézkedésekkel az optimalizálási eljárások végül stabil konfigurációhoz vezetnek az ideghálózaton belül.
Történelmi
A színátmenetes szaporítási módszerek már 1975-ben (Werbos), majd 1985-ben (Parker és LeCun ) voltak a kommunikáció témája , de Rumelhart, Hinton és Williams 1986-os munkája váltotta ki az őrület valódi kezdetét ennek a gradiensnek. .
Használja felügyelt tanulásban
Abban az esetben, felügyelt tanulás , olyan adatot, amely az input a neurális hálózat és a neurális hálózat termel kimenettel. A kimenetek értéke függ az ideghálózat szerkezetéhez kapcsolódó paraméterektől: az idegsejtek közötti kapcsolatoktól, az aggregációs és aktiválási funkcióktól, valamint a szinaptikus súlyoktól.
Ezen kimenetek és a kívánt kimenetek közötti különbségek hibákat képeznek, amelyeket kijavítanak a backpropagation segítségével, majd megváltoztatják az ideghálózat súlyát. A hiba számszerűsítésének módja az elvégzendő tanulás típusától függően változhat. Ha ezt a lépést többször alkalmazza, a hiba általában csökken, és a hálózat jobb előrejelzést kínál. Előfordulhat azonban, hogy nem tud megúszni egy helyi minimumot, ezért általában hozzáadunk egy tehetetlenségi kifejezést (momentum) a backpropagation képlethez, hogy a gradiens algoritmus kiszabaduljon ezekből a lokális minimumokból.
Algoritmus
Az ideghálózatban lévő súlyokat először véletlenszerű értékekkel inicializálják. Ezután megvizsgálunk egy adatsort, amelyet a tanuláshoz felhasználunk. Minden mintának meg vannak a célértékei, amelyeket az ideghálózatnak végső soron meg kell jósolnia, amikor ugyanazzal a mintával mutatják be. Az algoritmus a következő lépéseket követi.
- Legyen egy minta, amelyet az ideghálózat bemeneténél és a mintához kért kimeneten mutatunk be .x→{\ displaystyle {\ vec {x}}}t→{\ displaystyle {\ vec {t}}}
- Mi terjednek a jel előre a rétegek a neurális hálózat :, a száma a réteget.xk(nem-1)↦xj(nem){\ displaystyle x_ {k} ^ {(n-1)} \ mapsto x_ {j} ^ {(n)}}nem{\ displaystyle n}
- Az előremenetel terjedését az aktivációs függvény , az aggregációs függvény (gyakran az idegsejt súlyai és bemenetei közötti ponttermék), valamint az idegsejt és az idegsejt közötti szinaptikus súlyok segítségével számítják ki . Ezután a jelölés megfordul: egyértelműen jelzi a férgek súlyát .g{\ displaystyle g}h{\ displaystyle h}w→jk{\ displaystyle {\ vec {w}} _ {jk}}xk(nem-1){\ displaystyle x_ {k} ^ {(n-1)}}xj(nem){\ displaystyle x_ {j} ^ {(n)}}w→jk{\ displaystyle {\ vec {w}} _ {jk}}k{\ displaystyle k}j{\ displaystyle j}
xj(nem)=g(nem)(hj(nem))=g(nem)(∑kwjk(nem)xk(nem-1)){\ displaystyle x_ {j} ^ {(n)} = g ^ {(n)} (h_ {j} ^ {(n)}) = g ^ {(n)} (\ sum _ {k} w_ { jk} ^ {(n)} x_ {k} ^ {(n-1)})}}- Amikor az előremenő terjedés befejeződött, az eredményt a kimeneten kapjuk meg .y→{\ displaystyle {\ vec {y}}}
- Ezután kiszámítják a hálózat által adott kimenet és a minta kimeneténél kívánt vektor közötti hibát . A kimeneti réteg minden idegsejtjére kiszámoljuk (g 'g deriváltja):y→{\ displaystyle {\ vec {y}}}t→{\ displaystyle {\ vec {t}}}én{\ displaystyle i}
eénsorténe=g′(hénsorténe)(yén-tén){\ displaystyle e_ {i} ^ {output} = g '(h_ {i} ^ {output}) (y_ {i} -t_ {i})}- A hibát visszafelé terjesztjük a következő képlet segítségével:eén(nem)↦ej(nem-1){\ displaystyle e_ {i} ^ {(n)} \ mapsto e_ {j} ^ {(n-1)}}
ej(nem-1)=g′(nem-1)(hj(nem-1))∑énwénj(nem)eén(nem){\ displaystyle e_ {j} ^ {(n-1)} = g '^ {(n-1)} (h_ {j} ^ {(n-1)}) \ sum _ {i} w_ {ij} ^ {(n)} e_ {i} ^ {(n)}}
jegyzet:
eén(nem)=eénsorténe=(yén-tén)∂yén∂hén(nem){\ displaystyle e_ {i} ^ {(n)} = e_ {i} ^ {output} = (y_ {i} -t_ {i}) {\ frac {\ részleges y_ {i}} {\ részleges h_ { i} ^ {(n)}}}}
Demonstráció
A az energia, hogy minimalizálni kell:
formájában :
Az ugyanolyan módszerrel a parciális deriváltja , kapjuk:
iterációjával az algoritmus akár a réteg , jutunk:
Látjuk, hogy meghatározásával szekvenciája , mint tettük ennek segítségével könnyedén megszerezhetjük az energia származékát a kimenettől távol eső idegsejt szinaptikus súlyaihoz viszonyítva .
E{\ displaystyle E}E=12∑én(yén-tén)2{\ displaystyle E = {\ frac {1} {2}} \ sum _ {i} (y_ {i} -t_ {i}) ^ {2}}∂E∂w=∂E∂y∂y∂h∂h∂w{\ displaystyle {\ részleges E \ over \ részleges w} = {\ részleges E \ át \ részleges y} {\ részleges y \ felett \ részleges h} {\ részleges h \ át \ részleges w}}∂E∂wnál nélb(l)=∑én(yén-tén)g′(nem)(hén(nem))∑kwénk(nem)∂xk(nem-1)∂wnál nélb(l){\ displaystyle {\ frac {\ részleges E} {\ részleges w_ {ab} ^ {(l)}}} = = összeg _ {i} (y_ {i} -t_ {i}) g '^ {(n )} (h_ {i} ^ {(n)}) \ sum _ {k} w_ {ik} ^ {(n)} {\ frac {\ részleges x_ {k} ^ {(n-1)}} { \ részleges w_ {ab} ^ {(l)}}}}
∂E∂wnál nélb(l)=∑k∂xk(nem-1)∂wnál nélb(l)∑énwénk(nem)g′(nem)(hén(nem))(yén-tén)⏟eén(nem){\ displaystyle {\ frac {\ részleges E} {\ részleges w_ {ab} ^ {(l)}}} = = összeg _ {k} {\ frac {\ részleges x_ {k} ^ {(n-1) }} {\ részleges w_ {ab} ^ {(l)}}} \ összeg _ {i} w_ {ik} ^ {(n)} \ alátét {g '^ {(n)} (h_ {i} ^ {(n)}) (y_ {i} -t_ {i})} _ {e_ {i} ^ {(n)}}}
∂E∂wnál nélb(l)=∑k∂xk(nem-1)∂wnál nélb(l)∑énwénk(nem)eén(nem){\ displaystyle {\ frac {\ részleges E} {\ részleges w_ {ab} ^ {(l)}}} = = összeg _ {k} {\ frac {\ részleges x_ {k} ^ {(n-1) }} {\ részleges w_ {ab} ^ {(l)}}} \ összeg _ {i} w_ {ik} ^ {(n)} e_ {i} ^ {(n)}}xk(nem-1){\ displaystyle x_ {k} ^ {(n-1)}}∂E∂wnál nélb(l)=∑k∂xk(nem-2)∂wnál nélb(l)∑énwénk(nem-1)eén(nem-1){\ displaystyle {\ frac {\ részleges E} {\ részleges w_ {ab} ^ {(l)}}} = = összeg _ {k} {\ frac {\ részleges x_ {k} ^ {(n-2) }} {\ részleges w_ {ab} ^ {(l)}}} \ összeg _ {i} w_ {ik} ^ {(n-1)} e_ {i} ^ {(n-1)}}l{\ displaystyle l}∂E∂wnál nélb(l)=∑k∂xk(l)∂wnál nélb(l)∑énwénk(l+1)eén(l+1)=xb(l-1)enál nél(l){\ displaystyle {\ frac {\ részleges E} {\ részleges w_ {ab} ^ {(l)}}} = = összeg _ {k} {\ frac {\ részleges x_ {k} ^ {(l)}} {\ részleges w_ {ab} ^ {(l)}}} \ összeg _ {i} w_ {ik} ^ {(l + 1)} e_ {i} ^ {(l + 1)} = x_ {b} ^ {(l-1)} e_ {a} ^ {(l)}}eén(l){\ displaystyle e_ {i} ^ {(l)}}nem-l{\ displaystyle nl}
- Frissítjük a súlyokat az összes rétegben:
wénj(l)=wénj(l)-λeén(l)xj(l-1){\ displaystyle w_ {ij} ^ {(l)} = w_ {ij} ^ {(l)} - \ lambda e_ {i} ^ {(l)} x_ {j} ^ {(l-1)}}hol van a tanulási ráta (kis nagyságrendű és 0,0 és 1,0 között).
λ{\ displaystyle \ lambda}
Végrehajtás
Az itt bemutatott algoritmus „online” típusú, vagyis a súlyok minden ideghálózatban bemutatott képzési mintára frissülnek. Egy másik módszert "kötegeltnek" hívnak, vagyis először kiszámoljuk az összes minta hibáit anélkül, hogy frissítenénk a súlyokat (hozzáadjuk a hibákat), és amikor az összes adatot egyszer továbbítottuk a hálózatban, akkor a backpropagationt a totális hiba. A dolgok ilyen módját (kötegelt) a sebesség és a konvergencia miatt előnyben részesítik.
Az algoritmus iteratív, és a korrekciót annyiszor alkalmazzák, ahányszor szükséges a jó előrejelzéshez. Azonban vigyázni kell arra a problémák overfitting kapcsolódó helytelen méretezése a hálózat, vagy túl kiterjedt képzés.
Tehetetlenség hozzáadása
A helyi minimum stabilizálásával kapcsolatos problémák elkerülése érdekében hozzá kell adni egy tehetetlenségi kifejezést (lendület). Ez lehetővé teszi a helyi minimumok elhagyását, amennyire csak lehetséges, és folytatja a hibafüggvény süllyedését. Minden egyes iterációnál a súlyváltozás megőrzi az előző változások információit. Ez a memóriahatás segít megelőzni a rezgéseket és felgyorsítja a hálózat optimalizálását. A korábban bemutatott súlymódosítási képlethez képest a tehetetlenséggel súlyok időbeli változása a következőket eredményezi:
t{\ displaystyle t}
wénj(l)(t)=wénj(l)(t-1)-αλeén(l)xj(l-1)+(1-α)Δwénj(l)(t-1){\ displaystyle w_ {ij} ^ {(l)} (t) = w_ {ij} ^ {(l)} (t-1) - \ alfa \ lambda e_ {i} ^ {(l)} x_ {j } ^ {(l-1)} + (1- \ alfa) \ Delta w_ {ij} ^ {(l)} (t-1)}a paraméter 0,0 és 1,0 közötti.
α{\ displaystyle \ alpha}
Biológiai hasonlat
Az idegrendszeri hálózatokban az információk visszaszaporításával egyenértékű biológiai jelenséget Stuart és munkatársai igazolták: ez idegsejtek szaporodása .
Megjegyzések és hivatkozások
-
Patrick van der Smagt, Bevezetés a neurális hálózatokba , 1996, 33. oldal.
-
(in) Greg Stuart Nelson Spruston , Bert Sakmann és Michael Häusser , " akciópotenciál- iniciáció és szaporítás az emlős CNS neuronjaiban " , Trends in Neuroscience , vol. 20, n o 3,1997 március, P. 125–131 ( DOI 10.1016 / S0166-2236 (96) 10075-8 , online olvasás , hozzáférés : 2019. november 7. )
<img src="https://fr.wikipedia.org/wiki/Special:CentralAutoLogin/start?type=1x1" alt="" title="" width="1" height="1" style="border: none; position: absolute;">