II. LABOR Tanulás, Perceptron, Adaline
II. LABOR Tanulás, Perceptron, Adaline A dolgozat célja a tanító algoritmusok osztályozása, a tanító és tesztel halmaz szerepe a neuronhálók tanításában, a Perceptron és ADALINE feldolgozó elemek struktúrája, tansítása és a köztük lev hasonloságok és különbségek ismertetése. Elméleti alapfogalmak Tanulás A neurális hálózatok legf bb jellemz je az adaptációs tanulási képesség. A neurális hálózatokban a tanulás egyszer en a rendszer valamilyen képességének javítását jelenti. Így tanulásról beszélhetünk, amikor olyan hálózat-architektúrát illetve paramétereket (súlyvektort) keresünk, amely mellett egy hálózat egy adott függvénynek a 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 bemenetére kerül minták közötti hasonlóság megállapítását teszi lehet vé. A neurális hálózatok f bb tanulási formái: •
Tanítóval történ tanulás (ellen rzött vagy felügyelt tanulás)
•
Tanulás tanító nélkül (nem ellen rzött vagy felügyelet nélküli tanulás)
•
Analitikus tanulás
Ellen rzött tanulásnál a hálózat összetartozó be- és kimeneti értékei, ú.n. tanítópárok állnak rendelkezésre. A tanítás azon alapszik, hogy ismertek a hálózatnak valamely bemenetekre adandó kívánt válaszai, így a hálózat tényleges válasza minden esetben közvetlenül összehasonlítható a kívánt válasszal. Az összehasonlítás eredménye- a tényleges és a kívánt válasz különbsége- felhasználható a hálózat olyan módosítására, hogy a tényleges válaszok a kívánt válaszokkal minél inkább megegyezzenek, a hálózat kimenete és a kívánt kimenet közötti különbség csökkenjen. Ellen rzött tanulásról beszélünk akkor is , amikor a kívánt válasz pontosan nem ismert, csupán annyit tudunk, hogy a hálózat válasza helyes vagy nem. Ezt meger sít (reinforcement) tanulásnak nevezzük. A neurális hálózatok tanításáról lévén szó, említést kell tenni a tanítási folyamat fontosabb lépéseir l. Amint ismert az információ, egy neurális háló súlyzóiban van eltárolva, és a tanítási folyamat ezen súlyzók meghatározását, beállítását, módosítását jelenti. A tanítás egy ciklikusan ismétl d folyamat, amely során a tanító halmazból egyenként vesszük a bemeneteket, megmutatjuk a hálónak, felhasználva az aktuális súlyzókat, az adott bemenetre kiszámoljuk a háló kimenetét, majd az elvárt érték és a kiszámolt érték között számolunk egy hibát. A hibát majd alkalmazzuk a súlyzók módosítására. A tanítási algoritmust két különböz osztályba sorolhatjuk, attól függ en, hogy milyen módon határozzuk meg a hibát, éspedig minden bementre egyenként számolunk egy hibát, majd minden egyes bemenet után tanítjuk a háló súlyzóit vagy csak a teljes tanító halmazra számolunk egy hibavektort, amely alapján csak egyetlen egyszer módosítjuk a súlyzókat. Els esetben a tanítás a hiba pillanatnyi értéke alapján történik (ezt a tanítási módot szokás online tanításnak nevezni) vagy a tanító halmaz minden egyes elemére kiszámolt globális hiba alapján (ezt a tanítási módot szokás batch tanításnak nevezni).
9
Mesterséges Intelligencia Labor
Tanítási ciklus –A tanítás során a tanító halmazból veszünk egy be- és kimeneti elempárt. Az adott bemenetre kiszámoljuk a neuron (neurális háló) kimenetét. Az elvárt érték és kiszámolt értékb l számolt hibát felhasználjuk a súlyzók (paraméterek) módosítására. A tanítás során vesszük egyenként a tanító halmazból az elempárokat, és minden elempárra elvégezzük a paraméter módosítást. Egy ilyen ciklust- a háló tanítását az összes elempárra - tanítási ciklusnak nevezünk. Egy neurális háló tanítása a tanítási ciklusok sorozatából tev dik össze. A tanítás befejez dését annak alapján dönthetjük el, hogy közben leellen rizzük, hogy a háló teljesíti-e az elvárt feltételeket. A felügyelt tanítás esetében például minden tanítási ciklusra számolunk egy globális hibát, melyet ábrázolunk, és ha a hiba egy bizonyos küszöbérték alá kerül, leállítjuk a tanítást. A tanítás lényegében több fázisból tev dik össze -els fázis, amikor tanítjuk a hálót, és erre rendelkezésre áll egy tanító halmaz, amely ki-bemeneti elempárokat tartalmaz -egy tesztel fázis, amikor leellen rizzük a háló viselkedését olyan bemenetekre is, amelyek nem voltak jelen a tanító halmazban. El fordulhat, hogy a tanítás sikerrel jár, de a tesztelés sikertelen. Ebben az esetben újra kell tanítani a hálót. Mindkét esetben százalékban szokták kifejezni, hogy a tanító halmaz hány százalékára viselkedik helyesen a háló. A sikeres tanítás és tesztelés után elmentjük a súlyzókat és alkalmazhatjuk a hálót. Ahhoz, hogy egy adott tizedesnyi pontossággal meg tudjuk határozni, hogy hány százalékban ad helyes eredményt a háló, a tanító halmaznak megfelel számú elemet kell tartalmaznia. Ha 10 darab elemre tanítjuk a hálót, csak 10%-os pontosággal tudjuk meghatározni a helyes m ködést. Ha 10 elemb l egy elemre téved, azt jelenti, hogy 90% százalékban helyesen m ködik a háló. Nem ellen rzött tanulásnál nem állnak rendelkezésünkre adott bemenethez tartozó kívánt válaszok. A hálózatnak a bemenetek és a kimenetek alapján kell valamilyen viselkedést kialakítania, a környezetb l nincs semmiféle visszajelzés, ami a hálózat viselkedésének helyességére utalna. Ebben az esetben is rendelkezésünkre áll egy tanító halmaz, de csak bemeneteket tartalmaz, és nem tartalmazza az elvárt kimeneteket. Analitikus tanulás-a megfelel viselkedést biztosító hálózat kialakítása elméleti úton, a feladatból határozható meg. Ebben az esetben nem is beszélhetünk tanulásról, a hálózat megfelel kialakítása nem lépésenként, a környezetb l szerzett információ fokozatos felhasználása révén, hanem analitikus módszerekkel végezhet el. Tanító halmaz - be és kimeneti elempárok, amelyek rendelkezésünkre állnak. Általában ezt egy táblázatban tároljuk. A következ kben bemutatásra kerül az egyszer perceptron és ADALINE hálók struktúrája és az LSM tanítási algoritmus. Az egyszer perceptron csak egyszer bb gyakorlati feladatok megoldására alkalmazható (a bináris kimenetb l, és lineráis szeparálási képességéb l adódóan). Az egyszer perceptron kiindulási pont a többréteg percetron (MLP) tanulmányozásában. A PERCEPTRON az egyike a legels és legegyszer bb mesterséges neurális hálózatoknak. Az el recsatolt többréteg hálózatok olyan speciális változatának tekinthet , amely egyetlen rétegb l és azon belül egy vagy több processzáló elemb l áll. Az egy processzáló elemb l álló változatot szokás egyszer perceptronnak is nevezni. A Perceptront eredetileg Rosenblatt javasolta egy olyan hálózatként, amely képes arra, hogy megfelel beállítás, tanítás után két lineárisan szeparálható mintahalmazt szétválasszon. A
10
II. LABOR Tanulás, Perceptron, Adaline
lineáris szeparálhatóság azt jelenti, hogy a bemeneti mintateret egy síkkal (hipersíkkal) két diszjunkt tartományra tudjuk bontani úgy, hogy a két tartomány eltér osztályba tartozó bemeneti mintapontokat tartalmazzon. Az egyszer perceptron tehát kétosztályos esetekben lineáris feladatok ellátására alkalmas. A kés bbiekben az egyszer perceptront továbbfejlesztették, több elem , illetve többréteg hálózatokká, amelyek képességei az egyszer perceptron képességeit messze felülmúlják. A perceptron struktúrája az alábbi ábrán látható. Az egyszer perceptron egy partikuláris esete a McCulloch-Pitts mesterséges neuron modellnek, amikor az aktiváló függvény egy lépcs függvény .
Az egyszer neuron szerepe osztályozni a bemeneteket a két lehetséges osztály egyikébe (y = +1 vagy y = -1) A kimenetet a következ képpen kell kiszámítani:
v=
N i =1
wi xi − θ
y = ϕ (v) = sgn(v) =
+ 1, ha x(n ) ∈ C1
− 1, ha x(n ) ∈ C2
Az osztályok a következ egyenlet által megadott hipersíkkal vannak szétválasztva: N i =1
wi xi − θ = 0
Ennek egy partikuláris esete N=2
w1 x1 + w2 x2 − θ = 0 , egy egyenes egyenletét ábrázolja az x2Ox1 síkban. Ebben az esetben a bemeneti vektorok egy egyenessel vannak elválasztva. Egy példa egy ilyen típusú feladatra az ÉS logikai függvény, ellenpélda pedig a XOR, ami nem szeparálható egy egyenessel.
N=3 esetében az elválasztás egy síkkal, N>3 esetében hipersíkkal történik. Az egyszer perceptron csak lineárisan szeparálható feladatok megoldására alkalmazható.
11
Mesterséges Intelligencia Labor
Változók, paraméterek jelölése: • • vektora) • • • •
x = [− 1, x1 , x2 ,..., xN ]
T
w = [θ , w1 , w2 ,..., wN ]
T
-bemeneti vektor
-súlyzó vektor (szinaptikus kapcsolatok
θ−küszöb (referencia bemenet) y − a neuron kimenete d − várt válasz µ − tanítási együttható, 0 <=µ < 1.
Perceptron típusú neurális háló tanításának lépései:
1) súlyzók inicializálása: w = 0; 2) a háló (neuron) kimenetének kiszámolása
[
y = sgn wT ⋅ x
]
ahol sgn() a aktiváló függvény. 3) módosítjuk a súlyzók értékét (szinaptikus kapcsolatok er sségét) w[k + 1] = w[k ] + µ (d − y )x -vektoriális forma w i [k + 1] = w i [k ] + η (d − y )xi -skaláris forma
+ 1, ha x(n ) ∈ C1
ahol d (n ) =
− 1, ha x(n ) ∈ C2 4) vesszük a következ elemet a tanító halmazból Addig ismételjük a ciklust, amíg az osztályozás minden bemeneti vektorra helyes. ADALINE mesterséges neuronháló. LMS (Least Mean Square) algoritmus
Az ADALINE neuron abban különbözik a perceptron-tól, hogy a hibát nem a kimeneten, hanem a lineáris kimenet alapján számoljuk ki. Az LMS algoritmust ismert Widrow – Hoff algoritmus, vagy delta-szabály. Az ADALINE felépítését a következ ábra szemlélteti
a) a súlyzók inicializálása wk(0) = 0, k = 1,2, ..., N b) a háló kimenetének a kiszámolása egy bemeneti vektorra a tanítási halmazból y =
N j =0
wj x j
c) kiszámoljuk a hibát, mint a várt kimenet és a lineáris kimenet közötti különbséget d) módosítjuk a súlyzókat a delta- szabályt alkalmazva
12
II. LABOR Tanulás, Perceptron, Adaline
Egy feldolgozó elem nemlineáris aktiváló függvénnyel
A súlyzók módosítása abban az esetben, ha a neuron nemlineáris aktivációs függvényt tartalmaz, a következ képlet alapján alakul:
w(k + 1) = w(k ) + µεf ( s)′ x(k ) ahol ε (k ) = (d (k ) − y(k ) ) az elvárt érték és a háló kimenetén kapott érték közötti különbség, f ( s )′ az aktivációs függvény deriváltja, w –súlyvektor, x a bemeneti vektor, µ pedig a tanítási együttható. Példa feladat: Tervezzünk egy neuronhálót, amelyet 3x3 mátrixon ábrázolt karakterek azonosítására alkalmazunk. A feladat megoldásának fontosabb lépései: 1) A tanítandó karakterek tervezése (meghatározása) 2) A háló be és kimeneteinek a meghatározása 3) A neuronháló struktúrájának a meghatározása 4) A tanítóhalmaz felépítése 5) A háló tanítása 6) A háló tesztelése csak el hívási fázist alkalmazva
Végezzük el a háló tanítását két esetre majd hasonlítsuk össze a kapott megoldásokat. Els változatban két karakterre, majd négy karakterre végezzük el a háló tanítását. Két karakteres megoldásnál alkalmazzuk a következ karaktereket
A neuronháló bemeneteinek a számát a karakter pixelek száma (a neuronháló változó bemenetei), valamint egy konstans érték bemenet együttesen adja. A neuronháló kimenetei számának a meghatározására két megoldást javasolunk. Ha két karakterünk van a háló kimenetét binárisan lehet kódolni. Például a T karakternek feleljen meg logikai igaz, a H karakternek pedig logikai hamis. Ennek megfelel en a háló egyetlen PERCEPTRON típusú neuronnal megvalósítható. Ebben az esetben a háló tanítása könnyen elvégezhet . Igen ám, de ennek a megoldásnak van egy hátránya.
13
Mesterséges Intelligencia Labor
Ha hibás karaktert viszünk a bemenetre, attól függ en, hogy melyik karakterhez hasonlít jobban vagy T, vagy H karakternek ismeri fel a háló, a valóságban pedig egy harmadik karakterr l van szó.
A hibás karaktereknek a felismerésére a megoldás a következ : annyi kimenete legyen a neuronhálónak mint az osztályozandó karakterek száma. Ebben a megközelítésben minden egyes karakterhez hozzárendelünk egy perceptron típusú neuront. Ha a helyes karakter kerül a háló bemenetére a karakternek megfelel neuron kimenete aktív aktív lesz, míg hibás karakter esetében a háló kimenete nulla marad.
Ha több karaktert kell osztályozni a hálónak annyi kimenete lesz ahány karakter.
Az következ táblázatokban a tanítóhalmazok alakulása van feltüntetve a három esetnek megfelel en. 1. táblázat zat Két karakter egy kimenet 1 1
14
1 0
1 1
Bemenetek 0 1 0 1 1 1
0 1
1 0
0 1
Elvárt kimenet 1 0
II. LABOR Tanulás, Perceptron, Adaline
2. táblázat Két karakter két kimenet 1 1
1 0
1 1
Bemenetek 0 1 0 1 1 1
0 1
1 0
0 1
Elvárt kimenet 1 0 0 1
0 1 1 1
Elvárt kimenet 0 0 1 0 0 1 0 0
3. táblázat 4 karakter 4 kimenet 1 1 1 1
1 0 0 1
1 1 0 1
Bemenetek 0 1 0 1 1 1 1 0 0 0 0 1
0 1 1 0
1 0 1 0
1 0 0 0
0 0 0 1
A kimenetek kódolása függ az alkalmazott aktivációs függvény típusától. Küszöbfüggvényt alkalmazva a kimeneteket 0, 1 el kodoljuk, lépcs függvény esetében pedig -1,1. A tanítás több tanítási ciklust tartalmaz. Egy tanítási ciklus a következ lépéseket tartalmazza a) a tanítóhalmazból a következ karakter bevitele a neuronháló bemenetére b) a háló kimenetének kiszámolása c) a hiba kiszámolása az elvárt kimenet és a kiszámolt háló kimenete között d) a súlyzók tanítása e) a hiba összegzése A tanítási ciklusokat addig kell ismételni, amíg a hiba egy meghatározott érték alá nem csökken. Mivel el re a tanítási ciklusoknak a száma ismeretlen, egyszerübb ha el re meghatározzuk a tanítási ciklusok számát, majd ellen rizz k, hogy a hiba eléggé lecsökkent-e? Ha a hiba a tanítás után a meghatározott küszöbérték alá csökkent, a tanítást befejezetnek mín sítjük. Ellentkez esetben tanítási együtthatót módosítva, tanítási ciklusok számát növelve megismételjük a neuronháló tanítását. A tanító halmazon kívül egy tesztel halmazt is fel kel építeni. A tesztel halmaz nem csak ideális, hanem zajos, hibás karaktereket is tartalmaz. A tesztel halmaz minden elemére kiszámoljuk a háló kimenetét. Minden egyes tanítási ciklusban minden egyes karaktert beviszünk a háló bemenetére A tanítóhalmazt két külön mátrixban van tárolva. A T mátrix tartalmazza a karakterek kódolását a d mátrix pedig tartalmazza a kimenetek kódolását. A T mátrix méretét tanulmányozva, azt látjuk, hogy egy-el több oszlopot tartalmaz mint a 3-as táblázatban bemutatott tanító halmaz. Ennek oka, hogy a konstans érték bemenet is bekerült a tanító halmazba. Amint látható a T mátrix els oszlopának minden egyes eleme 1-es. Az els oszlop reprezentálja a konstans érték bemeneteket. A tanítás során a konstans értékeket is tanítani kell. A konstans értéknek a tanító halmazba való bevitelével azt érjük el, hogy ehhez a bemenethez kapcsolódó sulyzó reprezentálja a konstans értéket aminek a tanítása egyszerre fog történni a változó bemenetekhez kapcsolodó súlyzókkal. Az alábbi példában 4 karakter tanítása van szemléltetve T=[1 1 1 1 0 1 0 0 1 0; 1 1 0 1 1 1 1 1 0 1; 1 1 1 1 1 0 0 1 0 0;
15
Mesterséges Intelligencia Labor
1 0 0 1 0 0 1 1 1 1]; Amint látható a kimenetek kódolásából aktivációs függvényként lépcs függvényt alkalmaztunk d=[1 -1 -1 -1; -1 1 -1 -1; -1 -1 1 -1; -1 -1 -1 1]; A következ sorban a súlyzómátrixok véletlenszer inicializálása látható. A súlyzómátrix sorainak a számát meghatározza a neuronháló bemeneteinek a száma, míg a súlyzómátrix oszlopainak a számát meghatározza a neuronk (a hálo kimeneteinek) a száma w=(rand(10,4)-0.5)*A; a tanítási együttható [0 1] közötti értéket vehet fel. Túl nagy tanítási együtthatót választva a tanulás divergensé válhat. Túl kicsi tanítási együttható lassú tanulsát eredményez. A tanítást ciklus többször lefutatva különböz tanítási együtthatókra meghatározhatóak azon tannítási együthatóknak az értéke, amely a legyorsabb tanulást eredményezi. u=0.05; Az alábbi programrész tartalmazza a háló tanítását. Amint látható a programban két ciklus különíthet el. A bels ciklus biztosítja a tanító halmazból minden egyes karakter tanítását. A küls ciklus határozza meg a tanítási ciklusoknak a számát. for i=1:N E(i)=0; for j=1:4 x=T(j,:)'; s=w'*x; y=sign(s); h=d(j,:)'-y; w=w+u*x*h'; E(i)=E(i)+h'*h;
%- a j-ik elem kiválasztása a tanítóhalmazból %az inger kiszámolása % a háló kimenetének a kiszámolása % a hiba kiszámolása % a súlyzok tanítása % a hiba összegzése egy tanítási ciklusra. A hibát egy vektorban tároljuk, a vektor minden egyes eleme egyes tanítási ciklusokban kapott hibákat tartalmazzák. Grafikusan ábrázolva a hibát következtetni lehet a háló tanulásának alakulására.
end end plot(E); grid on; title('Négyzetes hiba változása') xlabel('Cikluslépés') ylabel('Négyzetes hiba')
A tesztelési fázis a következ programrészben van szemléltetve. Amint látható a tesztelés csak el hívási fázist tartalmaz, és megyegyezik a tanítás során az el hívási fázisaal, azzal a különbséggel, hogy a bemeneteket a Teszt_halmaz nev mátrix tartalmazza.
16
II. LABOR Tanulás, Perceptron, Adaline
for j=1:4 x=Teszt_halmaz(j,:)'; s=w'*x; y=sign(s); end
%- a j-ik elem kiválasztása a tanítóhalmazból %az inger kiszámolása % a háló kimenetének a kiszámolása
Gyakorlati feladatok kérdések
1) Tervezzünk egy-egy neurális hálót az ÉS, VAGY, XOR logikai függvények megvalósítására. Probáljuk a súlyzók értékét analitikusan meghatározni, majd a háló tanítására alkalmazzuk a delta-szabályt 2) Tervezzünk egy neuronhálót melynek bemeneteit egy 3x3–as mátrixon ábrázolt bemeneti vektorból kapjuk. A hálót tanítsuk meg a T és H karakterek felismerésére. Hasonlítsuk össze a PERCEPTRON és ADALINE algoritmusokat a tanítási hiba függvényében, valamint tanulmányozzuk a hiba változását különböz tanítási együtthatókra. 3) Módosítsuk a háló topológiáját úgy, hogy négy különböz karaktert tudjunk osztályozni. Végezzük el a tanítást különböz tanítási együtthatókra, és hasonlítsuk össze a PERCEPTRON és ADALINE algoritmusokat. 4) Vezessük le a w(k + 1) = w(k ) + µεf ( s)′ x(k ) tanítási képletet, ha a neuron nemlineáris aktivációs függvényt tartalmaz, kiindulva a következ képletb l: wi (k + 1) = wi (k ) − µ
∂ε (k ) 2 ∂wi (k )
17