Imádom a sci-fiket. Főleg azokat, amelyek öntudatra ébredt robotokkal, hálózatokkal és mesterséges intelligenciával (MI) foglalkoznak. Egy-egy ilyen film kapcsán mindig az villan át az agyamon, hogy a látottak vajon mennyire a fantázia szüleményei, és megérjük-e azt a kort, amikor mindez már nem csak kitaláció, hanem valóság lesz. Meggyőződésem, hogy erre már nem kell túl sokat várni. Elég csak kicsit körbe nézni, és láthatjuk, hogy nem szól másról a világ, mint önvezető autókról, egyre emberibb robotokról, olyan rendszerekről, amelyek már most legyőzik az embert bizonyos szellemi sportban/játékban, vagy amik a vásárlói szokásaink elemzésével „kitalálják”, hogy mire is van szükségünk.
De mi is áll a dolgok hátterében?
Az MI fogalmával már sokszor találkozhattunk, viszont a mesterséges neurális hálózatokról (röviden neurális hálózatokról – neural network) viszonylag kevesebbet lehet hallani. Bár a 2 fogalom igen szoros kapcsolatban van egymással, közel sem szabad egyenlőségjelet tenni közéjük. Legfőképp azért, mert MI kutatása magában foglalja a neurális hálók kérdéskörét, vagy úgyis mondhatjuk, hogy az MI létrehozása a távlati cél, amelynek elérésében nélkülözhetetlenek a neurális hálózatok.
Neurális hálózatok felépítése, működése
A neurális hálózat kifejezés valójában egy biológiai indíttatású gépet / programot takar, ami az emberi agyban lévő neuronok közötti kapcsolatokat és azok működési mechanizmusát modellezve, képes tanulásra, minták felismerésére és döntések meghozatalára.
A neurális hálózatok működésénél tipikusan két fázist különböztethetünk meg:
– tanulási fázis a hálózat kialakítására szolgál, mely általában minta alapján való tanulást jelent, és amely az információfeldolgozás módját határozza meg,
– az előhívási fázis a megtanult információk előhívására szolgál
A két fázis – a legtöbb esetben – időben szétválik. A tanulási fázis rendszerint lassú folyamat, hosszú iterációkat, sőt sikertelen tanulási szakaszokat is magában hordoz. Ezzel szemben az előhívási fázis tipikusan gyors feldolgozást jelent.
A neurális hálózatok kapcsán talán a legizgalmasabb dolog maga a tanítás folyamata. Ez ugyanis nem a hagyományos értelemben vett programozással történik, hanem – a bemeneti vagy a bemeneti és a kimeneti ismert minták alapján – a neurális háló paramétereinek módosításával, anélkül, hogy előzetesen a problémához illeszkedő speciális modellt vagy algoritmust kellene létrehozni.
A fenti ábra egy egyszerű neurális hálózatot ábrázol, amin jól látható, hogy a hálózat alapvető egységekből, ún. neuronokból áll. Ezek belső állapotai leírhatók számokkal (aktivációs értékek). Mindegyik egység generál egy aktiválási értéktől függő kimeneti értéket. Az egységek csatlakoznak egymáshoz, mindegyik csatlakozás tartalmaz egy egyéni súlyt (súlyozás). Minden egység kiküldi a kimeneti értékét az összes többi egységnek, amelyekkel kimenő kapcsolatban vannak.
Ezen kapcsolatok miatt az egység kimenete hatással van a másik egység aktivációjára. A kapcsolat bemeneti oldalán álló egység fogadja az értékéket, és azok súlyozásával kiszámolja az aktivációs értékét (összeszorozza a bemeneti jelet a hozzá tartozó bemenet súlyával, és veszi ezek összegét) A kimenetet az aktivációtól függően az aktivációs függvény határozza meg (pl az egység kimenetet generál –„tüzel”- ha az aktivizáció egy határérték felett van).
A hálózat tanulási technikája lehet ellenőrzött, ill. nem ellenőrzött típusú tanulás. Előbbi esetben a rendszer nagyszámú, előre megadott példa alapján tanul: speciális algoritmusokkal addig változtatja a neuronok közötti kapcsolatokat, míg a megadott bemenetek mindig a megadott kimeneteket “okozzák”. Ilyenkor a hálózat a legtöbb esetben a csatlakozások súlyának módosításával tanul. A súlymódosítás során az ún. hibafüggvény eredményét veszi figyelembe. A hibafüggvény értékét sokféle módon lehet kiszámítani, a legegyszerűbb eset, amikor a kimeneti értékből kivonja a helyes kimeneti értéket.
A nem ellenőrzött hálóknál leginkább a Kohonen önszervező térképet használják, amely hálózat azon feltételezések alapján működik, hogy a hálózat képes a teljes bemeneti mintakészlet közös jellemzőinek azonosítására.
De hogy ne csak a száraz elméletről legyen szó, az alábbiakban bemutatok néhány gyakorlatban is megvalósított neurális hálózatot.
Robotfoci
Autó az úton
Kézírás felismerése
A neurális hálózatok felhasználási területei
A fenti példák remekül szemléltetik a neurális hálózatok működését, és az azokban rejlő lehetőségeket, melyeket már ma is az élet számtalan területén kiaknáznak.
Íme, néhány példa a teljesség igénye nélkül:
Repülőgépgyártás − robotpilóták, repülőgép hibáinak feltárása
Autóipar – önvezető autók, autóirányítási rendszerek
Hadiipar − célkövetés, tárgyak megkülönböztetése, arcfelismerő, jel-/ képazonosítási
Elektronika −a IC chip összeállítás, chip hiba analízis, gépi látás, hang szintézis
Pénzügy − ingatlan értékbecslés, hitel tanácsadás, jelzálog-szűrés, tőzsdei előrejelzések
Orvostudomány – rákos sejtek analízise, génsebészet, transzplantációs idő optimalizálása
Hangelemzés – Beszéd felismerés és osztályozás, beszéd szöveggé, szöveg beszéddé konvertálása
Telekommunikáció − kép- és az adattömörítés, automatizált információs szolgáltatások, a valós idejű beszélt nyelv fordítása
Bankbiztonság − gyanús tranzakciók kiszűrése, bankkártya-csalások felderítése
Marketing – értékesítési folyamatok optimalizálása, prediktív meghatározása a fogyasztói szokások elemzésével.