Mesterséges neurális hálók

A mesterséges neurális hálók (ANN -- artificial neural networks) tanulmányozását a biológiai idegrendszerek szimulálására irányuló próbálkozások inspirálták. Az emberi agy elsősorban neuronoknak nevezett idegsejtekből áll, amelyeket más neuronokkal axonoknak nevezett rostszálak kapcsolnak össze. Az axonok szolgálnak az idegimpulzusok egyik neuronról a másikra történő átvitelére a neuronok ingerlésekor. A neuron más neuronok axonjaihoz dendriteken keresztül kapcsolódik, amelyek a neuron sejttestének nyúlványai. A dendrit és az axon közötti érintkezési pontot szinapszisnak nevezzük. Az ideggyógyászok felfedezték, hogy az emberi agy úgy tanul, hogy az ugyanazon impulzus által kiváltott ismétlődő stimuláció hatására változtatja a neuronok közötti szinaptikus kapcsolat erősségét.

Az emberi agy felépítéséhez hasonlóan egy ANN csomópontok (nodes) és irányított kapcsolatok egy összekapcsolt sokaságából áll.[3] Ebben a szakaszban ANN modellek egy családját vizsgáljuk meg, a perceptronnak nevezett legegyszerűbb modellel kezdve, és megmutatjuk, hogy hogyan lehet a modelleket osztályozási problémák megoldására tanítani.

Perceptron

Tekintsük az 5.14. ábrán látható diagramot. A bal oldali táblázatban egy adathalmaz látható, amely három logikai változót ( x 1 , x 2 , x 3 ) tartalmaz, és egy olyan y kimeneti változót, amely 1 értéket vesz fel, ha a három bemenet közül legalább kettő nulla, +1 -et pedig akkor, ha legalább két bemenet nagyobb nullánál.

5.14. ábra - Logikai függvény modellezése perceptronnal

Logikai függvény modellezése perceptronnal

Az 5.14. (b) ábra egy perceptronnak nevezett egyszerű neurális háló architektúrát szemléltet. A perceptron kétféle csomópontból áll: a bemeneti attribútumok reprezentására szolgáló bemeneti csomópontokból és egy a modell kimenetének reprezentálására szolgáló kimeneti csomópontból. A neurális háló architektúra csomópontjait általában neuronoknak vagy egységeknek nevezzük. A perceptron minden egyes bemeneti csomópontja egy súlyozott kapcsolaton keresztül csatlakozik a kimeneti csomóponthoz. A súlyozott kapcsolat szolgál a neuronok közötti szinaptikus kapcsolat erősségének utánzására. A biológiai neurális rendszerekhez hasonlóan egy perceptron modell tanítása egyenértékű a kapcsolatok súlyainak adaptálásával, amíg azok nem illeszkednek az adatok bemenet-kimenet kapcsolataira.

A perceptron a bemeneteinek súlyozott összegét képezve, az összegből egy t torzítási tényezőt kivonva, majd az eredmény előjelét megvizsgálva számítja ki az y ̂ kimeneti értékét. Az 5.14. (b) ábrán látható modellnek három bemeneti csomópontja van, amelyek mindegyikének azonos módon 0,3 a súlya a kimeneti csomóponthoz és t=0,4 a torzítási tényezője. A modell által kiszámított kimenet

