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.