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.
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 (
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
Ha például
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:
ahol
ahol
Tanuló perceptron modell
A perceptron modell tanítási fázisa során a
5.4. algoritmus. Perceptron tanuló algoritmus |
1: Legyen
2:
Inicializáljuk a súlyvektort véletlen értékekkel (
3: repeat 4: for minden
5: Számítsuk ki az
6:
for minden
7: Módosítsuk a súlyt:
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:
ahol
Ha
Ha
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ű
Az (5.23) egyenletben látható perceptron modell lineáris a
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:
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).
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.
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.
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.
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ő
Az ANN modell tanulása
Az ANN tanuló algoritmus célja a négyzetes hibák teljes összegét
minimalizáló
Megjegyezzük, hogy a négyzetes hibák összege
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ű
ahol
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
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:
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
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
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.
Inicializálni kell a súlyokat és torzításokat. Általában elfogadhatók a véletlen értékadások.
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 alábbiakban foglaljuk össze a mesterséges neurális hálók általános jellemzőit:
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.
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.
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.
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.
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.