Kohonen hálók

A VIK Wikiből
(MiKohonen szócikkből átirányítva)

Ez az oldal a korábbi SCH wikiről lett áthozva.

Ha úgy érzed, hogy bármilyen formázási vagy tartalmi probléma van vele, akkor, kérlek, javíts rajta egy rövid szerkesztéssel!

Ha nem tudod, hogyan indulj el, olvasd el a migrálási útmutatót.


Feladat

Építsen egy Kohonen hálót, amely alkalmas különböző típusú email-ek klaszterezésére. Kísérletezzen a háló tulajdonságainak változtatásával. Elemezze az egyes megoldások eredményeit.

Irodalom

Megoldás

A Neurális hálózatok alapjai

A Neurális hálózatok olyan számítási feladatok megoldására létrejött párhuzamos feldolgozást végző, adaptív eszközök, melyek eredete a biológiai rendszerektől származtatható. Az idegsejtek felépítésének és működésének megismerése, indította el azt a gondolkodást, hogy az élő szervezetekben élő, bonyolult rendszerek mintájára kíséreljünk meg számító rendszereket létrehozni. A Neurális hálózatok neuronokból épülnek fel. A mesterséges neuron az agyi neuron másolata. Legegyszerűbb formájában így néz ki:

A két bemenet súlyozva egy összegző bemenetére kerül, és ez adja a kimenetet. A neuron jóval általánosabb megfogalmazása is lehetséges. Az n súlyozott bemenetet és egy konstansra választott bemenetet (bias) egy összegzés és valamilyen általában nemlineáris függvény követ. Ez utóbbi kettőt szokás transzfer függvénynek is nevezni. A neuron rendelkezhet lokális memóriával is, amelyet például késleltetéseken, visszacsatolásokon, lineáris szűrőkön keresztül érhetünk el. Egy ábrán illusztrálva a fentieket:

A transzfer függvény tehát tulajdonképpen egy összegző, amely a bemenetek súlyozott összegét adja, és egy ezt követő általában nemlinerális függvény. Egy neuron nagyon sok másik neuronnal lehet összekapcsolva Tehát a Neurális hálózatok olyan információ-feldolgozó eszközök, amelyek párhuzamos, elosztott működésre képesek, lokális feldolgozást végző neuronokból állnak, képesek tanulni, és a megtanult információt felhasználni. Megvalósításuk szerint lehetnek hardver, szoftver, vagy akár a kettő kombinációja is. Általában egy irányított gráffal reprezentáljuk őket. A neuron egy hálózaton belül általában csak meghatározott számú neuronnal vannak összekötve, és ez a kapcsolat általában egyirányú, ezért a hálózatokat különböző rétegekre szoktuk bontani az összekötések szerint. Az egyes rétegekhez tartozó neuronok az előző réteg neuronjainak kimenetével, vagy a bemenettel, illetve a következő réteg bemenetével vannak összekötve. A bemeneti rétegben azokat a neuronok találhatóak, amelyek a bemeneti jel továbbítását végzik a hálózat felé. A legtöbb esetben nem jelöljük őket külön. A rejtett réteg végzi tulajdonképpen a feldolgozást. Egy hálózaton belül több rejtett réteg is lehet. A kimeneti rétegben található neuronok a külvilág felé továbbítják az információt. A feladatuk ugyanaz, mint a rejtett rétegbeli neuronoké. Ezek szerint a neuronokat általában három csoportba szokták sorolni: A bementi neuronok csak jeltovábbítást, a neuronok meghajtását végzik. A rejtett neuronok bemenetei, és kimenete valamely más neuronhoz csatlakozik. A kimeneti neuronok továbbítják a külvilág felé az információt, jellegükben és feladatukban nem különböznek a többi neurontól.

Azoknál a hálózatoknál ahol az egyes rétegek teljesen össze vannak kötve az előforduló számítások elvégzéséhez célszerűbb a hálózatokat különböző mátrixokkal jellemezni. A bemeneteket elegendő egy darab vektorba rendezve ábrázolni, ez N bemenet esetén egy N-es vektort jelent. Az egyes rétegek közötti súlyokat hasonlóan a bemenetekhez mátrixokba szoktuk rendezni. Ez a következőképpen néz ki: ha az l. rétegben n darab neuron van az l+1. rétegben pedig m, akkor a köztük lévő súlyok száma n x m. Ez mátrixba rendezve egy m x n-es mátrixot jelent, amelynek oszlopai az l. réteg neuronjait, sorai az l+1. réteg neuronjait reprezentálják. Vagyis a W súlymátrix Wij-dik eleme az l. réteg j. neuronjának kimenete és az l+1. réteg i. neuronjának bemenete közti súly értékét adja meg. Ebben az esetben minden két réteg között egy W mátrix jelöli a súlyokat, vagyis L rejtett réteg esetén L db W mátrixunk lesz. Ennek egy általánosítása, amikor minden neuront külön megszámozunk, a mátrix elemeinek jelentése ugyanaz, mint az előző esetben és azok az elemeket, amelyek között nincs összeköttetés 0-val jelöljük (ez az előző esetben is érvényes). Ilyenkor csak egyetlen mátrixunk van. A legtöbb esetben az egyes rétegek között nincs visszacsatolás, ilyenkor előrecsatolt hálózatokról beszélünk, visszacsatolás esetén visszacsatolt hálózatokról. A visszacsatolásnak több esete is lehetséges, aszerint, hogy a visszacsatolás honnan történt. Eszerint lehetséges egy rejtett réteg valamely neuronjának kimenetét a saját bementére (elemi visszacsatolás), egy előző réteg neuronjának bemenetére (rétegek közötti visszacsatolás), vagy egy ugyanabban a rétegben található neuron bementére visszacsatolni (laterális visszacsatolás).

