ESI 5 - Instytut Sterowania i Systemów Informatycznych

Transkrypt

ESI 5 - Instytut Sterowania i Systemów Informatycznych
Uniwersytet Zielonogórski
Wydział Elektrotechniki, Informatyki i
Telekomunikacji
Instytut Sterowania i Systemów Informatycznych
ELEMENTY SZTUCZNEJ INTELIGENCJI
Semestr letni 2010
Laboratorium nr 5
SIECI WIELOWARSTWOWE I ALGORYTM WSTECZNEJ PROPAGACJI BŁĘDU
Prowadzący: …………………………………………………..
Cele ćwiczeń:
1. Celem ćwiczenia jest poznanie struktur sieci neuronowych zbudowanych z wielu warstw
neuronów oraz zapoznanie się z algorytmem uczenia takich sieci nazywanym algorytmem
wstecznej propagacji błędu
Model neuronu z tangensoidalną funkcją aktywacji
1
u1
u2
w1
w0
w2
wn
Blok
aktywacji
ϕ
y
∑
un
Gdzie u1, u2, ..., un - sygnały wejściowe, w1, w2, ..., wn - wartości wag, y - sygnał wyjściowy
n
ϕ = ∑ ui wi , y = f (φ )
i =0
Algorytm uczenia sieci metodą propagacji wstecznej błędu
Algorytm propagacji wstecznej błędu podaje przepis na zmianę wag wij dowolnych połączeń
elementów przetwarzających rozmieszczonych w sąsiednich warstwach sieci
jednokierunkowej. Jest to algorytm oparty na minimalizacji sumy kwadratów błędów uczenia
z wykorzystaniem optymalizacyjnej metody największego spadku. Dzięki zastosowaniu
specyficznego sposobu propagowania błędów uczenia sieci powstałych na jej wyjściu, tzn.
przesyłaniu ich od warstwy wyjściowej do wejściowej, algorytm propagacji wstecznej stał się
jednym z najskuteczniejszych algorytmów uczenia sieci. Poniżej w kolejnych punktach
przedstawiono kroki jakie należy wykonać w celu modyfikacji wag przy użyciu algorytmu
wstecznej propagacji błędu.
Podanie wektora uczącego uµ na wejścia sieci
Wyznaczenie wartości wyjść u mjµ każdego elementu dla kolejnych warstw przetwarzania
neuronowego, od pierwszej warstwy ukrytej do warstwy wyjściowej (m-numer warstwy, jnumer neuronu, µ-numer kolejnego zbioru danych uczących)
Obliczenie wartości błędów δ jMµ dla warstwy wyjściowej
δ jMµ = f ' (φ jMµ )( y zjµ − y µj )
(M-warstwa wyjściowa, j-numer neuronu, µ-numer kolejnego zbioru danych uczących)
Dokonanie propagacji wstecznej błędu wyjściowego δ jMµ do kolejnych warstw i wyznaczenie
δ jmµ
δ
mµ
j
n m +1
( )∑ δ (
= f'φ
mµ
j
m +1)µ
l
wlj(m +1)
l =1
nm-liczba neuronów w m-tej warstwie sieci
Dokonanie aktualizacji wag kolejno pomiędzy warstwą wyjściową i ukrytą a następnie
pomiędzy warstwami ukrytymi przesuwając się w kierunku warstwy wyjściowej
∆µ wijm = ηδ jmµ u i( m −1)µ
Kroki od a do e powtarzane są aż suma kwadratów błędów ξ nie stanie się wystarczająco
mała
P
m
ξ = ∑∑ ( y zit − y it )
2
t =1 i =1
gdzie P to liczba zbiorów uczących a m. to liczba wyjść sieci
Praktyczne wskazówki odnośnie symulacji wielowarstwowych sieci neuronowych w Matlabie
Tworzenie wielowarstwowej sieci neuronowej
W celu stworzenia wielowarstwowej sieci neuronowej należy posłużyć się funkcją newff,
która posiada następującą strukturę
net=newff(PR,[S1 S2 … Sn],{Tf1 Tf2 … Tfn}, BTF),
gdzie net to obiekt opisujący stworzoną sieć, PR macierz z wartościami minimalnymi i
maksymalnymi dla kolejnych wejść, Si liczba neuronów w i-tej warstwie sieci, Tfi definicja
funkcji aktywacji dla neuronów z i-tej warstwy sieci (‘logsig’, ’tangsig’, ‘purelin’), BTF metoda
uczenia sieci (‘traingd’, ‘traingda’, ‘traingdm’, ‘traingdx’) sieci, logsig sigmoidalna funkcja
aktywacji, tansig, tangensoidalna funkcja aktywacji, purelin, liniowa funkcja aktywacji,
traingd uczenie algorytmem gradientowym, traingda uczenie algorytmem gradientowym z
adaptacyjnym krokiem uczenia, traingdm uczenie algorytmem gradientowym z momentum,
traingdx uczenie algorytmem gradientowym z adaptacyjnym krokiem uczenia oraz
momentum.
Przykład:
net = newff([0 10],[5 1],{'tansig' 'purelin'},’traingdx’);
Uczenie sieci metodą wstecznej propagacji błędu za pomocą funkcji train.
[net,tr]=train(net,P,T)
Przykład:
P = [0 1 2 3 4 5 6 7 8 9 10];
T = [0 1 2 3 4 3 2 1 2 3 4];
% Ustalenie parametrów uczenia
net.trainParam.epochs=10000;
net.trainParam.show=10;
net.trainParam.goal=0.0001;
net.trainParam.lr=0.1;
% Uczenie
[net,tr]=train(net,p,t);
Zadania
Dokonać uczenia sieci dwuwarstwowej (2 neurony w warstwie pierwszej jeden w warstwie
drugiej)
wybrać dla obu warstw neurony z sigmoidalną funkcją aktywacji
wybrać dla warstwy pierwszej sigmoidalną funkcję aktywacji a dla warstwy drugiej liniową
wybrać dla warstwy pierwszej tangensoidalną funkcje aktywacji a dla warstwy drugiej
liniową funkcje aktywacji
Uczenie przeprowadzić dla następujących danych P=[1 1 0 0;1 0 1 0] T=[0 1 1 0] (problem
XOR) oraz P=[-0.5 –0.5 0.3 0.1 -0.3;-0.5 0.5 –0.5 1 0] T=[1 1 0 0 0] (dane te nie są liniowo
separowalne jakie z tego wynikają wnioski do tego zadania).
Zapoznać się z Graficznym Interfejsem Użytkownika przybornika Neural Networks o nazwie
nntool do tworzenia, uczenia oraz symulowania sieci neuronowych oraz importowania i
eksportowania danych.
Wyprowadzić wzory na uogólnioną regułę delty i algorytm propagacji wstecznej błędu.
Przy pomocy wielowarstwowej sieci jednokierunkowej dokonać zadania aproksymacji
węzłów aproksymacji {xi , yi }i =0 . Współrzędne węzłów zapisane są w pliku dane.mat.
Sprawdzić czy można polepszyć (przyspieszyć) proces uczenia przy zastosowaniu technik
momentum i adaptacyjnego kroku uczenia. W porównaniach wziąć pod uwagę liczbę kroków
algorytmu potrzebną na uzyskanie żądanej dokładności oraz czas uczenia. Wykorzystać
skrypt zad1.m.
40
W oparciu o wielowarstwową sieć jednokierunkową zaprojektować system rozpoznawania
cyfr lub liter. Dobrać odpowiednią liczbę warstw i neuronów w sieci. Sprawdzić jak wpływają
zakłócenia obrazów wejściowych (cyfr lub liter) na pracę systemu.
Literatura:
1. Korbicz J., Obuchowicz A., Uciński D., „Sztuczne sieci neuronowe. Podstawy i
zastosowanie”, Warszawa 1994.

Podobne dokumenty