Politechnika Gdańska Wydział Elektrotechniki i Automatyki Katedra Inżynierii Systemó Steroania Metody sztucznej inteligencji Neuron, arsta neuronoa, sieci neuronoe - poierzchnie odpoiedzi sieci neuronoych, Zajęcia laboratoryjne termin T1 Materiały pomocnicze do ćiczeń Opracoanie: Kazimierz Duzinkieicz, dr hab. inż. Michał Grochoski, dr inż.
Podany niżej materiał zaiera przypomnienie ybranych fragmentó ykładu oraz dodatkoe informacje umożliiające torzenie struktur sztucznych sieci neuronoych środoisku MATLAB a z ykorzystaniem przybornika Neural Netork ver. 4.0.2. W szczególności zaiera on opis podstaoych elementó neuronu, funkcje aktyacji (przejścia), opis głónych instrukcji dostępnych przyborniku Matlaba oraz przykład utorzenia i nauczenia sieci neuronoej perceptronoej. W obecnej ersji Matlaba podstaoe funkcje i komendy torzące sieć neuronoą są inne - znacznie iększym stopniu samodzielnie (domyślnie) proponują sieć neuronoą adekatną do ykonyanego zadania. Jednak dla zrozumienia podstaoych mechanizmó rządzących sieciami neuronoymi, korzystniej jest na etapie początkoym korzystać z komend podstaoych, zamieszczonych niniejszym materiale. Komendy z aktualnej ersji Matlaba (2012-2013) są ymienione Zadaniu6 instrukcji laboratoryjnej. Proszę się zapoznać z ich działaniem. Sztuczne sieci neuronoe pojedynczy neuron Sieć neuronoa jest charakteryzoana przez: 1. funkcje edług których neuron reaguje na docierające do niego pobudzenia, nazyane funkcjami pobudzania (propagacji) i funkcjami aktyacji; 2. strukturę połączeń pomiędzy neuronami, nazyaną architekturą sieci; 3. metodę określania ag tych połączeń, nazyaną algorytmem uczenia. p 1 Wagi 1,1 Funkcja pobudzania (propagacji) Funkcja aktyacji Sygnał odpoiedzi Sygnały ejścioe p 2. p j. 1,2. 1,j. g() b s Próg n s a s f() Wyjście Sygnał pobudzenia p R 1,R Rys 1. Schemat sztucznego modelu neuronu. gdzie: R- ilość ejść, S- ilość neuronó arstie, 2
Rys. 2 pokazuje jak taki neuron jest przedstaiany dokumentacji Matlab a raz z przyjętymi oznaczeniami ejść, ag, progu oraz yjścia. Wejście Neuron Rys 2. Schemat neuronu z pojedynczym ejściem. Symbole i notacja przyjęta Matlabie. Dla tego przypadku ymiary macierzy opisujących neuron są następujące: p p; W ; b b ; a a W przypadku gdy na ejście neuronu podaane jest iele sygnałó, neuron oraz jego schemat ygląda następująco: Wejście Neuron z ieloma ejściami gdzie: R- ilość ejść, Rys 3. Schemat neuronu z ieloma (R) ejściami. Wejście Neuron z ieloma ejściami 3 gdzie: R- ilość ejść, Rys 4. Schemat neuronu z ieloma (R) ejściami. Symbole i notacja przyjęta Matlabie.
Wymiary macierzy opisujących neuron są dla tego przypadku następujące: p p p 1 R 2 p ; R W ; b b ; a a 1, 2, Funkcje aktyacji (przejścia) neuronu Na rysunkach Rys. 5-7 przedstaiono przykłady funkcji aktyacji, odpoiednio przekaźnikoej niesymetrycznej, linioej oraz logarytmiczno- sigmoidalnej. Wszystkie dostępne przyborniku instrukcje zamieszczone są Tablicy 1. Rys 5. Przekaźnikoa, niesymetryczna funkcja aktyacji. Gdzie: p oznacza sygnał ejścioy do neuronu, n oznacza sygnał pobudzenia neuronu, a oznacza sygnał yjścia z neuronu, oznacza artość agi ejścia neuronu, natomiast b oznacza artość progu. Rys 6. Linioa funkcja aktyacji. Rys 7. Logarytmiczno- sigmoidalna, niesymetryczna funkcja aktyacji. 4
Tablica 1. Funkcje aktyacji (przejścia) dostępne przyborniku Neural Netork ver. 4.0.2, Matlaba. Naza funkcji Relacja ejście/yjście Symbol Funkcja Matlabie przekaźnikoa unipolarna (niesymetryczna) przekaźnikoa bipolarna (symetryczna) linioa linioa z nasyceniem niesymetryczna linioa z nasyceniem symetryczna sigmoidalna logarytmiczna unipolarna (niesymetryczna) sigmoidalna tangensa hiperbolicznego bipolarna (symetryczna) linioa dodatnia spółzaodnicta (ryalizacji) a=1 neuron z max n a=0 szystkie inne neurony Poniżej na Rys. 8 przedstaiono przykład neuronu z symetryczną funkcją aktyacji (perceptron progoy) i doma ejściami. Wejścia Neuron du-ejścioy Rys 8. Neuron z przekaźnikoą, symetryczna funkcją aktyacji z doma ejściami perceptron progoy. 5
Wymiary macierzy dla tego neuronu są następujące: p p 1 p ; 1,1 1,2 2 W ; b b ; a a Sztuczne sieci neuronoe arsta neuronó Na rysunkach Rys 9 i 10 zilustroano pojedynczą arstę sieci neuronoej, raz z opisem jej parametró. Wejścia Sieć złożona z S neuronó gdzie: R- ilość ejść, S- ilość neuronó arstie, Rys 9. Schemat arsty sieci neuronoej. Wejście Warsta z funkcją przekaźnikoą Rys 10. Neuron z przekaźnikoą, niesymetryczna funkcją aktyacji perceptron progoy. Symbole i notacja przyjęta Matlabie. 6
7 Wymiary macierzy dla arsty neuronó są następujące: R 2 1 p p p p S,R S,2 S,1 2,R 2,2 2,1 1,R 1,2 1,1 W S 2 1 b b b b S 2 1 a a a a Sztuczne sieci neuronoe siec ieloarstoa Na Rys 11 i 12 zilustroano ieloarstoą (trójarstoą) jednokierunkoą sieć neuronoą. Jak można zauażyć yjścia każdej z arst sieci neuronoej stają się ejściami kolejnej z arst. gdzie: R- ilość ejść, s 1 - ilość neuronó arstie pierszej, s 2 - ilość neuronó arstie drugiej, s 3 - ilość neuronó arstie trzeciej, Rys 11. Schemat ieloarstoej, jednokierunkoej sieci neuronoej. Wejścia Piersza arsta Druga arsta Trzecia arsta
Wejście Piersza arsta Druga arsta Trzecia arsta gdzie: R- ilość ejść, S 1 - ilość neuronó arstie pierszej, S 2 - ilość neuronó arstie drugiej, S 3 - ilość neuronó arstie trzeciej, Rys 12. Schemat ieloarstoej, jednokierunkoej sieci neuronoej. Symbole i notacja przyjęta Matlabie. 8
Podstaoe instrukcje przybornika Matlaba Netork Toolbox ver. 4.0.2 Poniżej Tablicy 2 przedstaiono ażniejsze instrukcje zaarte przyborniku Matlaba, Neural Netork Toolbox ver. 4.0.2. Więcej instrukcji można uzyskać po pisaniu polecenia help nnet, natomiast szczegóły konkretnej instrukcji, takie jak: zastosoanie, składnia, algorytm działania, przykład zastosoania, można uzyskać poleceniem help doolna instrukcja np. help nep. Tablica 2 Instrukcje przybornika Matlaba, Neural Netork Toolbox ver. 4.0.2 Instrukcja Krótki opis instrukcji Torzenie sieci netork torzy doolną sieć neuronoą (użytkonika) nec torzy arstę z funkcją spółzaodnicta necf torzy kaskadoą jednokierunkoą sieć ieloarstoą uczoną metodą propagacji stecznej błędu neff torzy kaskadoą jednokierunkoą sieć ieloarstoą uczoną metodą propagacji stecznej błędu nefftd torzy kaskadoą jednokierunkoą sieć ieloarstoą z ejściami opóźniającymi, uczoną metodą propagacji stecznej błędu nelin torzy arstę z linioą funkcją aktyacji nelind torzy arstę z linioą funkcją aktyacji nep torzy perceptron progoy Funkcje pobudzania sieci netprod Funkcja iloczynu ejść netsum Funkcja sumy ejść Funkcje inicjalizujące parametry sieci initlay Funkcja inicjalizująca agi i progi sieci za pomocą metody inicjalizacji przypisanej dla każdej z arst tej sieci sieci Funkcje określające jakość działania sieci mae Funkcja określająca średni błąd bezzględny mse Funkcja określająca błąd średniokadratoy msereg Funkcja określająca błąd średniokadratoy i średnią kadrató artości ag i progó sse Funkcja określająca sumę błędó średniokadratoych Metody uczenia learncon metoda uczenia learngd metoda uczenia Gradient descent learngdm metoda uczenia Gradient descent ith momentum learnis metoda uczenia LVQ2 Instar learnlv1 metoda uczenia LVQ1 learnlv2 metoda uczenia LVQ2 learnos metoda uczenia Outstar learnp zmiany ag i progó przy pomocy metody Rosenblatt a learnpn zmiany ag i progó przy pomocy znormalizoanej metody uczenia perceptronu learnh zmiany ag i progó przy pomocy metody Widroa-Hoffa Obróbka danych ejścioych i yjścioych prestd normalizuje dane tak aby miały odchylenie standardoe róne 1 oraz średnią róną 0 poststd odraca działanie instrukcji prestd trastd przekształca dane do postaci adekatnej do tych ygeneroanych przez funkcję prestd premnmx normalizuje dane tak aby ich maksymalna i minimalna artość ynosiła odpoiednio 1 oraz -1 postmnmx odraca działanie instrukcji premnmx tramnmx przekształca dane do postaci adekatnej do tych ygeneroanych przez funkcję premnmx 9
prepca analiza danych ejścioych metodą PCA (Principal Component Analysis) trapca przekształca dane do postaci adekatnej do tych ygeneroanych przez funkcję prepc postreg analiza mtodą regresji linioej jakości nauczania sieci Metody uczenia trainb Proces zmian ag i progó (uczenie) trybie sadoym trainbfg Proces zmian ag i progó (uczenie) metodą propagacji stecznej quasi-netona trainbr Proces zmian ag i progó (uczenie) metodą regularyzacji Bayesiana trainc Cyclical order incremental training /learning functions traincgb Proces zmian ag i progó (uczenie) metodą propagacji stecznej Poell-Beale traincgf Proces zmian ag i progó (uczenie) metodą propagacji stecznej Fletcher-Poella traincgp Proces zmian ag i progó (uczenie) metodą propagacji stecznej Polak-Ribiere a traingd Proces zmian ag i progó (uczenie) metodą propagacji stecznej Gradient descent traingdm Proces zmian ag i progó (uczenie) metodą propagacji stecznej Gradient descent ith momentum traingda Proces zmian ag i progó (uczenie) metodą propagacji stecznej Gradient descent z adaptacją spółczynnika szybkości uczenia traingdx Proces zmian ag i progó (uczenie) metodą propagacji stecznej Gradient descent ith momentum z adaptacją spółczynnika szybkości uczenia trainlm Proces zmian ag i progó (uczenie) metodą propagacji stecznej Levenberg- Marquardta trainoss Proces zmian ag i progó (uczenie) metodą propagacji stecznej One step secant trainrp Proces zmian ag i progó (uczenie) metodą propagacji stecznej Resilient (Rprop) trainscg Proces zmian ag i progó (uczenie) metodą propagacji stecznej Scaled conjugate gradient Funkcje aktyacji compet Funkcja spółzaodnicta hardlim Funkcja przekaźnikoa unipolarna (niesymetryczna) hardlims Funkcja przekaźnikoa bipolarna (symetryczna) logsig Funkcja sigmoidalna logarytmiczna unipolarna (niesymetryczna) poslin Funkcja linioa dodatnia purelin Funkcja linioa radbas Funkcja Gaussa (Radial Basis) satlin Funkcja linioa z nasyceniem niesymetryczna satlins Funkcja linioa z nasyceniem symetryczna tansig Funkcja sigmoidalna tangensa hiperbolicznego bipolarna (symetryczna) Funkcje ułatiające analizę errsurf Poierzchnia błędu neuronu z pojedynczym ejściem maxlinlr Maksymalny spółczynnik szybkości uczenia dla sieci linioej Funkcje inicjalizujące parametry arsty initn Funkcja inicjalizująca agi i progi arsty za pomocą metody Nguyen-Widro a initb Funkcja inicjalizująca agi i progi arsty za pomocą metody przypisanej dla tej sieci sieci Operacje na ektorach cell2mat zamienia elementy tablicy blokoej (cell array) jedną macierz concur torzy rónoażne ektory progó con2seq zamienia elementy ektora na tożsamą sekencję ektoró combvec torzy szystkie możlie kombinacje ektoró mat2cell zamienia macierz tablicę blokoą minmax yznacza zakresy (min i max) ierszy macierzy nncopy torzy kopie macierzy ( pionie i poziomie) normc normalizuje kolumny macierzy do zakresu [-1; 1] normr normalizuje iersze macierzy do zakresu [-1; 1] seq2con zamienia sekencję ektoró na tożsame ektory sumsqr yznacza sumę kadrató elementó macierzy Operacje na sieciach sim symuluje sieć neuronoą init inicjalizuje sieć neuronoą 10
adapt train hinton hintonb plotes plotpc plotpv plotep plotperf plotv plotvec nntool gensim uczenie adaptacyjne sieci neuronoej uczenie sieci neuronoej Wykresy ykreśla agi neuronó na grafie Hintona ykreśla agi i progi neuronó na grafie Hintona ykreśla poierzchnię błędu dla neuronu z jednym ejściem ykreśla proste decyzyjne na ykresie plotpv problemu klasyfikacji przy użyciu perceptrona ykreśla ejścia oraz artości doceloe zagadnienia klasyfikacji przy użyciu perceptrona pokazuje aktualną artość ag i progó na poierzchni błędu ykreślonej poleceniem plotes ykreśla jakość odpoiedzi sieci trakcie uczenia ykreśla ektory postaci linii ykreśla ektory rozróżniając je kolorami Inne Graficzny Interfejs Użytkonika dla przybornika Neural Netork Toolbox Generuje sieć neuronoą do środoiska Simulink 11
Przykład utorzenia i nauczenia sieci neuronoej, perceptronoej. Poniżej przedstaiono podstaoe komendy służące do utorzenia sieci neuronoej na przykładzie sieci perceptronoej. Proces torzenia innych sieci jest podobny, zmieniają się jedynie parametry i niektóre instrukcje. Do utorzenia sieci perceptronoej służy instrukcja nep. Składnia siec = nep(pr,s,tf,lf) Parametrami tej instrukcji są: PR macierz o ymiarach Rx2 minimalnych i maksymalnych artości R elementó macierzy ejść. S - Liczba neuronó. TF funkcja aktyacji (przejścia), domyślnie = 'hardlim'. LF metoda uczenia, domyślnie = 'learnp'. Nie jest konieczne podaanie parametró TF oraz LF. Efektem ykonania tej instrukcji jest utorzenie sieci perceptronoej. Pod nazą siec zostaje utorzona struktura której zapisane są szelkie informacje na temat utorzonej sieci. Inicjalizacja sieci Instrukcja nep inicjalizuje rónież (nadaje) początkoe (zeroe) artości ag i progó (metodą ). Wagi łączące ejścia z siecią są zapisane strukturze siec.iw. Progi sieci są zapisane strukturze siec.b. Możemy, rónież samodzielnie dobierać artości tych elementó, np.: siec.iw{1,1}=[2 4] siec.b{1}=[5] Aby przyrócić domyślne ustaienia ag i progó (inicjalizacja parametró sieci) należy użyć np. instrukcji init. siec = init(siec); Symulacja sieci Aby zbadać odpoiedź sieci na ektor ejść musimy posłużyć się instrukcją sim. Składnie tej instrukcji uzyskamy po pisaniu oknie głónym Matlaba help sim, przeażnie ystarczające jest podanie składni instrukcji sieci jaką chcemy symuloać oraz skazaniu ektora ejść, tym przypadku P: Y = sim(siec,p); Symuluje odpoiedź sieci siec na ejście P 12
Zdefiniujmy teraz ektor ejścioy P jako: P = [0 0 1 1; 0 1 0 1]; Oraz ektor zorcó T: T = [0 1 1 1]; Rezultatem jest odpoiedź sieci: Y = 1 1 1 1 który nie jest zgodny z oczekianiami (zorcami T). Aby osiągnąć porządane artości yjścioe (zgodne ze zorcem) należy odpoiednio dobrać artości ag i progó, czyli nauczyć sieć popranie odpoiadać. Przykład Zaprojektuj sieć perceptronoą złożoną z jednego neuronu o dóch ejściach. Piersze ejście poinno być zakresie [0 ; 1] natomiast drugie ejście zakresie [-2 ; 2]. Zapisz projektoaną strukturę pod nazą siec. W odpoiedzi na cześniej zdefinioany ektor P, sieć poinna odpoiadać zgodnie z ektorem T. siec = nep([0 1; -2 2],1); Spradźmy odpoiedzi sieci na ektor P: Y = sim(siec,p) Y = 1 1 1 1 Uczenie sieci Jak idzimy sieć nie odpoiada zgodnie z ektorem T. Aby doproadzić do popranych odpoiedzi, musimy zmienić artości ag i progó, samodzielnie lub procesie uczenia. Proces uczenia yołujemy przy pomocy instrukcji train. Instrukcja ta yołuje domyślną dla danej sieci metodę uczenia (modyfikacji ag i progó) tak aby dopasoać je do ektora T. Więcej opcji instrukcji train, po pisaniu help train. siec = train(siec,p,t); Po procesie uczenia, spradźmy pononie odpoiedzi sieci. Y = sim(siec,p) 13
Y = 0 1 1 1 Jak idzimy sieć odpoiedziała popranie. To kończy zadanie. Możemy rónież spradzić przy jakich artościach ag i progó zostało to osiągnięte: siec.iw{1,1} siec.iw{1,1} =[1 1] siec.b{1} =[-1] Zmiana domyślnych parametró sieci Po utorzeniu doolnej sieci, przypisane są im domyślnie różne parametry takie jak np. metoda uczenia, metoda inicjalizacji, metody badania jakości działania sieci, przebieg procesu uczenia sieci i iele innych. Dla ich przeglądnięcia należy oknie głónym Matlaba podać nazę utorzonej sieci. Parametry te możemy rónież zmieniać. Dokonujemy tego zmieniając przy pomocy odpoiednich komend doolne parametry. Poniżej zamieszczono podstaoe z nich (dla sieci perceptronoej utorzonej komendą nep). Funkcje: adaptfcn: 'trains' initfcn: 'initlay' performfcn: 'mae' trainfcn: 'trainc' Parametry: adaptparam:.passes initparam: (none) performparam: (none) trainparam:.epochs,.goal,.sho,.time Zmiana domyślnych parametró sieci (artości przykładoe): net.trainparam.sho = 50; net.trainparam.lr = 0.05; net.trainparam.epochs = 300; net.trainparam.goal = 1e-5; 14