Inteligencja obliczeniowa
Ćwiczenie nr 5
Sztuczne sieci neuronowe
Sieci wielowarstwowe MLP (Multi Layer Perceptron), trenowanie sieci wielowarstwowych
1. Wprowadzenie
W poprzednim ćwiczeniu trenowaliśmy pojedyncze sztuczne neurony do problemów
klasyfikacji. Wytrenowany perceptron umożliwiał podział przestrzeni klasyfikacyjnej na dwie
klasy. W przypadku problemów liniowo separowalnych zastosowanie pojedynczego
perceptronu dawało poprawne rezultaty, lecz w przypadku problemów liniowo
nieseparowalnych (np. XOR) stosowanie pojedynczego perceptronu nie umożliwiało poprawnej
klasyfikacji danych tam zawartych. Dla przykładu na rys. 1a przedstawiono problem liniowo
separowalny a na rys. 1b problem liniowo nieseparowalny. Oba przypadki sÄ… dwuwymiarowe.
Rys. 1a Problem liniowo separowalny Rys. 1b Problem liniowo nieseparowalny
Z rys. 1a widać, że do poprawnej klasyfikacji danych wystarczy jeden perceptron z odpowiednio
wytrenowanymi wagami, gdyż przy użyciu jednej linii decyzyjnej klasyfikujemy dane do
poprawnych klas. W przypadku przedstawionym na rys. 1b, nie jesteśmy w stanie przy użyciu
jednej linii klasyfikacyjnej dokonać poprawnej klasyfikacji. Dlatego do rozwiązania tego
problemu potrzebne są dwa neurony w warstwie ukrytej, które rozgraniczą te liniowo
nieseparowalne obszary (patrz rys. 2a) oraz jeden neuron w warstwie wyjściowej dokonujący
ostatecznej klasyfikacji (patrz rys. 2b).
Rys. 2 Klasyfikacja problemu liniowo nieseparowalnego
Sztuczne sieci neuronowe © dr inż. Adam SÅ‚owik 1
Inteligencja obliczeniowa
StrukturÄ™ sieci realizujÄ…cÄ… problem klasyfikacji z rys. 2a lub 2b przedstawiono na rys. 3.
Rys. 3 Struktura sieci wielowarstwowej do klasyfikacji danych z rys. 2b
Sieć neuronowa z rys. 3 składa się z 2 wejść, 2 neuronów w warstwie ukrytej i 1 neuronu w
warstwie wyjściowej, posiada 1 wyjście oraz 9 wag, których wartości muszą zostać ustalone w
wyniku procesu trenowania. Dla uproszczenia w rysowaniu sieci przyjmuje się że każdy neuron
zawiera w sobie blok sumujący sygnały wejściowe oraz blok zawierający funkcję aktywacji.
Widać, więc że w przypadku problemów liniowo nieseparowalnych do ich rozwiązania
wymagane jest stosowanie sieci wielowarstwowych tzw. MLP (Multi Layer Perceptron).
StrukturÄ™ sieci MLP przedstawiono na rys. 4.
Rys. 4 Struktura sieci MLP
Sieć MLP składa się z warstwy wejściowej (Input Layer), której zadaniem jest przekazanie na
wejścia neuronów w warstwie ukrytej (Hidden Layer) sygnałów wejściowych. W warstwie ukrytej
oraz wyjściowej znajdują się sztuczne neurony. Liczba warstw ukrytych, liczba sygnałów
wejściowych, liczba neuronów w poszczególnych warstwach ukrytych oraz liczba neuronów w
warstwie wyjściowej (Output Layer) odpowiedzialna za liczbę wyjść sieci może być dowolna. W
praktyce najczęściej do większości zadań wystarczają sieci z dwoma warstwami ukrytymi. Na
rys. 4 ze względu na czytelność nie oznaczono wag występujących przy poszczególnych
połączeniach oraz nie oznaczono wag progowych wi,0 (gdzie i oznacza numer danego neuronu)
Sztuczne sieci neuronowe © dr inż. Adam SÅ‚owik 2
Inteligencja obliczeniowa
2. Trenowanie sieci MLP algorytm wstecznej propagacji błędu
Algorytm wstecznej propagacji błędu (ang. Error Back Propagation) jest jednym z najbardziej
skutecznych i służy do trenowania jednokierunkowych (przepływ informacji w sieci odbywa się
w jednym kierunku, nie występują sprzężenia), wielowarstwowych sieci neuronowych.
Wykorzystuje się w nim metodę gradientowego najszybszego spadku przy minimalizacji błędu
kwadratowego. Dla przeprowadzenia tego w sieci neuronowej wykorzystuje się sygnały ciągłe w
zakresie [0, 1] lub w zakresie [-1, 1] i ciągłe funkcje aktywacji typu sigmoidalnego
odwzorowujące ważone sumy sygnałów wejściowych w sygnały wyjściowe w zakresie [0, 1] lub
[-1, 1], jak pokazano na rys. 5.
Rys. 5 Przykłady sigmoidalnych funkcji aktywacji odwzorowujących sygnały wejściowe w
ciągłe sygnały wyjściowe w zakresie a [0, 1], b [-1, 1]
Sigmoidalną funkcję aktywacji w postaci unipolarnej [0, 1] opisuje zależność:
1
f (Si ) = (1)
i
1+ e-S
Natomiast w postaci bipolarnej:
i
1- e-S
f (Si ) = (2)
i
1+ e-S
gdzie:
Si = Å" u (3)
"wi, j j
j
oraz:
ui = f (Si ) (4)
Algorytm wstecznej propagacji błędu przedstawiono na rys. 6.
Sztuczne sieci neuronowe © dr inż. Adam SÅ‚owik 3
Inteligencja obliczeniowa
1. Wybierz maÅ‚Ä… wartość Á>0,
2. Wybierz losowo małe wartości wag wi,j dla każdego neuronu
3. Powtarzaj dopóki algorytm osiągnie zbieżność, tj. gdy zmiany wag i zmiany błędu
kwadratowego µ(w) stanÄ… siÄ™ wystarczajÄ…co maÅ‚e,
3a. Wybierz kolejnÄ… parÄ™ trenujÄ…cÄ… [Ek] wraz z poprawnÄ… odpowiedziÄ… [Ck]
3b. Faza propagacji w przód: oblicz kolejno dla wszystkich komórek sumy ważone Si oraz
aktywacje ui=f(Si),
3c. Faza propagacji wstecz: poczynając od warstwy wyjściowej oblicz dla warstwy
wyjściowej oraz warstw pośrednich pochodne funkcji aktywacji f (Si):
1
f '(Si ) = ui Å"(1- ui ), dla f (Si ) =
i
1+ e-S
lub
i
1 1- e-S
f '(Si ) = Å"(1- ui2), dla f (Si ) =
i
2 1+ e-S
oraz współczynniki ´i = (Ci - ui )Å" f '(Si ), dla komórek warstwy wyjÅ›ciowej
oraz:
ëÅ‚ öÅ‚
´i = ìÅ‚ Å" wm,i ÷Å‚ Å" f '(Si ), dla komórek warstw poÅ›rednich (´m dotyczy komórki m, do której
"´m
íÅ‚ m>i Å‚Å‚
dołączona jest komórka i )
3d. uaktualnij wagi
*
wi, j = wi, j + Á Å"´i Å" u
j
Rys. 6 Algorytm wstecznej propagacji błędu
Algorytm propagacji wstecznej stosuje się do tzw. sieci stałych, tj. takich, których struktura nie
ulega zmianie w czasie trenowania. Zatem, przy rozważaniu danego problemu do rozwiązania
najpierw wybiera się strukturę sieci, a następnie stosuje się trenowanie.
W celu pokazania w szczegółach jak oblicza się poszczególne współczynniki i funkcje w
algorytmie rozpatrzmy sieć realizującą funkcję boolowską XOR. Strukturę sieci przyjmijmy z rys.
3, a wartości wag ustalmy następujące: w3,0=1, w3,1=2, w3,2=3, w4,0=-2, w4,1=4, w4,2=5, w5,0=-4,
w5,3=2, w5,4=3. Rozważmy jeden przykład trenujący [E] i [C] w postaci: [E]=[u0 u1 u2]=[1 1
0], C=1. Jako krok iteracji przyjÄ™to wartość Á=0.2, a jako funkcjÄ™ aktywacji zależność (1).
Faza propagacji w przód daje wyniki:
i Si ui=f(Si)
1 - u1=1
2 - u2=0
3 S3=3 u3=0.9526
4 S4=2 u4=0.8808
5 S5=0.5476 u5=0.6336
a wymagana wartość u5 wynosi u5=C=1.
W fazie wstecz obliczamy kolejno:
Warstwa wyjściowa:
f (S5)=u5Å"(1 u5)=0.2322
´5=(C u5)Å"f (S5)=(1 0.6336)Å"0.2322=0.0851
Sztuczne sieci neuronowe © dr inż. Adam SÅ‚owik 4
Inteligencja obliczeniowa
Warstwa pośrednia:
f (S4)=u4Å"(1 u4)=0.1050
´4=w5,4Å"´5Å"f (S4)=3Å"0.0851Å"0.1050=0.0268
f (S3)= u3Å"(1 u3)=0.9526Å"(1 0.9526)=0.0451
´3=w5,3Å"´5Å"f (S3)=2Å"0.0851Å"0.0451=0.0077
Obecnie można przystąpić do obliczenia uaktualnionych wag, poczynając od wyjścia:
Warstwa wyjściowa:
w*5,4=w5,4+ÁÅ"´5Å"u4=3+0.2Å"0.0851Å"0.8808=3.0150
w*5,3=w5,3+ÁÅ"´5Å"u3=2+0.2Å"0.0851Å"0.9526=2.0162
w*5,0=w5,0+ÁÅ"´5Å"u0= 4+0.2Å"0.0851Å"0.0851= 3.9830
Warstwa pośrednia:
w*4,2=w4,2+ÁÅ"´4Å"u2=5+0.2Å"0.0268Å"0=5
w*4,1=w4,1+ÁÅ"´4Å"u1=4+0.2Å"0.0268Å"1=4.0054
w*4,0=w4,0+ÁÅ"´4Å"u0= 2+0.2Å"0.0268Å"1= 1.995
w*3,2=w3,2+ÁÅ"´3Å"u2=3+0.2Å"0.0077Å"0=3
w*3,1=w3,1+ÁÅ"´3Å"u1=2+0.2Å"0.0077Å"1=2.0015
w*3,0=w3,0+ÁÅ"´3Å"u0=1+0.2Å"0.0077Å"1=1.0015
Z obliczeń tych wynika, że zmiany wag są niewielkie, co wskazuje, że algorytm propagacji
wstecznej jest bardzo wolny.
Dla sprawdzenia o ile zmienił się sygnał wyjściowy u5 dokonujemy ponownie obliczenia fazy
propagacji w przód. Uzyskane wyniki są następujące:
S3= w*3,0Å"u0+ w*3,1Å"u1+ w*3,2Å"u2=3.003
u3=f(S3)=0.9527
S4= w*4,0Å"u0+ w*4,1Å"u1+ w*4,2Å"u2=2.0104
u4=f(S4)=0.8819
S5= w*5,0Å"u0+ w*5,3Å"u3+ w*5,4Å"u4=0.5968
u5=f(S5)=0.6449
Otrzymany wzrost sygnału "u5=0.6449 0.6336 = 0.0113, co potwierdza bardzo wolną
zbieżność algorytmu, gdyż u5 powinno zmierzać do żądanej wartości wyjściowej C=1.
Jednym ze sposobów przyśpieszenia algorytmu propagacji wstecznej jest dobór większej
wartoÅ›ci kroku Á. Jednakże, zbyt duża jego wartość może doprowadzić do rozbieżnoÅ›ci
algorytmu. Innym sposobem przyśpieszenia, bez obawy o niestabilność, jest tzw. Metoda
momentum.
Na rys. 7 przedstawiono przykładowy program trenujący sieć neuronową z rys. 3 do klasyfikacji
problemu XOR, dla którego przyjęto następującą tablicę wektorów trenujących:
Sztuczne sieci neuronowe © dr inż. Adam SÅ‚owik 5
Inteligencja obliczeniowa
i U0 U1 U2 C
1 1 0 0 0
2 1 0 1 1
3 1 1 0 1
4 1 1 1 0
W programie z rys. 7 wartości wag zapisywane są w tablicy W w następującej kolejności:
W=[w3,0 w3,1 w3,2 w4,0 w4,1 w4,2 w5,0 w5,3 w5,4]
Wartości sum ważonych zapisywane są w tablicy S jak następuje:
S=[S3 S4 S5],
Wartości funkcji aktywacji ui=f(Si) zapisywane są w tablicy U w kolejności:
U=[U3 U4 U5]
Wartości pochodnej funkcji aktywacji f (Si) zapisywane są w tablicy F jak poniżej:
F=[f (S3) f (S4) f (S5)]
WartoÅ›ci ´I zapisywane sÄ… w tablicy d jak nastÄ™puje:
d=[´3 ´4 ´5]
//---- funkcja XOR
//---- algorytm wstecznej propagacji bledu
clear all;
A(1,1)=1; A(1,2)=0; A(1,3)=0; A(1,4)=0;
A(2,1)=1; A(2,2)=0; A(2,3)=1; A(2,4)=1;
A(3,1)=1; A(3,2)=1; A(3,3)=0; A(3,4)=1;
A(4,1)=1; A(4,2)=1; A(4,3)=1; A(4,4)=0;
//---- wykreslenie obszaru klasyfikacji
Licz=0;
IleKrokow=50000;
mtlb_hold on;
for i=1:4
if A(i,4)==1
plot(A(i,2),A(i,3),'ko:');
else
plot(A(i,2),A(i,3),'r+:');
end
end
mtlb_axis([-0.4 1.4 -0.4 1.4]);
//---- utworzenie odpowiednich tablic na dane
W=zeros(1,9); S=zeros(1,3); U=zeros(1,3); F=zeros(1,3); d=zeros(1,3);
//---- losowa inicjalizacja wag poczatkowych
for i=1:9
W(i)=rand()-0.5;
end;
ro=0.2;
iteracja=0;
Sztuczne sieci neuronowe © dr inż. Adam SÅ‚owik 6
Inteligencja obliczeniowa
while (iteracja
iteracja=iteracja+1;
//---- losowe wybieranie wektora trenujacego
i=round(rand()*3)+1;
//---- faza propagacji w przod - warstwa posrednia
S(1)=W(1)*A(i,1)+W(2)*A(i,2)+W(3)*A(i,3);
S(2)=W(4)*A(i,1)+W(5)*A(i,2)+W(6)*A(i,3);
U(1)=1/(1+exp(-S(1)));
U(2)=1/(1+exp(-S(2)));
//---- faza propagacji w przod - warstwa wyjsciowa
S(3)=W(7)*A(i,1)+W(8)*U(1)+W(9)*U(2);
U(3)=1/(1+exp(-S(3)));
//---- faza propagacji wstecz - warstwa wyjsciowa
F(3)=U(3)*(1-U(3));
d(3)=(A(i,4)-U(3))*F(3);
//---- faza propagacji wstecz - warstwa posrednia
F(1)=U(1)*(1-U(1));
d(1)=W(8)*d(3)*F(1);
F(2)=U(2)*(1-U(2));
d(2)=W(9)*d(3)*F(2);
//---- uaktualnienie wag - warstwa wyjsciowa
W(7)=W(7)+(ro*d(3)*A(i,1));
W(8)=W(8)+(ro*d(3)*U(1));
W(9)=W(9)+(ro*d(3)*U(2));
//---- uaktualnienie wag - warstwa posrednia
W(1)=W(1)+(ro*d(1)*A(i,1));
W(2)=W(2)+(ro*d(1)*A(i,2));
W(3)=W(3)+(ro*d(1)*A(i,3));
W(4)=W(4)+(ro*d(2)*A(i,1));
W(5)=W(5)+(ro*d(2)*A(i,2));
W(6)=W(6)+(ro*d(2)*A(i,3));
end;
//---- wykreslenie otrzymanej linii podzialu (neuron 1)
k=0;
for i=-2:0.01:2
k=k+1;
XX(k)=i;
YY(k)=-((W(2)/W(3))*i)-(W(1)*1)/W(3);
end
plot(XX,YY,'r');
//---- wykreslenie otrzymanej linii podzialu (neuron 2)
k=0;
for i=-2:0.01:2
k=k+1;
XX(k)=i;
YY(k)=-((W(5)/W(6))*i)-(W(4)*1)/W(6);
end
plot(XX,YY,'b');
mtlb_axis([-0.4 1.4 -0.4 1.4]);
disp(W);
mtlb_hold off;
Rys. 7 Algorytm propagacji wstecznej do klasyfikacji problemu XOR (2 wejściowego)
Sztuczne sieci neuronowe © dr inż. Adam SÅ‚owik 7
Inteligencja obliczeniowa
3. Modyfikacja algorytmu wstecznej propagacji błędu metoda momentum RHW
Metoda ta jest modyfikacją algorytmu wstecznej propagacji błędu i polega ona na dodawaniu do
aktualizowanych wag części ich poprzedniego przyrostu "wi,j. W takim przypadku krok 3d w
algorytmie z rys. 6 zastępuje się przez:
3d:
*
wi, j = wi, j + Ä… Å" "wi, j + Á Å"´i Å" u (5)
j
gdzie:
"wi, j = wi* - wi, j (6)
, j
jest przyrostem tego kroku.
Jako praktyczną wartość współczynnika ą przyjmuje się: ą=0.9.
4. Zadania do wykonania
a) zapoznać się z zagadnieniami bieżącego ćwiczenia
b) przepisać i uruchomić program (rys. 7) trenujący algorytmem wstecznej propagacji błędu sieć
neuronowÄ… z rys. 3 do klasyfikacji problemu XOR
c) dodać do programu z rys. 7 możliwość testowania wytrenowanej sieci, tzn. umożliwić po
wytrenowaniu i wyrysowaniu linii klasyfikujących wprowadzanie danych z klawiatury na wejścia
sieci (u1 i u2), a następnie dla tak podanych danych wejściowych wyświetlać odpowiedz sieci.
Wprowadzanie należy zapętlić, aby możliwe było wielokrotne powtarzanie wprowadzania
danych na wejście wytrenowanej sieci neuronowej.
d) dopisać do programu z rys. 7 fragment kodu odpowiedzialny za wykreślenie błędu uczenia
sieci. Jako błąd uczenia przyjąć zależność:
4
Error = Ci -U5,i (7)
"
i=1
U5,i wartość na wyjściu U5 sieci neuronowej z Rys. 3, po podaniu i-tego wektora
trenującego na jej wejście
Następnie w załóżmy co 100 iteracji obliczać błąd i zapisywać go do tablicy ERR . Po
zakończeniu procesu trenowania wykreślić ten błąd w funkcji kolejnych iteracji. Wykres
powinien być podobny do wykresu z rys. 8.
Rys. 8 Przykładowy wykres błędu uczenia sieci neuronowej
Sztuczne sieci neuronowe © dr inż. Adam SÅ‚owik 8
Inteligencja obliczeniowa
e) do programu z rys. 7 dopisać fragment kodu realizujący metodę momentum RHW (patrz
punkt 3) i przeprowadzić ponownie trenowanie sieci do klasyfikacji problemu XOR
f). dla algorytmu powstałego w punkcie 4e wyznaczyć błąd trenowania sieci neuronowej.
Przyjąć identyczną zależność na obliczenie błędu jak w punkcie 4d. Po otrzymaniu wykresu
błędu trenowania, porównać go z wykresem otrzymanym w punkcie 4d.
g). Wytrenować sieć neuronową z rys. 9 do klasyfikacji problemu przedstawionego na rys. 10.
Zastosować algorytm wstecznej propagacji błędu z momentum RHW.
Rys. 9 Struktura sieci do wytrenowania Rys. 10 Problem do klasyfikacji
Poniżej w tabeli przedstawiono tablicę wektorów trenujących dla problemu z rys. 10:
i U0 U1 U2 C1 C2
1 1 1 1 -1 -1
2 1 1 0.8 -1 -1
3 1 0.8 1 -1 -1
4 1 1 -1 -1 1
5 1 0.8 -0.6 -1 1
6 1 1 -0.8 -1 1
7 1 0.5 -0.5 -1 1
8 1 -0.5 0.5 1 -1
9 1 -0.6 0.6 1 -1
10 1 -0.7 0.9 1 -1
11 1 -0.7 1 1 -1
12 1 -1 1 1 -1
13 1 -1 -1 1 1
14 1 -0.9 -0.6 1 1
15 1 -0.7 -0.5 1 1
16 1 -0.3 -0.2 1 1
17 1 -0.6 -0.6 1 1
18 1 -0.8 -0.8 1 1
19 1 -0.8 -0.9 1 1
20 1 -0.6 -0.9 1 1
Po wytrenowaniu narysować linie klasyfikacyjne dla neuronów U3 i U4 oraz dopisać fragment
kodu odpowiedzialny za testowanie wytrenowanej sieci neuronowej.
Sztuczne sieci neuronowe © dr inż. Adam SÅ‚owik 9
Wyszukiwarka
Podobne podstrony:
Neural Network I SCILAB
Artificial Neural Networks The Tutorial With MATLAB
Artificial Neural Networks for Beginners
A neural network based space vector PWM controller for a three level voltage fed inverter induction
A neural network based space vector PWM controller for a three level voltage fed inverter induction
Prediction Of High Weight Polymers Glass Transition Temperature Using Rbf Neural Networks Qsar Qspr
Neural networks in non Euclidean metric spaces
Alchemia II Rozdział 8
Do W cyrkulacja oceaniczna II rok
Test II III etap VIII OWoUE
Recht 5 BVerfG II
Budownictwo Ogolne II zaoczne wyklad 13 ppoz
Język niemiecki dwujęzyczna arkusz II
Angielski II zaliczenie
przetworniki II opracowane
MiBM Zestaw II
więcej podobnych podstron