A mesterséges neurális hálózat, mesterséges neuronháló (angolul artificial neural network, ANN) biológiai ihletésű szimuláció. Fő alkalmazási területe a gépi tanulás, melynek célja ezeknek a hálóknak a tanuló rendszerként történő gyakorlati alkalmazása. Gráfalapú modell, melyben rétegekbe rendezett mesterséges neuronok kommunikálnak egymással nemlineáris aktivációs függvényeken keresztül. A legalább három rétegbe rendezett, nemlineáris aktivációs függvényt használó neurális hálózat univerzális függvényapproximátor,Csáji Balázs Csanád (2001): Approximation with Artificial Neural Networks (Faculty of Sciences; Eötvös Loránd University, Hungary) a visszacsatolásokat, rekurrenciát tartalmazó architektúrák pedig Turing-teljességgel rendelkeznek, így képesek megoldani bármilyen problémát vagy futtatni bármilyen algoritmust, amit számítógép segítségével meg lehet oldani vagy futtatni lehet.H. T. Siegelmann–E. D. Sontag (1992): On The Computational Power Of Neural Nets
Tanításuk általában a hiba-visszaterjesztéssel (backpropagation of errors) kombinált gradiensereszkedéssel történik, de számos alternatív algoritmus is elérhető ezeken kívül.
Történetük A mesterséges neuron ma is használt modellje a Hebb-tanulásban és a küszöblogikában gyökerezi:, előbbi leírta, hogy a tanulás nem passzív folyamat, hanem a természetes ideghálózatban ideiglenesen vagy véglegesen bekövetkező biokémiai és fiziológiai változások összessége, az úgynevezett neuroplaszticitás, mely szerint az együtt tüzelő neuronok egymás iránt fogékonyabbak, egymás jelére érzékenyebbek lesznek.Hebb, D. (1949) The Organization of Behavior. New York: Wiley & Sons. A küszöblogika a neuron egyik első modellje, a neuront számítási egységként kezeli, melynek több bemenete és egy kimenete van (a biológiai neuron számos dendritjének és egyetlen axonjának analógiájára). A bemenetekhez egyedi súlyok tartoznak, melyekből lineáris kombinációval előállítható a neuron izgatottsága. Ha az izgatottság egy megadott küszöbértéket átlép, a neuron "tüzel", kimenete 1, különben 0.McCulloch, & Pitts. (1943). A LOGICAL CALCULUS OF THE IDEAS IMMANENT IN NERVOUS ACTIVITY. Bulletin of Mathematical Biophysics, Vol. 5. , 115-133. Ezt a neuronmodellt használta a Rosenblatt-perceptron, mely a 20. század közepén hatékony képfelismerő algoritmus volt.Rosenblatt, F. (1958). The Perceptron: A Probabilistic Model For Information Storage And Organization In The Brain. Psychological Review Vol. 65 (6), 386–408.
A perceptron hátránya, hogy kettőnél több réteg esetén a tanítása nehezen kivitelezhető, ugyanis azok a gradiensereszkedések, melyek egy veszteségfüggvényt próbálnak iteratív módon minimalizálni, és ehhez a függvény gradiensével számolnak, alkalmatlanak a nem differenciálható küszöblogika tanítására. Más tanító algoritmusok (pl. differenciál-evolúció, hegymászó algoritmus) pedig a gradiensereszkedéshez képest sokkal lassabban konvergálnak. A kettőnél több rétegű (rejtett rétegeket tartalmazó) perceptron esetében a rejtett réteg tanítása szintén egy nehéz probléma, akkor is, ha a küszöblogikát a modernebb szigmoid jellegű aktivációs függvényeket alkalmazó szigmoidneuronokra cseréljük. Egy évtizeddel később bebizonyították, hogy a többrétegű, küszöblogikán alapuló perceptron csupán lineáris döntési határ képzésére képes, függetlenül attól, hogy hány réteggel látják el azt.Minsky, M., & Papert, S. (1969). Perceptrons: An Introduction to Computational Geometry. Cambridge: The MIT Press. A leírt nehézségekből fakadóan a mesterséges intelligencia kutatásban beköszöntött egy kevéssé termékeny időszak.
A mesterséges intelligencia telét a hiba-visszaterjesztés algoritmus (backpropagation of errors) leírása törte meg, mely lehetővé tette a rejtett rétegeket tartalmazó, differenciálható aktivációs függvénnyel ellátott neurális hálózatok tanítását gradiensereszkedéssel. Az új felfedezés, a számítási kapacitás exponenciális növekedése és a videókártyák lineáris algebra gyorsítóinak általános célú felhasználhatósága (GPGPU) lehetővé tette új neurális architektúrák feltalálását és azok gyakorlati alkalmazását.
További fontosabb közlemények, architektúrák a teljesség igénye nélkül: LSTM (Hosszú-rövid távú memória): forradalmasította a visszacsatolásos (rekurrens) architekturákat, csökkentve a gradiens robbanás jelenség visszatartó hatását visszacsatolás alkalmazása esetén. Idősorok (pl. hang, szöveg, kézírás) analízisében használatos architektúra. CNN (Konvolúciós neurális hálózat): a képanalitikában használatos, filtereket képes megtanulni.LeCun, Yann; Léon Bottou; Yoshua Bengio; Patrick Haffner (1998). "Gradient-based learning applied to document recognition" (PDF). Proceedings of the IEEE. 86 (11): 2278–2324. doi:10.1109/5.726791. Retrieved October 7, 2016 ReLU (aktivációs függvény): először tette lehetővé, hogy felügyeletlen előtanítás alkalmazása nélkül tanítsanak mély neurális hálózatokat, kiküszöbölve a szigmoid aktivációs függvények okozta gradiens-robbanás és gradiens-elhalás jelenségeket.Xavier Glorot, Antoine Bordes and Yoshua Bengio (2011). Deep sparse rectifier neural networks (PDF). AISTATS. Adam (Adaptív lendület becslés): a gradiensereszkedést kiterjesztő tanító algoritmus, mely napjainkra lényegében felváltotta az eredeti optimalizálót.Kingma, D. P., & Ba, J. L. (2015). Adam: a Method for Stochastic Optimization. International Conference on Learning Representations, 1–13. https://arxiv.org/abs/1412.6980 GAN (Generatív párharc hálózat): két szembeállított neurális hálózat, generátor és diszkriminátor, az előbbi mintákat generál (pl. képeket), az utóbbi eldönti, hogy egy bemenetként átadott adat (kép) eredeti vagy a generátor által készített. A valóságoshoz megtévesztésig hasonló, de mégis egyedi minták (képek) létrehozására képes.Goodfellow, Ian; Pouget-Abadie, Jean; Mirza, Mehdi; Xu, Bing; Warde-Farley, David; Ozair, Sherjil; Courville, Aaron; Bengio, Joshua (2014). "Generative Adversarial Networks". arXiv:1406.2661 cs.LG.
Neuronrétegek A mesterséges neuron a neurális hálózat elemi számítási egysége, a biológiai neuron erősen leegyszerűsített modellje. A neuronokat általában nem önmagukban modellezzük, hanem sok ugyanolyan neuront egy rétegként értelmezünk, ekkor a legtöbb neurális számítás felírható mátrixműveletekként. A pontos művelet, amelyet egy adott réteg végez adja a réteg típusát, a hálózatban alkalmazott rétegek száma, típusa és sorrendje az adott neurális hálózat architektúrája.
Példák Zárójelben az implementációkban, programkönyvtárakban gyakran használt neve a rétegnek. Teljesen kapcsolt réteg (Fully Connected, Dense, Linear Combination): előállítja a bemenetek és egy tárolt súlymátrix lineáris kombinációját: , ahol X a bemeneti mátrix, W a súlymátrix, b egy opcionális eltolósúly-vektor. Egyszerű rekurrens réteg (Recurrent, Simple recurrent): bemenetként visszakapja a saját kimenetét (az adatból képzett bemenet mellett): , ahol X a bemeneti mátrix, Wx és bx a hozzá tartozó súlyok, Ht-1 az előző kimenet, Wh, bh a hozzá tartozó súlyok. Konvolúciós réteg (ConvXD, ahol X a bemenet dimenzióját jelöli, pl. Conv2D képek esetében): nincs teljes kapcsolás, a neuronok csak egy részét kapják a bemenetnek. Lényegében kereszt-korrelációt végez a neuronok súlymátrixával a bemeneti mátrixon: , ahol a kereszt-korrelációt jelöli. Aktivációs réteg (Activation): a bemenetként kapott mátrixra vagy tenzorra elemenként hív egy aktivációs függvényt: .
A neurális hálózatok felépítése
A neuronrétegek anatómiája bélyegkép|jobbra|3-4-2 neuronszámú, három rétegű, teljesen kapcsolt mesterséges neurális hálózat. Különböző színekkel a hálózat fő részei kerültek megjelölésre. A neurális hálózatok rendszerint legalább három funkcionálisan és strukturálisan jól elkülöníthető részből állnak: Bementi réteg: módosítatlanul továbbítja a bemenetként átadott adatot a hálózat többi részének. Egy neurális hálózatnak több bemeneti rétege is lehet, ha elágazásokat is tartalmaz. A neuronok számát a bemeneti adat dimenzionalitása, alakja határozza meg. Rejtett rétegek: a bemenet és a kimenet között helyezkednek el, feladatuk az információ transzformációja, kódolása, illetve absztrakciók, köztes reprezentációk létrehozása. Számuk, típusuk, egymáshoz való kapcsolódásuk sorrendje és a bennük lévő neuronok száma változtatható paraméterei a hálózatnak. Kimeneti réteg: A kimeneti függvényt és a kimeneti neuronok számát az adott probléma jellege határozza meg. Osztályozás esetében jellemzően annyi kimeneti neuron van, ahány kategória áll a rendelkezésre, a kimeneti függvény pedig az adott osztályba tartozás valószínűségét hivatott reprezentálni a kategóriák között. Ilyen jellegű kimenet képzésére alkalmas a szigmoid és a SoftMax függvény. Regressziós probléma esetén kimeneti függvényt nem alkalmazunk, az utolsó rejtett réteg kimenetének lineáris kombinációját számítjuk ki. Egy neurális hálózatnak elméletileg több kimenete is lehet, ebben az esetben minden kimenethez társítani kell egy veszteségfüggvényt (lásd alább). A kernel trükköt alkalmazó tanuló algoritmusoktól vett analógiával kijelenthetjük, hogy neurális hálózatok esetében a rejtett rétegek egy konfigurálható, tanulható kernelként működnek, ahol a kimeneti réteg az osztályozó.
Aktivációs függvények A neuronrétegek között sokféle aktivációs függvényt alkalmazhatunk. Ezeket jellemzően elemenként értékeljük ki a bemeneti mátrixra, egyes különleges esetekben a bemenet többi elemével is számolunk. Szigmoid vagy logisztikus függvény: . rejtett rétegek aktivációs függvényeként háttérbe szorult, mert szélsőségesen negatív vagy pozitív bemenet esetén a gradiense nagyon kis szám, ami csökkenti a tanítás hatékonyságát (gradiens elhalást idéz elő). 0 és 1 közé szorítja a bemenetet, így kimeneti rétegekben még használatos kétkategóriás osztályozás esetén és többkategóriás, többcímkés kategorizálásnál, ahol az egyes kategóriába való tartozás valószínűségét fejezhetjük ki vele. Hiperbolikus tangens: , a szigmoidhoz hasonló aktivációs függvény, melyet jellemzően rejtett rétegekben alkalmaznak. Mára modernebb függvények jórészt felváltották. A bemenetet -1 és +1 közé szorítja. ReLU (rektifikált lineáris egység): . A rejtett rétegek között talán leggyakrabban használt aktivációs függvény. A negatív bemeneteket nullára állítja, a pozitívakat változatlanul hagyja. Bár 0-nál nincs deriváltja, de lebegőpontos számítás esetén rejtett rétegek között 0 bemeneti érték nagyon valószínűtlen és a gyakorlatban nem okoz problémát. Nem számításigényes és nem okoz gradiens-elhalást. Leaky ReLU (szivárgó ReLU): . A ReLU esetében fellépő "Halott ReLU" jelenség kiküszöbölésére találták ki. Ha egy ReLU valamilyen okból akkora eltolósúlyt tanul meg, ami minden bemenetre 0 kimenetet képez, az a ReLU onnantól működésképtelenné válik, mert a gradiense is mindig 0 lesz. A szivárgó ReLU-ba épített szivárgási együttható (λ) egy tanulható paraméter, ideálisan 0 és 1 közötti szám. Softmax: . Többkategóriás osztályozási problémák esetén használt kimeneti aktivációs függvény. A Softmax egy vektor bemenetű függvény, melyet a logisztikus regresszióban is használnak. Először kiszámítjuk az nevező exponenciális szummáját, majd az egyes elemeket exponenciálisát elosztjuk ezzel a szummával. Kimenetként egy olyan vektort kapunk vissza, amelynek elemei 0 és 1 közötti értékek és a vektor szummája 1, így a kimenet valószínűségeloszlásként értelmezzük, mely az egyes kategóriákba való tartozás valószínűségét adja meg, a maximum érték indexe pedig a legmagasabb valószínűségű kategória.
Veszteségfüggvények A gradiensereszkedés kivitelezése végett választanunk kell egy olyan függvényt, mely deriválható és egy objektív számértékként összefoglalja a hálózat hibáját a kimenet és a várt kimenet ismeretében. Számos veszteségfüggvény létezik a gépi tanulás témakörében, neurális hálózatok esetében a leggyakrabban alkalmazott veszteségfüggvények a következők: