I. LABOR -Mesterséges neuron
I. LABOR -Mesterséges neuron A GYAKORLAT CÉLJA: A mesterséges neuron struktúrájának az ismertetése, neuronhálókkal kapcsolatos elemek, alapfogalmak bemutatása, aktivációs függvénytípusok szemléltetése, neuron matematikai modellje. 1)Elméleti alapfogalmak A neurális hálózat az a hardver vagy szoftver megvalósítású párhuzamos eszköz amely: azonos vagy hasonló felépítésű, lokális feldolgozást végző műveleti elemek, neuronok (processing element, neuron) általában rendezett topológiájú, nagymértékben összekapcsolt rendszeréből áll • rendelkezik tanulási algoritmussal (learning algorithm), amely általában minta alapján való tanulást jelent • rendelkezik előhívási algoritmussal (recall algorithm) A neurális hálózatok működése tipikusan két fázisban történik: 1 fázis, amelyet tanulásnak nevezünk- a hálózatban valamilyen módon eltároljuk a kívánt információ feldolgozó eljárást. 2 a második fázisban, -előhívási fázis- a tárolt eljárás felhasználásával elvégezzük az információfeldolgozást. A két fázis a legtöbb esetben időben szétválik, rendszerint a tanulási fázis lassú, hosszú iterációt, esetleg sikertelen tanulási szakaszokat is hordoz. Az előhívási fázis gyors feldolgozást jelent. Ha a két fázis nem válik szét, bizonyos adaptív rendszerek az információ-előhívási szakaszban is módosítják paramétereiket, tanulnak. •
A neuronok felépítése A neuron több bemenetű, egy kimenetű műveleti elem, amely rendelkezhet lokális memóriával, amelyben akár bemeneti, akár kimeneti értékeket tárol. A bemeneti és tárolt értékekből az aktuális kimeneti értéket tipikusan nemlineáris transzfer-függvény segítségével hozza létre, amelyet aktiváló függvénynek nevezünk. θ w1 x y ν w2 Σ x wN xN • • • • • • •
x1, x2 ……xN-a neuron bemenetei vagy X=[ x1, x2 ……xN]T-bemeneti vektor θ-referencia bemenet ν-inger (súlyozott összeg ) y-a neuron kimenete wi-súlyzó W=[w1 w2 … wi …wN]T- súlyzóvektor ϕ aktivációs függvény
3
Mesterséges Intelligencia Labor
Az xi bemenetek változó értékűek, míg a θ konstans marad, miután az értékét meghatároztuk. Az xi skalár-bemenetek wi súlyozással kerülnek összegzésre, majd a súlyozott összeg egy nemlineáris elemre kerül. A bemeneti jelek súlyozott összegét, mely a nemlineáris elem bemenete, ingernek (excitation), míg a kimeneti jelet válasznak (activation) nevezzük. A ϕ függvényt aktiváló függvénynek (activation function) nevezzük. A neuron kimenete a következőképpen számolható ki: N
ν = ∑ xi wi + θ ,
y = ϕ (ν )
i =1
A mesterséges neuron esetében a következő aktivációs függvények alkalmazhatóak: a) Küszöbfüggvény 1 ha ν ≥ 0 0 ν <0
ϕ (ν ) = b) Lépcsőfüggvény
1 ha ν ≥ 0 ϕ(ν ) = −1 ν < 0
c) Logisztikus vagy szigmoid függvény. Az a paraméterrel meg lehet határozni a függvény szaturációs részét. A függvény különböző a paraméterekre ábrázolva a következő grafikonon látható 1 ϕ (ν ) = 1 + e − aν
d) Tangens hiperbolikus függvény. Az alábbi ábrán a tangens hiperbolikus függvény különböző értékekre van ábrázolva.
4
I. LABOR -Mesterséges neuron
ϕ (ν ) =
1 − e − aν 1 + e − aν
e) Telítéses lineáris függvény − 1 ha ν < −1 ϕ (ν ) = ν ha − 1 ≤ ν ≤ 1 1 ha ν > 1
f) Gauss függvény. A gauss függvényt például az RBF típusú hálók esetében
alkalmazzák. Az RBF típusú hálót a következő laborórákon tanulmányozzuk.
߮ሺݔ, ܿ, ߪሻ =
ିԡ௫ିԡమ ݁ ଶఙమ
ฮ ݔ− ܿฮ = ඥሺݔଵ − ܿଵሻଶ + ሺݔଶ − ܿଶሻଶ + ⋯ + ሺݔ − ܿ ሻଶ x-bemeneti vektor, c-középpont vektor, σ-szórás Az aktivációs függvény típusának a megválasztása attól függ, hogy a neuron kimenete milyen értékeket vehet fel. Ha a kimenet egy bináris érték, aktivációs függvénynek küszöbfüggvényt vagy lépcsőfüggvényt választunk, 0, 1 értékek esetében küszöbfüggvényt, -1, 1 értékek esetében pedig lépcsőfüggvényt. Ha a kimenet folytonos érték, akkor egy folytonos aktivációs függvényt alkalmazunk, annak függvényében, hogy a kimenet csak pozitív, vagy pozitív / negatív értékeket is felvehet. Csak pozitív értékek esetében szigmoid függvényt, míg pozitív negatív értékek esetében tangens hiperbolikus függvényt alkalmazunk. Megoldandó feladatok 1) Ábrázoljuk grafikusan és tanulmányozzuk a szigmoid és tangens hiperbolikus függvényeket az a paraméter függvényében. Milyen szerepet játszik az a paraméter? 2) Ábrázoljuk grafikusan és tanulmányozzuk a szigmoid és a tangens hiperbolikus függvényeket az y = ϕ (ν + θ ) θ paraméter függvényében. Milyen szerepet játszik
5
Mesterséges Intelligencia Labor
a θ paraméter? 3) Ábrázoljuk grafikusan a szigmoid és tangens hiperbolikus függvények deriváltját 4) Ábrázoljuk grafikusan a gauss függvényt a középérték és szorásparaméterek függvényében 5) Milyen aktivációs függvényt kell alkalmazni, ha sin(x) függvényt szeretnénk approximálni? 6) Milyen aktivációs függvényt kell alkalmazni, ha sin(x)2 –et szeretnénk approximálni? Megoldás a tangens hiperbolikus és szigmoid függvények tanulmányozására a ν és θ paraméterek függvényében %1 laborgyakorlat Mesterséges Intelligencia clear all; close all; %%Tangens hiperbolikus függvény ábrázolása az a paraméter függvényében figure(1); hold on; grid on; szin=['r','g','b'] teta=0 tang_hip=@(s,a,teta) (1-exp(-a*(s+teta)))./(1+exp(-a*(s+teta))) a=.5:.5:1.5; s=-10:0.1:10 for i=1:length(a) y=tang_hip(s,a(i), 0); %a valtozo, teta konstans plot(s,y,szin(i)); legend_text{i}=strcat('a=',num2str(a(i))); end; xlabel('inger'); ylabel('kimenet'); legend(legend_text) title('Tangens hiperbolikus fuggveny tanulmanyozasa az a parameter fuggvenyeben');
%%Tangens hiperbolikus függvény ábrázolása a teta paraméter függvényében figure(2); hold on; grid on; szin=['r','g','b'] teta=.5:.5:1.5; for i=1:length(a) y=tang_hip(s,1, teta(i)); %a -konstans ; teta valtozik plot(s,y,szin(i)); legend_text{i}=strcat('a=',num2str(a(i))); end; xlabel('inger'); ylabel('kimenet'); legend(legend_text)
6
I. LABOR -Mesterséges neuron title('Tangens hiperbolikus fuggveny tanulmanyozasa a teta parameter fuggvenyeben'); %%Szigmoid függvény ábrázolása az a paraméter függvényében figure(3); hold on; grid on; szin=['r','g','b'] szigm=@(s,a,teta) 1./(1+exp(-a*(s+teta))) a=.5:.5:1.5; s=-10:0.1:10 for i=1:length(a) y=szigm(s,a(i),0); %a valtozo ; teta konstans plot(s,y,szin(i)); legend_text{i}=strcat('a=',num2str(a(i))); end; xlabel('inger'); ylabel('kimenet'); legend(legend_text) title('Szigmoid fuggveny tanulmanyozasa az a parameter fuggvenyeben'); %%Szigmoid függvény ábrázolása az a paraméter függvényében figure(4); hold on; grid on; szin=['r','g','b'] szigm=@(s,a,teta) 1./(1+exp(-a*(s+teta))) teta=.5:.5:1.5; for i=1:length(a) y=szigm(s,1,teta(i)); %a konstans ; teta valtozo plot(s,y,szin(i)); legend_text{i}=strcat('a=',num2str(a(i))); end; xlabel('inger'); ylabel('kimenet'); legend(legend_text) title('Szigmoid fuggveny tanulmanyozasa a teta parameter fuggvenyeben');
7