A Neurális hálózatok tanulása

A neurális hálózatok egyik legfőbb jellemzője az adaptációs, tanulási képesség. Itt a tanulás a rendszer valamely képességének javítását jelenti. Így tanulásról beszélhetünk, amikor olyan hálózatarchitektúrát ill. paramétereket keresünk, amely mellett egy hálózat adott függvény minél jobb approximációjára lesz képes, de tanulás során egy hálózat azon képessége is fejleszthető, amely a bementére kerülő minták közötti hasonlóság megállapítását teszi lehetővé.

Ellenőrzött tanulás:

Összetartozó be- és kimeneti adatpárok állnak rendelkezésre. Tanításkor tehát egy adott bemenet esetén tudjuk, hogy mit várunk a kimeneten, vagyis a hálózat válaszát össze tudjuk hasonlítani a kívánt válasszal. A keletkező hiba, a két válasz különbsége felhasználható a hálózat tanítására. Némely esetben csak azt tudjuk egy adott válaszról, hogy helyes-e vagy sem, de a pontos értéket nem ismerjük. Ezt a tanítási formát megerősítő tanulásnak nevezzük. Az ellenőrzött tanulás esetében a célunk az, hogy a tanítandó hálózat működése minél jobban közelítse a vizsgált rendszer működését. Ez a megfelelő hálózat kiválasztásával és paramétereinek állításával történik.

Nem ellenőrzött tanulás:

Nem állnak rendelkezésünkre összetartozó be- és kimeneti adatpárok. A hálózatnak a bemenetek alapján kell valamilyen viselkedést kialakítani. Általában a hálózatoknak valamilyen összefüggéseket, hasonlóságokat kell felderíteniük a bemeneti adatokban. Ezeket a hálózatokat hívják önszerveződő hálózatoknak is. A neurális hálózatok esetében leggyakrabban alkalmazott ilyen eljárások a Hebb és a versengő tanulás.

Hebb tanulás:

Az eljárás biológiai analógián alapszik. Két processzáló elem közötti súlytényező értéke a processzáló elemek kiemenetének szorzatával arányosan növekszik. A probléma az eljárással, hogy a súlyok a végtelenségig nőhetnének, ezért általában valamilyen normalizált változatát használják a gyakorlatban.

Feladatunk:

Építsen egy Kohonen hálót, amely alkalmas különböző típusú emailek klaszterezésére. Kísérletezzen a háló tulajdonságainak változtatásával. Elemezze az egyes megoldások eredményeit.

Kohonen hálók:

A nem ellenőrzött tanítású hálók közé tartozik. Az algoritmus alkalmas adott adathalmaz csoportosítására. A csoportosítás a hasonló elemek egy részhalmazba rendelésével valósul meg. Az eljárás végeredményeképpen a kimenő értékek egy kétdimenziós neuronhálót alkotnak. A bemenő értékek minden, a kimenő felületen lévő neuronhoz kapcsolódnak. A kapcsolatok - hasonlóan az adaptív modellekhez - súlyozva vannak. Az optimalizációs eljárás, csoportosítás, e súlyok változtatásával folyik. A bejövő paraméterekből minden kimenő neuron egy értéket képez, melyek közül az a neuron, amelyik a legjobb értékekkel rendelkezik (amelyik győz), annak kapcsolatai tovább erősödnek. Erősödnek az input kapcsolatai azonban a nyertes neuron egy előre meghatározott környezetének is. Ezek után újra számolják a kimenő neuronok értékét, és újra definiálják a győztes neuront. A fentiekben vázolt iteratív eljárás során az egymáshoz hasonló bejövő adatok súlyvektorai fognak a leginkább hasonlítani egymáshoz, mely hasonlóság alapján történik a csoportosítás.

A feladat megoldása

150 email-t importálltunk Levelező kliensből. Ezeket szeretnénk 4 tulajdonság alapján klaszterezni. Ezek a küldő email címében szereplő országazonosító, és szolgáltató név, az üzenet tárgya és tulajdonság hogy az üzenet továbbított-e vagy sem. Így minden email-t egy 4 dimenziós vektorrá alakítottunk.


-- adamo - 2005.11.22.