Dunaújvárosi Főiskola Informatikai Intézet
Mesterséges neurális hálók Dr. Seebauer Márta főiskolai tanár
[email protected]
Szimbolikus és nem-szimbolikus MI
Szimbolikus tudásfeldolgozás 1. Tudásbeszerzés 2. Tudásábrázolás 3. Szimbolikus következtetés Mesterséges neurális hálók 1. Tanulási minta kiválasztása 2. Tanítás 3. Analóg következtetés
Az emberi agy
1. 2. 3. 4. 5. 6. 7. 8.
Nagyagy Kérges test Köztes agy Thalamus Hypothalamus Agyalapi mirigy Középagy Kisagy Híd Nyúlt velő
Az agy és a digitális számítógép összehasonlítása Számítógép
Emberi agy
Műveletvégző egység
106 logikai kapu/CPU
1011 neuron
Tároló
1010 bit RAM, 1012 bit HDD
1011 neuron
Ciklusidő
10-8 s
10-3 s
Sávszélesség
109 bit/s
1014 bit/s
Működési mód
Néhány párhuzamosan működő CPU soros feldolgozást végez
Teljesen párhuzamos feldolgozás
Hibatűrés
lehet kritikus
jó, de romlik
A biológiai és a mesterséges neuron A környező idegsejtekből a dendritek veszik át az ingerületet, és továbbítják a sejttesthez. K1
A bejövő jelek emelik vagy csükkentik a sejttest potenciálját. Megfelelő küszöbérték elérése esetén elektromos impulzus fut végig az axonon. A jeleket bonyolult elektrokémiai reakciók szállítják a szinapszisokon keresztül egyik idegsejtről a másikra.
K2
Kn w1n w2n
netn
fact
fout
oj
an
on
wjn
Kj
Bemeneti Aktivációs Kimeneti függvény függvény függvény
Dendrit
Bemeneti értékek oj a súlyfüggvényeken win keresztül lép be a neuronba.
Sejtmag Bejövő szinapszisok
Sejttest vagy szóma
Axon
A lineáris bemeneti függvény netn kiszámítja a bemeneti értékek súlyozott összegét: netn = ∑ w jn o j A nemlineáris aktivációs függvény fact a bemeneti j függvényből egy meghatározott küszöbérték θ n figyelembe vételével előállítja a neuron aktivációs értékét: a = f (net ,θ ) n
Kivezető szinapszisok
act
A kimeneti függvény fout előállítja an aktivációs értékből on kimeneti értéket , amely a következő neuronok bemenetére kerül: on=fout(an)
n
n
Aktivációs függvények jellemzően szigmoid jellegűek 1, ha x ≥ 0 f act ( x) = − 1, egyébként
1, ha x ≥ θ f act ( x) = 0, egyébként
f act ( x) = cx
θ lineáris
ugrásüggvény
f act ( x) =
1 1 + e −cx
szigmoid függvény
előjelfüggvény
f act ( x) = tanh(c − x)
Tangens Hyperbolicus
Hálózati struktúrák Előrecsatolt háló • Bemeneti neuron réteg (input layer) • Kimeneti neuron réteg (output layer) • Rejtett réteg (hidden layer) Előrecsatolt háló több rejtett réteggel Előrecsatolt háló egy rejtett réteggel közvetlen kapcsolatokkal a bementi és a kimeneti réteg között (shortcut connection)
Részlegesen visszacsatolt háló
Tanulás
• •
•
A tanulás nem más, mint a háló paramétereinek hangolása oly módon, hogy a alkalmazkodjon a tanító halmaz adataihoz, annak érdekében, hogy a problématérben a háló minden feladatot a lehető legjobban oldjon meg (általánosító képesség) Felügyelt tanulás (supervised learning) ismertek a bemeneti értékek és a nekik megfelelő kimeneti értékek. Hatékony eljárás. Megerősítéses tanulás (reinforcement learning) a kimeneti értékekhez nem rendelhetőek egzakt bemeneti értékek, csak azt lehet megállapítani, hogy a kimeneti érték helyes vagy nem. Kevésbé hatékony módszer Nem felügyelt tanulás (unsupervised learning) a háló saját maga dönti el, hogyan kell a feladatra reagálnia. Akkor alkalmazzák, ha az eredmény előzetesen nem ismert, pl. klasszifikáció.
Neurális hálók fejlesztési folyamata A háló kimeneti értékének kiszámítása
Háló struktúra kialakítása Példahalmaz kiválasztása
Összehasonlítás a példahalmazzal
Tanulás
Túl nagy hiba
Súlytényezők változtatása
Pontosság megfelelő
Tesztadatok kipróbálása
Háló struktúrájának megváltoztatása
Tesztelés A háló kimeneti értékének kiszámítása
Túl nagy hiba
Összehasonlítás az elvárt értékekkel Pontosság megfelelő
Alkalmazás
Perceptron modell • egyszerű előre csatolt háló • nincs rejtett réteg • a emberi szem működését utánozza bementi réteg x 1
w 1
x 2
w 2
x 3
x n
kimeneti réteg
w0 y
bementi réteg w x 1 1 x 2
w 2
x 3
w 3
w 3 . . . w . n
Egy kimenetű perceptron
n 1, ha ∑ xi wi >w0 i =1 y= n 0, ha x w ≤w ∑ i i 0 i =1
x n
. . w. n .
kimeneti réteg w01 y 1 w02 y 2 w03
y3
w04 y 4
Több kimenetű perceptron
Tanulási példa AND függvény megvalósítása perceptronnal
o1 o2
w1 θ = 0.5 act=? w2
net = w1o1 + w2o2 1, net ≥ θ act = 0, egyébként
Input x
Output t
1,1
1
1,0
0
0,1
0
0,0
0
o=act
w1 = 0 w2 = 0 x1= (o1,o2) = (1,1) net = 0*1+0*1 =0 ox1= 0 errx1= tx1 – ox1=1-0 = 1 w1‘ = w1+ errx1o1 = 0 + 1*1 = 1 w2‘ = w2+ errx1o2 = 0 + 1*1 = 1 x2= (o1,o2) = (1,0) errx2= tx2 – ox2=0-1 = -1 w1‘‘ = w1‘+ errx2o1 = 1 + (-1)*1 = 0 w2‘‘ = w2‘+ errx2o2 = 1 + (-1)*0 = 1
…
Delta-szabály egy egyszerű adaptív eljárás a súlyok beállítására előre csatolt hálók esetében. A delta-szabály olyan arányban változtatja az adott súlytényező értékét, ahogyan az hozzájárult az adott hiba értékéhez. Hibának az adott bemeneti mintától várt eredmény és a ténylegesen kiszámított kimeneti érték különbségét értjük.
PROCEDURE Delta-szabaly REPEAT FOR m:=1 TO Mintak_szama DO Mintam a bemeneti retegen; Kimeneti ertekek szamitasa; FOR j:=1TO Neuronok_szama DO IF teachoutputj ≠ outputj THEN FOR i:=1 TO Bemeneti_neuronok_szama DO wij := wij + Tanitasi_tenyezo * outputj * (teachoutputj - outputj); ENDIF; ENDFOR; ENDFOR; Az osszes mintara; UNTIL kivant pontossag; END;
Tanulási példa
x1= (o1,o2) = (1,1) net = 0*1+0*1 =0 ox1= 0 errx1= tx1 – ox1=1-0 = 1
AND függvény megvalósítása perceptronnal o1 o2
w1 = 0 w2 = 0
w1‘ = w1+ λ errx1o1 = 0 + 0.2*1*1 = 0.2 w2‘ = w2+ λ errx1o2 = 0 + 0.2*1*1 = 0.2
w1 θ = 0.5 act=? w2
o=act
λ = 0.2 tanulási tényező
net = w1o1 + w2o2 1, net ≥ θ act = 0, egyébként
wi‘ = wi+ λ(tx – ox) oi
x2= (o1,o2) = (1,0) errx2= tx2 – ox2=0-1 = 0
…
x1= (o1,o2) = (1,1) net = 0.2*1+0.2*1 =0.4 ox1= 0 errx1= tx1 – ox1=1-0 = 1 w1‘‘ = w1‘+ λ errx1o1 = 0.2 + 0.2*1*1 = 0.4 w2‘‘ = w2‘+ λ errx1o2 = 0.2 + 0.2*1*1 = 0.4
Perceptron és az AND probléma
1
Egyenes: o1 + o2 –1,5 = 0
0
1
Input
Output
1,1
1
1,0
0
0,1
0
0,0
0
A perceptron csak olyan függvényeket képes reprezentálni, amelyeknél található a kimeneti értékeket reprezentáló pontokat elválasztó egyenes. Az ilyen függvényeket lineárisan szeparálhatóaknak nevezzük.
Perceptron és az XOR probléma
1
Egyenes: o1 +o2 –1,5 = 0
0
1
Input
Output
1,1
0
1,0
1
0,1
1
0,0
0
Többrétegű előrecsatolt hálók
bementi réteg x 1 x x
x
2 3
w01 w02 w03 . . . w0n .
n
rejtett réteg
kimeneti réteg
w11 w12 w13 w14
w21
y
Hiba-visszaterjesztés alapján történő tanulás (back propagation) Tanulási minta p
Ni
oi=pi netj
Nj
oj=actj netk
Bemeneti réteg
Rejtett réteg(ek)
Nk
ok=actk
Kimeneti réteg
A többrétegű hálóban a súlyok mindegyike több, mint egy kimenet értékének kialakításában vesz részt. A hiba-visszaterjesztési algoritmus lényege a kimeneti hiba ésszerű szétosztása az egyes súlyok között, azoknak a kimenetre gyakorolt hatásának arányában.
Backpropagation algoritmus A j neuron által okozott hiba. A hiba értéke e tényleges és a várt kimeneti érték különbsége.
E(Wj) = E(w1j, w2j, …, wnj) A hibafüggvény súlytényező szerinti első parciális deriváltja adja az adott súlytényező korrekciós értékét.
∆wij = −η
∂E ∂wij
A háló kimenete és a súlytényező közötti összefüggés:
o j = f out ( f act (net j )) net j = ∑ o j ⋅ wij i
f out = Id A hibaértékeket a rejtett csomópontok és a kimeneti csomópontok közötti kapcsolatok erőssége alapján osztjuk szét, és visszaterjesztjük a rejtett csomóponthoz
∆wij = −η
∂E ∂o j ∂net j ⋅ ⋅ ∂o j ∂net j ∂wij
Backpropagation algoritmus ∆wij = −η
δj =
∂E ∂o j ∂net j ⋅ ⋅ ∂o j ∂net j ∂wij ∂o j
∂E ∂o j E=
∂net j 1 (t j − o j ) 2 ∑ 2 j
=
∂net j ∂wij ∂f act (net j ) ∂net j
∂net j ∂E ∂ = ∂o j ∂o j
1 ∑ (t k − ok ) 2 = −(t j − o j ) 2 k
∂ ∂wij
= f 'act (net j )
f 'szigmoid ( x) =
∂o j
=
∑o w k
kj
= oi
k
f szigmoid ( x) =
1 1 + e− x
d 1 = f szigmoid ( x) ⋅ (1 − f szigmoid ( x)) dx 1 + e − x
= f szigmoid (net j ) ⋅ (1 − f szigmoid (net j )) = o j ⋅ (1 − o j )
PROCEDURE Backpropagation n_ciklus := 0; REPEAT hiba := 0; n_ciklus := n_ciklus + 1; FOR i:=1 TO kimeneti_neuronok_szama DO Mintai a bemeneti retegre; FOR j:=1TO kimeneti_neuronok_szama DO Kimeneti ertek kiszamitasa oj; Hiba meghatarozasa fj := tj - oj; Korrekció meghatarozasa fsigj := oj*(1– oj)*fj; hiba := hiba + fj2; ENDFOR; FOR s := kimeneti_reteg TO bemeneti_reteg DO FOR k := 1 TO retegek_szamas DO fsum := 0; FOR m := 1 TO neuronok_szama(s+1) DO fsum := wkm * fsig(s+1)m; ENDFOR; fsigsk := osk * (1-osk)*fsum; FOR m := 1 TO neuronok_szama(s+1) DO wkm := wkm +tanulasi_tenyezo * osk * fsig(s+1)m; ENDFOR; ENDFOR; ENDFOR; ENDFOR; UNTIL hiba < megengedett_hiba OR megadott_ciklusszam; END Backpropagation;
Backpropagation tanulási algoritmus A megfigyelt hiba felhasználásával számítsuk ki a kimeneti egységekre a korrekció értékét. A kimeneti réteggel kezdve ismételjük a háló mindegyik rétegére, amíg a legelső rejtett réteget el nem érjük: -
terjesszük vissza a hiba értékét az előző rétegre
-
módosítsuk a két réteg közötti súlyokat
A mesterséges neurális hálók tipikus alkalmazásai
• • • •
Bonyolult, sok, zajos bemenettel rendelkező, folytonos értékkészletű függvények reprezentációjára használják, amikor a logikai alapú módszerek nehezen alkalmazhatóak Klasszifikáció adatok, minták osztályozása döntéstámogatás, minőségellenőrzés Alakfelismerés kézírásfelismerés, képfelismerés, arcfelismerés, ujjlenyomatellenőrzés Prognosztika tőzsdei előrejelzés, anyag- és energiafelhasználás, termelésvolumen becslése Vezérlések folyamatvezérlés, robotika