13.2. Az adatok előfeldolgozása
A gyakorlati feladatok megoldása során szinte mindig célszerű a nyers adatokon valamilyen előfeldolgozást alkalmazni, és a feldolgozott adatokat adni a hálózat bemenetére, majd a hálózat válaszát megfelelő utófeldolgozással a kívánt eredménybe transzformálni.
Az elő- és utófeldolgozás az egyszerű transzformációktól (pl. lineáris adatskálázás) a bonyolult adaptív algoritmusokig terjedhet. Az eljárásokat legtöbbször a konkrét adatokra, zajokra vonatkozó a priori információ, vagy egyéb szakértői ismeret felhasználásával választjuk ki, de gyakran a neurális háló tanítása során nyerünk olyan tapasztalatokat, melyek segítségével eldönthető, hogy milyen új adatelőkészítési módszert kell alkalmaznunk, vagy az eddig alkalmazott módszereinket hogyan kell módosítsuk. Ezen esetekben a neurális modellezés folyamata oly módon válik iteratívvá, hogy a tanító és teszt adatkészletek (amit a továbbiakban általában adatbázisoknak nevezünk) kialakítása, majd a hálózat tanítása egy vagy több lépésben ciklikusan történik.
Mivel a háló tanítása önmagában is iteratív eljárás, legtöbbször célszerű az egész rendelkezésünkre álló adatbázison elvégezni a szükséges transzformációkat, hogy közvetlenül a háló bemenetére kapcsolt, illetve a kívánt kimenetként felhasznált adatokhoz jussunk. On line tanítás esetén erre nincs lehetőség, a transzformációkat pontonként kell elvégeznünk. Ki kell emelnünk, hogy ellenőrzött tanítás esetén az utófeldolgozást jelentő transzformáció inverzét is elő kell tudnunk állítani, hogy a mért kimeneti értékekből a háló kimenetére értelmezett mennyiségekhez jussunk Többek között ezért is ritkább az utófeldolgozás alkalmazása, mint a szinte mindig jelenlévő előfeldolgozásé.
Gyakorlati problémák megoldása során – különösen, ha zajos ipari környezetben mért, esetleg kézzel regisztrált adatok adják a mintákat – nagy jelentőségű az adatok hihetőségének vizsgálata. Erre lehetőséget nyújt többek közt az, hogy a valós környezetben vizsgált fizikai folyamatok általában természetes módon adnak alsó és felső korlátokat egy-egy mennyiségre. (Pl. egy tartály mérete automatikusan korlátozza a beletölthető anyag térfogatát, a mérőeszköz érzékenysége pedig alsó korlátot ad a mért mennyiségre, a méréshatára pedig a legnagyobb mérhető értékre stb.) A nyers adtabázisban az összes paramétert meg kell vizsgálni, hogy a hihetőségi határok közé esnek-e. Érdemes továbbá a technológiát ismerő szakemberekkel megvizsgáltatni a paraméterek mért értékének eloszlását (hisztogramját) a várt elvi eloszláshoz viszonyítva.
Amennyiben az egyes mért paraméterek között összefüggés mutatható ki, akkor a paraméterek együttes hihetőségvizsgálatát is el kell végezni, előfordulhat ugyanis, hogy külön-külön minden paraméter értéke hihető, de együtt mégis hibára mutatnak. (Az emberek magassága 150 és 210 cm között hihető, ugyancsak hihető, hogy a súlyuk 35 kg és 200 kg között van, mégis a 210 cm-es 35 kg-os ember nagyon valószínűtlen.) Az adatok között található összefüggések vizsgálatára a 13.4 pontban még visszatérünk.
További vizsgálatok végezhetők a neurális modell kialakítása, tanítása során, amikor a rosszul modellezett (kiugró) adatokat megvizsgálhatjuk hihetőség szempontjából is, és ennek figyelembevételével is szűrhetjük az adatbázist.
Az előfeldolgozás legelterjedtebb, gyakorlatilag szinte mindig alkalmazott formája a bemeneti adatok egyszerű, lineáris skálázása. Különösen fontos ez a lépés, ha a bemeneti adatvektor jellegükben eltérő komponensekből áll, melyek több nagyságrenddel különböző értékeket vehetnek fel. (Pl. egy konkrét ipari folyamat modellezésénél − a 7. fejezetben említett LD-konverteres acélgyártási eljárás modellezésénél − közel azonos fontosságú paraméterként, bemeneti adatként szerepelt egy adalékanyag tömeg, melynek tipikus értéke 4000-8000 kg volt, és egy anyag mangán tartalma, melynek értéktartománya a 0,05-0,1% tartományba esett. A hálók egy része − bemeneti rétegének megfelelő súlyaival − elvileg kompenzálni képes ezt a nagyságrendi eltérést, de a tanulás konvergencia sebessége olyan szintre csökkenhet, mely a megoldás elérését gyakorlatilag lehetetlenné teszi.)
Az adatnormalizálást legtöbbször akkor is el kell végeznünk, ha a bemeneti paraméterek mind azonos nagyságrendbe esnek. Például egy MLP háló a szokásos (kis véletlen értékekkel történő) inicializálás után nem − vagy csak nagyon nehezen − képes normalizálatlan értékeket megtanulni, ha a bemeneti értéktartomány az origótól távolabb eső, azt nem tartalmazó intervallum.
A bemeneti adatok normalizálása legtöbbször úgy történik, hogy mindegyik komponens minimális és maximális értékét a normált tartományban azonosra választjuk (tipikusan a [0,1] illetve a [-1,1] tartományok valamelyikét használjuk). Pl., ha az x=[x1, ..., xN] bemeneti vektor i-edik komponensét a [0,1] tartományra akarjuk normálni, akkor a következő lineáris transzformációt kell az összes mért értéken végrehajtani (a (p) felső index arra mutat, hogy az 1,2,...,P minták közül a p-dik minta komonenseiről van szó) :
(13.2)
Másik szokásos eljárás, hogy valamennyi bemeneti paramétert a normálás során nulla várható értékűvé és egységnyi szórásúvá transzformálunk. Ehhez szükségünk van a mintahalmaz tapasztalati átlagára és szórására komponensenként. A tapasztalati átlag az alábbi egyenlettel számítható:
(13.3)
A szórás becslése:
(13.4)
Ezen értékek felhasználásával az i-edik komponens nulla várható értékűre és egységnyi szórásúra normált értékei a következő összefüggéssel állíthatók elő (megjegyezzük, hogy ez a megállapítás csak közelítőleg igaz, mivel a normalizálásnál mind a várhatóérték, mind a szórás becsült értékével dolgozunk):
(13.5)
A leggyakrabban használt MLP hálózatok esetén a fenti normálásnak megfelelő lineáris transzformáció tulajdonképpen a tanulás során is kialakulhat a bemeneti lineáris rétegben, de a tapasztalatok szerint célszerű a normálást egy előfeldolgozási lépesben elvégezni. Ugyanakkor pl. az RBF hálózatoknál az adat normálás különösen nagy jelentőségű, hiszen a neuronok aktiválása legtöbbször nem az egyes bemeneti komponensek súlyozott összegével történik, hanem az euklideszi távolság alapján. Ha a bemeneti vektor N dimenziós, akkor az alap RBF háló -adik neuronját aktiváló érték a p-edik minta esetén:
(13.6)
Látható (13.6)-ból, hogy ha az x bemeneti vektor komponensei nagyságrendekkel eltérő értékeket vesznek fel, akkor a kis értékekkel rendelkező paraméterekre a hálózat nagyon érzéketlen lesz. Mivel − szemben az MLP hálózattal − itt nem találunk bemeneti lineáris súlyozó réteget, az RBF háló nem képes a tanulás során kompenzálni ezt a problémát.
A fent bemutatott lineáris skálázási eljárásokban a bemeneti x vektor komponenseit egyenként, egymástól függetlenül normáltuk. Lehetőség van a vektor elemeinek együttes normálására, melynek során az esetleg fellépő keresztkorrelációkat is figyelembe vesszük.
(13.7)
(13.8)
Írjuk fel az C kovariancia mátrix sajátérték-sajátvektor egyenletét:
(13.9)
és definiáljuk az alábbi mátrixokat:
(13.10)
(13.11)
Ezen mátrixok segítségével a következő lineáris transzformációt hajthatjuk végre:
(13.12)
Az eredmény egy olyan adathalmaz, melynek átlaga a nulla vektor, míg kovariancia mátrixa egységmátrix.
Bizonyos esetekben − elsősorban regressziós problémáknál − célszerű a bemeneti adatok mellett a kimeneti adatokat is normálni. Egyes hálóknál a kimeneti adatok normálása vagy megfelelő határok közé transzformálása nemcsak célszerű, hanem kötelező is. Gondoljunk csak egy olyan MLP-re, ahol a kimeneten szigmoid nemlinearitás található. Egy ilyen háló kimenete nem vehet fel a (-1,+1) (vagy logisztikus nemlinearitás esetén a (0,1)) intervallumon kívül eső értékeket. Ha a kívánt válaszok ezen tartományon túllógnak, a háló képtelen a feladat megtanulására. Sőt a kívánt válaszok kissé nagyobb mértékű korlátozására is szükség van, hiszen a nemlinearitás telítődő jellege miatt az intervallumok szélső értékeit már nagyon nehezen veszik fel ezek a hálók. Így a gyakorlatban jól működő megoldást nyerünk, ha pl. tangens hiperbolikusz nemlinearitás esetén a kívánt válaszokat a [-0,8, +0,8 ] intervallumra normáljuk.
A hagyományos mérnöki feladatokban a bemeneti adatokat legtöbb esetben úgy kezeljük, mint amelyek egy folytonos változó valamilyen értéktartományban felvett értékeinek halmazából állnak. Így általában értelmezett a távolságfogalom és beszélhetünk arról, hogy a halmaz egyik eleme közelebb van egy adott másikhoz, mint a halmaz bármely egyéb eleméhez. Ennek megfelelően rendszerint a közeli számértékekkel reprezentált adatok hasonló szituációkat takarnak. (Például, ha egy folyamatot modellezünk, és bemeneti modellparaméter a mért hőmérséklet, akkor a 20°C mintaérték és a 21°C mintaérték tipikusan egymáshoz inkább hasonló szituációkat takar, mint a 70°C-os mintaértékkel jellemzett helyzet.)
Előfordulnak azonban olyan feladatok is, ahol számok diszkrét halmaza segítségével szimbolikus értékek ábrázolását végezzük. Ez különösen gyakran előfordul olyan feladatoknál, ahol emberi intelligenciát igénylő problémákat akarunk megoldani, hiszen ezekben a látás, képfeldolgozás, a szimbolikus feldolgozás keveredik a numerikus jellegű feldolgozással. A számokon természetes módon értelmezett távolságfogalom ilyenkor meghamisíthatja a szituáció értelmezését. Tegyük fel pl., hogy valamilyen modellben az anyag színének is jelentősége van, bizonyos szituációkat csak így tudunk megkülönböztetni. Amennyiben a piros, barna, sárga, kék, stb. színeket rendre 1, 2, 3, 4, ... számokkal reprezentáljuk, a neurális háló tanítása során azt a feltehetően hamis információt sugalljuk, hogy a sárga közelebb van a kékhez (egyiket 3-mal, másikat 4-gyel kódoltuk), mint pl. a piroshoz (amit 1-gyel kódoltunk). Ilyenkor a dimenziószám növelését is vállalva az inkább az N-ből 1 kódolást kell alkalmaznunk (vagy a bemenetek közötti hasonlóságot tükröző metrikát kell használnunk). Tehát pl. a fenti négy szín esetén egy bemeneti változó helyett négyet használunk: [1, 0, 0, 0] jelöli a pirosat, [0, 1, 0, 0] a barnát, stb. A dimenziószám-növelés hatását kompenzálja, hogy a távolság félrevezető használatát kiküszöböltük, másrészt a bináris bemenetek (és kimenetek) jelenléte általában gyorsabb konvergenciát eredményez, mint a folytonos értéktartományban, vagy diszkrét többértékű halmazon értelmezett be- és kimenetek használata. Ez a helyzet különösen gyakori osztályozási feladatok esetén, ezért az osztályozó hálók kimenetén szinte mindig az N-ből 1 kódolást célszerű alkalmazni. (Természetesen kivételt jelent a kétosztályos osztályozási feladatok egy része, amelyeknél a távolság-probléma nem lép fel, így itt a kimeneten 0/1-gyel kódolható a két osztály.)
Az alkalmazások jelentős körében – elsősorban, de nem kizárólag, az alakfelismerési feladatokban – fontos lehet, hogy az adatok valamilyen transzformációjával – pl. a térbeli eltolással vagy elforgatással – szemben érzéketlen legyen az eljárásunk. Például ha postai irányítószámokat kívánunk felismerni, akkor egy adott számjegy a kijelölt négyzeten belül különböző helyeken fordulhat elő, és bizonyos határok között elfordulással és egyéb hatásokkal is számolnunk kell. Természetesen a számjegyet ezen transzformációktól függetlenül fel kell ismernünk, tehát a felismerési, osztályozási eljárásnak eltolással és bizonyos mértékű elforgatással szemben érzéketlennek kell lennie. Más feladatokban is előfordul, hogy azt szeretnénk, hogy bizonyos paraméterekre legyen érzéketlen a megoldás. Az osztályozási feladatoknál bizonyos transzformációkkal szembeni invariancia kérdését a virtuális minták generálásához kapcsolódóan az előző fejezetben már érintettük. Itt a kérdés kezelésére két további lehetőséget is megemlítünk.
Amennyiben neurális hálót alkalmazunk olyan feladatra, ahol a bemeneti minta valamilyen transzformációjával szemben invariáns feldolgozásra van szükség, három lehetőség között választhatunk:
-
A neurális háló tanítását, pl. a tanító adatbázis vagy a költségfüggvény kialakítását végezzük úgy, hogy az eredmény szükséges invarianciáját biztosítsuk.
-
A feldolgozási algoritmust két részre bontjuk, az első lépésben egy előfeldolgozási eljárás keretében a transzformációval szemben invariáns jellemzőket (features) állítunk elő, majd a második lépésben a neurális modellt ezekkel az invariáns jellemzőkkel tanítjuk.
-
A neurális modellt úgy strukturáljuk, hogy elősegítsük a transzformációval szembeni invarianciát.
A fenti három eljárásból az első speciális adatelőkészítéssel, adatbázis kialakítással oldja meg a problémát, a második egy előfeldolgozási lépést iktat be, míg a harmadik eljárás tulajdonképpen nem az e fejezeten belül tárgyalt módszereket használja.
Két lehetőséget ismertetünk, amelyekkel a tanítás során invariáns eredmény elérésére törekedhetünk.
Egyik lehetőség, hogy úgy alakítjuk ki a tanító adatbázist, hogy nagy számban tartalmazzon eltolt (illetve szükség esetén elforgatott, stb.) mintákat. Ha nem képfeldolgozás a feladat, akkor csak azon paraméterben, jellemzőben különböző, egyébként azonos mintákat állítunk elő, amely paraméterre, jellemzőre érzéketlen megoldást szeretnénk kapni.) Ha nem állnak rendelkezésünkre kellő számban ilyen mért adatok, akkor a meglevő adatainkból a feladat szempontjából fontos transzformációk felhasználásával előállíthatunk eltolt/elforgatott adatvektorokat. (Ezt a lehetőséget a12. fejezetben, a járulékos információ felhasználása kapcsán is említettük.) Ezek után a neurális modellt erre az adatbázisra alapozva tanítjuk, tulajdonképpen az adatbázisba felvett, speciális szempontok alapján válogatott/módosított adatokkal biztosítva a cél elérését. A módszer alkalmazásánál azonban óvatosan kell eljárni, mert az adatbázis nem megfelelő kibővítése, a gyakorlatban sokszor igen rossz eredményeket ad (lassú konvergencia, rossz teszt eredmények, stb.)
Másik lehetőség, hogy a regularizációhoz hasonlóan (lásd 2. fejezet) az optimalizálni kívánt költségfüggvényben vesszük figyelembe a kívánt invariáns tulajdonság hiányát vagy meglétét. Tehát a tanító mintákra való illeszkedést leíró hiba helyett a összetett, regularizált költségfüggvény minimalizálását végezzük:
(13.13)
ahol C a szokásos – a tanító minták illeszkedési hibájára jellemző – költségfüggvény tag, az invariancia hiányát leíró költségtag, a regularizációs együttható.