y ̂ =( 1, ha0,3 x 1 +0,3 x 2 +0,3 x 3 0,40, 1, ha0,3 x 1 +0,3 x 2 +0,3 x 3 0,40. (5.21)

Ha például x 1 =1, x 2 =1, x 3 =0 , akkor y ̂ =+1 , mivel 0,3 x 1 +0,3 x 2 +0,3 x 3 0,4 pozitív. Másrészt, ha x 1 =0, x 2 =1, x 3 =0 , akkor y ̂ =1 , mivel a torzítási tényezővel csökkentett súlyozott összeg negatív.

Vegyük észre a perceptron bemeneti és kimeneti csomópontjai közötti különbséget. Egy bemeneti csomópont egyszerűen a kimenő kapcsolathoz továbbítja a kapott értéket bármiféle transzformáció elvégzése nélkül. A kimeneti csomópont ugyanakkor egy olyan matematikai eszköz, amely a bemeneteinek súlyozott összegét számítja ki, kivonja a torzítási tényezőt, majd a kapott összeg előjelétől függő kimenetet állít elő. Pontosabban, a perceptron modell kimenete matematikailag az alábbi módon fejezhető ki:

y ̂ =sgn( w d x d + w d1 x d1 ++ w 2 x 2 + w 1 x 1 t), (5.22)

ahol w 1 , w 2 ,, w d a bemeneti kapcsolatok súlyai, x 1 , x 2 , , x d pedig a bemeneti attribútumértékek. A kimeneti neuron aktivációs függvényeként viselkedő előjelfüggvény +1 értéket ad ki, ha az argumentuma pozitív, és 1 -et, ha az argumentuma negatív. A perceptron modell az alábbi módon írható tömörebb alakba:

y ̂ =sgn[ w d x d + w d1 x d1 ++ w 1 x 1 + w 0 x 0 ]=sgn(wx), (5.23)

ahol w 0 =t , x 0 =1 , wx pedig a w súlyvektor és az x bemeneti attribútumvektor belső szorzata.

Tanuló perceptron modell

A perceptron modell tanítási fázisa során a w súlyparaméterek addig módosulnak, amíg a perceptron kimenetei konzisztenssé nem válnak a tanulóesetek valós kimeneteivel. A perceptron tanulási algoritmus összefoglalását az 5.4. algoritmus mutatja.

5.4. algoritmus. Perceptron tanuló algoritmus

1: Legyen D={( x i , y i )  |  i=1,2,,N} a tanulóesetek halmaza

2: Inicializáljuk a súlyvektort véletlen értékekkel ( w (0) )

3: repeat

4: for minden ( x i , y i )D tanulóesetre do

5: Számítsuk ki az y ̂ i (k) prediktált kimenetet

6: for minden w j súlyra do

7: Módosítsuk a súlyt: w j (k+1) = w j (k) +λ( y i y ̂ i (k) ) x ij

8: end for

9: end for

10: until teljesül a megállási feltétel

Az algoritmus kulcsfontosságú számítása a 7. lépésében adott súlymódosító formula:

w j (k+1) = w j (k) +λ( y i y ̂ i (k) ) x ij , (5.24)

ahol w i (k) az i -edik bemeneti kapcsolathoz tartozó súlyparaméter a k -adik iteráció után, λ a tanulási tényezőnek (learning rate) nevezett paraméter, x ij pedig a x i tanulóeset j -edik attribútuma. A súlymódosító formula igazolása elég intuitív. Az (5.24) egyenlet azt mutatja, hogy a w (k+1) új súly a w (k) régi súly és egy az (y y ̂ ) előrejelzési hibával arányos tag kombinációja. Ha az előrejelzés helyes, akkor a súly változatlan marad. Egyébként az alábbiak szerint módosul:

  • Ha y=+1 és y ̂ =1 , akkor az előrejelzés hibája (y y ̂ )=2 . A hiba kompenzálásához növelnünk kell a prediktált kimenet értékét, amelyhez minden pozitív bemenetű kapcsolat súlyát növeljük és minden negatív bemenetű kapcsolat súlyát csökkentjük.

  • Ha y i =1 és y ̂ =+1 , akkor (y y ̂ )=2 . A hiba kompenzálásához csökkentenünk kell a prediktált kimenet értékét, amelyhez minden pozitív bemenetű kapcsolat súlyát csökkentjük és minden negatív bemenetű kapcsolat súlyát növeljük.

A súlymódosító formulában azok a kapcsolatok igénylik a legnagyobb korrekciót, amelyek a legtöbbel járulnak hozzá a hibataghoz. A súlyokat azonban nem szabad túl drasztikusan megváltoztatni, mivel a hibatagot csak az aktuális tanulóesetre határoztuk meg. Egyébként elvesznek a megelőző iterációkban végzett módosítások. A 0 és 1 közötti értékű λ tanítási tényező paraméterrel szabályozható az egyes iterációkban végzett módosítás mértéke. Ha λ nullához közeli, akkor az új súlyt főleg a régi súly értéke határozza meg. Ugyanakkor ha λ közel van 1-hez, akkor az új súly érzékeny az aktuális iterációban végzett módosítás mértékére. Bizonyos esetekben adaptív λ érték használható: kezdetben λ közepesen nagy az első néhány iteráció során, majd a következő interációkban fokozatosan csökken.

5.15. ábra - Perceptron döntési határ az 5.14. ábrán látható adatokhoz

Perceptron döntési határ az 5.14. ábrán látható adatokhoz

Az (5.23) egyenletben látható perceptron modell lineáris a w paraméterekben és az x attribútumokban. Emiatt a perceptron döntési határa -- amelyet y ̂ helyére 0-t helyettesítve kapunk meg -- egy hipersík, amely az adatokat két osztályra ( 1 és +1 ) választja szét. Az 5.15. ábrán látható az a döntési határ, amelyet a perceptron tanulási algoritmus az 5.14. ábrán megadott adatokra alkalmazásával kaptunk. A perceptron tanulási algoritmus garantáltan egy optimális megoldáshoz konvergál lineárisan szeparálható osztályozási problémák esetén (feltéve, hogy a tanulási tényező is elég kicsi). Ha a probléma nem lineárisan szeparálható, akkor az algoritmus nem konvergál. Az 5.16. ábra nemlineárisan szeparálható adatokra mutat példát, amelyet az XOR függvény ad meg. A perceptron ezekre az adatokra nem tud megfelelő megoldást találni, mert nincs olyan hipersík, amely tökéletesen el tudja választani a tanulópéldányokat.

5.16. ábra - XOR osztályozási probléma. Egyetlen hipersík sem képes a két osztályt szeparálni.

XOR osztályozási probléma. Egyetlen hipersík sem képes a két osztályt szeparálni.

Többrétegű mesterséges neurális hálók

Egy mesterséges neurális háló bonyolultabb felépítésű, mint a perceptron modell. A járulékos bonyolultság többféle módon adódhat:

  1. A hálózat több közbenső réteget tartalmazhat a bemeneti és a kimeneti rétegei között. Az ilyen közbenső rétegeket rejtett rétegeknek (hidden layer) nevezzük, az ezekbe a rétegekbe beágyazott csomópontokat pedig rejtett csomópontoknak. Az adódó struktúrát többrétegű neurális hálónak nevezzük (lásd az 5.17 ábrát).

5.17. ábra - Példa többrétegű előrecsatolt mesterséges neurális hálóra

Példa többrétegű előrecsatolt mesterséges neurális hálóra

Az előrecsatolt (feed-forward) neurális hálókban egy réteg neuronjai csak a következő réteg neuronjaihoz kapcsolódnak. A perceptron egy egyrétegű előrecsatolt neurális hálózat, mivel csak egy réteg olyan csomópontot tartalmaz -- a kimeneti réteget --, amely összetett matematikai műveleteket végez. A rekurrens (recurrent) neurális hálókban a kapcsolatok összeköthetnek csomópontokat ugyanazon a rétegen belül vagy csomópontokat az egyik rétegből a megelőző rétegekkel.

  1. A hálózat az előjelfüggvényen kívül más típusú aktivációs függvényeket is használhat. Ilyen egyéb aktivációs függvények például a lineáris, szigmoid (logisztikus) és tangens hiperbolikusz függvények (lásd az 5.18. ábrát). Ezek az aktivációs függvények lehetővé teszik a rejtett és kimeneti csomópontoknak olyan kimeneti értékek előállítását, amelyek a bemeneti paramétereikben nemlineárisak.

5.18. ábra - Aktivációs függvények típusai mesterséges neurális hálókban címe

Aktivációs függvények típusai mesterséges neurális hálókban címe

Ez az összetettség lehetővé teszi a többrétegű neurális hálók számára az input és output változó közötti bonyolultabb kapcsolatok modellezését. Vegyük például az előző szakaszban tárgyalt XOR problémát. A példányokat két hipersíkkal lehet osztályozni, amelyek a bemeneti teret a megfelelő osztályokra osztják fel, amint azt az 5.19. (a) ábra is mutatja. Mivel egy perceptron csak egy hipersíkot hozhat létre, nem tudja megtalálni az optimális megoldást. Ez a probléma kezelhető egy kétrétegű előrecsatolt neurális hálózat használatával, amint azt az 5.19. (b) ábra is mutatja. Intuitívan minden egyes rejtett csomópontra egy perceptronként tekinthetünk, amely a két hipersík valamelyikét kísérli meg létrehozni, míg a kimeneti csomópont csupán kombinálja a perceptronok eredményét, hogy az 5.19. (a) ábrán látható döntési határt nyerjük.

5.19. ábra - Kétrétegű előrecsatolt neurális hálózat az XOR problémához

Kétrétegű előrecsatolt neurális hálózat az XOR problémához

Az ANN modell súlyainak tanulásához egy hatékony algoritmus szükséges, amely a jó megoldáshoz konvergál elegendő mennyiségű tanulóadat biztosítása esetén. Az egyik megközelítés az, ha a hálózatban minden egyes rejtett csomópontot vagy kimeneti csomópontot egy független perceptron egységként kezelünk, és ugyanazt a súlymódosító formulát alkalmazzuk, mint az (5.24) egyenlet. Ez a megközelítés nyilvánvalóan nem fog működni, mivel nincs a priori tudásunk a rejtett neuronok valós kimenetéről. Ez megnehezíti az egyes rejtett csomópontokhoz rendelhető (y y ̂ ) hibatagok meghatározását. A következőkben egy a gradiens leereszkedés módszerén alapuló módszertant mutatunk be a neurális háló súlyainak tanulására.

Az ANN modell tanulása

Az ANN tanuló algoritmus célja a négyzetes hibák teljes összegét minimalizáló w súlyok meghatározása:

E(w)= 1 2 i=1 N ( y i y ̂ i ) 2 . (5.25)

Megjegyezzük, hogy a négyzetes hibák összege w -től függ, mert az y ̂ prediktált osztály a rejtett és kimeneti csomópontokhoz rendelt súlyok függvénye. Az 5.20. ábrán egy példa látható egy hibafelületre, mint a két paraméterének, w 1 -nek és w 2 -nek függvényére. Jellemzően akkor fordul elő ilyen fajta hibafelület, ha y ̂ i a paramétereinek, w -nek, lineáris függvénye. Ha az y ̂ =wx helyettesítést elvégezzük az (5.25) egyenletben, akkor a hibafüggvény kvadratikussá válik a paramétereiben, és könnyen található globális minimum megoldás.

5.20. ábra - Egy kétparaméteres modell E( w 1 , w 2 ) hibafelülete

Egy kétparaméteres modell E(w1 , w2) hibafelülete

A legtöbb esetben egy ANN kimenete a paramétereinek egy nemlineáris függvénye az aktivációs függvények megválasztása miatt (például szigmoid vagy tangens hiperbolikusz függvény). Ennek eredményeként már nem egyszerű w -re olyan megoldást nyerni, amely garantálhatóan globálisan optimális. Mohó algoritmusokat, például a gradiens leereszkedés módszerén alapulókat fejlesztettek ki az optimalizációs probléma hatékony megoldására. A gradiens leereszkedés módszere által használt súlymódosító formula az alábbi módon írható fel:

w j w j λ E(w) w j , (5.26)

ahol λ a tanulási tényező. A második tag azt fejezi ki, hogy a súlyt olyan irányban kell növelni, amely csökkenti a teljes hibatagot. Mivel azonban a hibafüggvény nemlineáris, előfordulhat, hogy a gradiens leereszkedés módszere egy lokális minimumba ragad be.

A gradiens leereszkedés módszere a neurális háló kimeneti és rejtett csomópontjai súlyainak tanulásához használható. Rejtett csomópontok esetén a számítás nem triviális, mert bonyolult a kimeneti és rejtett csomópontok E/ w j hibatagjainak megállapítása anélkül, hogy tudnánk azt, hogy mi kell, hogy legyen a kimeneti értékük. A hiba-visszaterjesztés (back-propagation) nevű módszert ennek a problémának a kezelésére fejlesztették ki. Az algoritmus minden egyes iterációjában két fázis van: az előrefelé (forward) fázis és a hátrafelé (backward) fázis. Az előrefelé fázis közben az előző iterációban kapott súlyokat használjuk a hálózatban minden egyes neuron kimeneti értékének kiszámításához. A számítás előrefelé halad, azaz a k -adik szinten a neuronok kimeneteit a kimenetek k+1 -edik szinten való kiszámítását megelőzően határozzuk meg. A hátrafelé fázis közben a súlymódosítási formulát fordított irányban alkalmazzuk. Más szóval, a súlyok frissítése a k+1 -edik szinten a súlyok k -adik szinten frissítése előtt történik. Ez a hiba-visszaterjesztés módszer lehetővé teszi, hogy a k+1 -edik rétegbeli neuronok hibáját használjuk a k -adik rétegbeli neuronok hibájának megbecsléséhez.

Tervezési kérdések az ANN tanulásban

Az alábbi tervezési kérdéseket kell figyelembe venni egy neurális háló egy osztályozási feladatra tanítása előtt:

  1. Meg kell határoznunk a csomópontok számát a bemeneti rétegben. Rendeljünk minden egyes numerikus vagy bináris input változóhoz egy bemeneti csomópontot. Ha a változó kategorikus, akkor minden egyes kategorikus értékhez egy csomópontot hozhatunk létre vagy log 2 k számú input csomópont segítségével kódolhatjuk a k értékű változót.

  2. Meg kell állapítanunk a csomópontok számát a kimeneti rétegben. Kétosztályos probléma esetén elég egyetlen kimeneti csomópontot használni. Egy k -osztályos problémához k kimeneti csomópont kell.

  3. Ki kell választanunk a hálózati topológiát (például a rejtett rétegek és rejtett csomópontok számát, az előrecsatolt vagy rekurrens hálózati architektúrát). Meg kell jegyezni, hogy a célfüggvény-reprezentáció a kapcsolatok súlyaitól, a rejtett csomópontok és rejtett rétegek számától, a csomópontok torzításától és az aktivációs függvény típusától függ. A megfelelő topológia megtalálása nem egyszerű feladat. Ennek az egyik módja egy elegendően nagyszámú csomópontot és rejtett réteget tartalmazó teljesen összekapcsolt hálózatból kiindulás, majd a modellépítési eljárás megismétlése kevesebb számú csomóponttal. Ez a módszer nagyon időigényes lehet. Egy másik alternatívaként a modellépítési eljárás megismétlése helyett a megfelelő bonyolultságú modell megválasztásához eltávolíthatunk néhány csomópontot, majd megismételhetjük a kiértékelési eljárást a modellre.

  4. Inicializálni kell a súlyokat és torzításokat. Általában elfogadhatók a véletlen értékadások.

  5. El kell távolítani, vagy a legvalószínűbb értékekekkel kell helyettesíteni a hiányzó értékeket tartalmazó tanulóeseteket.

Az ANN jellemzői

Az alábbiakban foglaljuk össze a mesterséges neurális hálók általános jellemzőit:

  1. A legalább egy rejtett réteget tartalmazó többrétegű neurális hálók univerzális appoximátorok, azaz tetszőleges célfüggvény approximálásához használhatók. Mivel egy ANN nagyon nagy kifejezőerejű hipotézistérrel rendelkezik, a modell túlillesztés elkerüléséhez fontos az adott problémához megfelelő hálózati topológia választása.

  2. Az ANN képes a redundáns tulajdonságok kezelésére, mert a tanulási lépés során a súlyok automatikusan tanulásra kerülnek. A redundáns tulajdonságok súlyai többnyire nagyon kicsik.

  3. A neurális hálók elég érzékenyek zaj jelenlétére a tanulóadatokban. Az egyik módszer a zaj kezelésére egy validációs halmaz használata a modell általánosítási hibájának meghatározására. Egy másik módszer a súlyok valamilyen tényezővel csökkentése minden egyes iterációban.

  4. Az ANN súlyainak tanulásához használt gradiens leereszkedés módszere gyakran egy lokális minimumba konvergál. A lokális minimumból történő kiszabadulás egyik módja a súlymódosítási formulához egy momentum tag hozzáadása.

  5. Az ANN tanítása időigényes folyamat, különösen akkor, ha nagy a rejtett csomópontok száma. A tesztesetek azonban gyorsan osztályozhatók.



[3] A fordító megjegyzése: A gráfok terminológiájában a node kifejezés magyar megfelelőjeként könyvünk a csúcs szót használja. A neurális hálók is gráfszerkezetűek ugyan, a csúcs kifejezés helyett ezeknél azonban alkalmasabbnak éreztük inkább a csomópont szót a hálózatot alkotó feldolgozó elemekre.