Uniersytet Zielonogórski Wydział Elektrotechniki, Informatyki i Telekomunikacji Instytut Steroania i Systemó Informatycznych ELEMENTY SZTUCZNEJ INTELIGENCJI Semestr letni 2010 Laboratorium nr 4 LINIOWE SIECI NEURONOWE Proadzący:.. Cele ćiczeń: 1. Celem ćiczenia jest poznanie struktur sieci neuronoych zbudoanych przy użyciu neuronó linioych jak rónież poznanie metod ich uczenia oraz zbadanie zalet oraz ograniczeń niniejszych struktur. Struktura linioych sieci neuronoych pod ieloma zględami przypomina sieci perceptronoe, jedyna różnica polega na ykorzystaniu linioych neuronach linioej funkcji aktyacji zamian za funkcję skokoą (Rys. 1). Dzięki linioej funkcji aktyacji neurony są stanie generoać sygnały yjścioe o doolnej artości jednakże nie są olne od ograniczenia znanego dla perceptronó a mianoicie mogą roziązyać jedynie problemy, które są linioo separoalne. u 1 Blok u ϕ y u n ϕ = u y = aϕ i i i= 0 Rys. 1 Struktura neuronu z linioą funkcją aktyacji gdzie u 1, u 2,..., u n - sygnały ejścioe, 1, 2,..., n - artości ag, y - sygnał yjścioy
Rys. 2 Granica decyzyjne neuronu z linioą funkcją aktyacji Neuron o strukturze przedstaionej na rysunku 1 może być tak uczony, aby realizoał funkcje linioe lub by aproksymoał za pomocą funkcji linioych funkcje nielinioe jednakże neuron linioy żadnym ypadku nie jest stanie realizoać odzoroań nielinioych. Podobnie jak dla perceptronu można przestrzeni zmiennych ejścioych yznaczyć dla linioego neuronu granicę decyzyjną, dla której neuron generuje sygnał o artości 0 na yjściu. Sygnałom ejścioym znajdującym się na rysunku jego górnej ciemniejszej części odpoiada na yjściu neuronu sygnał iększy od zera dla artości ejść z obszaru jaśniejszego uzyskujemy na yjściu neuronu sygnał ujemny. Takie działanie neuronu może zostać ykorzystane celu klasyfikacji danych do dóch zbioró, przy czym należy pamiętać, że zbiory te muszą być linioo separoalne. Proces uczenia linioej sieci neuronoej przebiega podobnie jak sieci perceptronoej, a mianoicie na stępie należy przygotoać zbiór uczący składający się z par ektoró reprezentujących ejścia p oraz oczekiane dla nich sygnały yjścioe t {p 1,t 1 }, {p 2,t 2 },...,{p,t } Następnie kolejne elementy zbioru uczącego podaane są na ejścia sieci i yznaczana jest odpoiedź sieci a. W kolejnym kroku odpoiedź sieci a porónyana jest z artością, jaka była oczekiana na yjściu sieci t i yznaczana jest artość błędu e=t-a. Następnie agi neuronó modyfikoane są tak, aby artość błędu średniokadratoego (ang. mean suared error) była jak najmniejsza. 1 mse = k = 1 e ( k ) = ( t( k ) a( k )) 2 1 Ponieaż funkcja błędu średniokadratoego dla sieci z linioymi neuronami jest funkcją kadratoą zględem ag, ięc posiada tylko jedno minimum globalne lub nie posiada minimum albo posiada minimum tz. słabe, opcja z jaką mamy do czynienia zależy od konkretnych danych uczących. Zadanie yznaczenia ag takiej sytuacji sproadza się do znalezienia artości ag, dla których funkcja błędu przyjmuje najmniejszą artość. Sproadza się to do roziązania odpoiedniego układu rónań, co oznacza, że odpoiednie agi yznaczane są bezpośrednio jednym kroku algorytmu uczącego. Jednakże nie zasze takie roziązanie jest możlie do zastosoania ze zględu na pojaiające się przy nim problemy numeryczne. W takiej sytuacji z pomocą przychodzi algorytm uczenia Widroa-Hoffa, który bazuje na procedurze najiększego spadku. W niniejszym podejściu błąd średniokadratoy jest zastępoany przez błąd kadratoy, który jest liczony kolejnych iteracjach algorytmu a modyfikacje ag liczone są jako k = 1 2
pochodne cząstkoe z funkcji błędu zględem odpoiednich ag. Po yznaczeniu odpoiednich pochodnych zór na modyfikację ag przyjmuje następującą postać: (k+1)=(k)+2αe(k)p(k), gdzie k to numer iteracji, to agi, e to błędy uczenia, p zorce uczące, α krok uczenia. Jeżeli krok uczenia jest odpoiednio duży to proces uczenia przebiega szybko jednak zbyt duża artość tego parametru może poodoać destabilizoanie procesu uczenia i ziększenie błędu kolejnych iteracjach zamiast zmniejszenia. Linioe sieci neuronoe posiadają najczęściej tylko jedną arstę neuronó, ponieaż doolna ieloarstoa sieć z neuronami linioymi może zostać przekształcona do sieci jednoarstoej bez modyfikacji jej działania. Praktyczne skazóki odnośnie symulacji linioych sieci neuronoych programie Matlab Torzenie linioej sieci neuronoej W celu storzenia linioej sieci neuronoej należy posłużyć się funkcją nelin, która posiada następującą strukturę net=nelin(pr,s,lr), gdzie net to obiekt opisujący storzoną sieć, PR macierz z artościami minimalnymi I maksymalnymi dla kolejnych ejść, S liczba neuronó, lr krok uczenia. : net = nelin([-1 1],1) Dostęp do ag i biasó sieci odbya się identycznie jak sieci perceptronoej. Projektoanie sieci poprzez bezpośrednie yznaczanie jej ag za pomocą funkcji nelind, która posiada następującą strukturę net=nelind(p,t) gdzie P i T to dane uczące. P = [1 2 3]; T = [2.0 4.1 5.9]; net = nelind(p,t); Uczenie metodą Widroa-Hoffa za pomocą funkcji train lub adapt, których struktura przedstaia się następująco: net=train(p,t), net=adapt(p,t),
gdzie P i T to dane uczące, różnica działaniu obu funkcji jest taka sam jak dla sieci perceptronoych. : net = nelin([-1 1],1); P= {0-1 1 1 0-1 1 0 0 1}; T = {0-1 0 2 1-1 0 1 0 1}; net = adapt(net,p,t); P = [P]; T = [T]; net.trainparam.epochs = 200; net.trainparam.goal = 0.1; net = train(net,p,t); Symulacja linioych sieci neuronoych odbya się identycznie jak sieci perceptronoych za pomocą funkcji sim. Aby yznaczyć maksymalny dopuszczalny krok uczenia należy użyć funkcji maxlinlr, której struktura przedstaia się następująco lr = maxlinlr(p,'bias') gdzie P to ejścioe zorce uczące: P = [1 2-4 7; 0.1 3 10 6]; lr = maxlinlr(p,'bias') Przedstaienie ykresu funkcji błędu funkcji ag (tylko dla przypadkó gdy dany jest jeden neuron z tylko jednym ejściem) można zrealizoać za pomocą następującej sekencji instrukcji P = [1 1.2] T = [0.5 1] _range=-1:0.1:1; b_range=-1:0.1:1; ES=errsurf(P,T,_range,b_range, purelin ) plotes(_range,b_range,es) Symulacja linioych sieci neuronoych z opóźnieniami (czyli z ejściami zdefinioanymi jako opóźnione artości ejść już istniejących, Rys. 3) ymaga następującej sekencji instrukcji u(k-1) u(k) 2 1 1 0 ϕ Blok aktyacji y n
Rys. 3 Linioy neuron z opóźnionymi sygnałami ejścioymi, gdzie k numer próbki sygnału ejścioego P={3 4 5 6} net=neline([1 10],1) net.inputweights{1,1}.delays=[0 1 2] <- definicja opóźnionych ejść 0 - u(k), 1 u(k-1), 2 u(k-2) pi={1 2} < startoe artości dla ejść u(k-1) i u(k-2) A=sim(net,P,pi) <-symulacja sieci z opóźnieniami Zadania (Przed rozpoczęciem roziązyania zadań można obejrzeć przykładoe problemy roziązane za pomocą linioych sieci neuronoych uruchamiając skrypty demolin1, demolin2, demolin4, demolin5, demolin6, demolin,7 demolin8 i demolin9) Przeproadzić uczenie neuronu z linioą funkcją aktyacji z jednym ejściem dla danych przedstaionych poniżej. Porónać agi nauczonego neuronu przy użyciu reguły Widroa- Hoffa (za pomocą funkcji train) z agami yliczonymi bezpośrednio, zbadać czy nauczony neuron dobrze działa dla danych, które służyły jako zorce uczące (ykorzystać instrukcje sim) P=[1 1.2] T=[1 0.5] P=[-3.2 4.5 5.6 3] T=[-4 5 6.1 3.9] P=[1 2 3 4 5 6 7] T=[3 5 7 9 11 13 15] Przeproadzić uczenie linioej sieci jednoarstoej przy użyciu funkcji adapt oraz train dla następujących danych, zbadać czy nauczony neuron dobrze działa dla danych, które służyły jako zorce uczące). 1.0000 1.5000 1.2000-0.3000 P= -1.0000 2.0000 3.0000-0.5000 2.0000 1.0000-1.6000 0.9000 0.5000 3.0000-2.2000 1.4000 T= 1.1000-1.2000 1.7000-0.4000 3.0000 0.2000-1.8000-0.4000 Dla zadań z punktu pierszego yznaczyć ykresy funkcji błędu raz z zaznaczonym punktem określającym artości nauczonych ag oraz błędu jaki został osiągnięty dla tych ag. (Wskazóka: spradzić jak jest to zrealizoane pliku demolin1)
Dane są następujące funkcje y=2x-3 y=2x^2-5 dokonać ich aproksymacji przedziale ( 10;10) przy użyciu linioego neuronu. (Wybrać dane uczące dla każdej z funkcji i na ich podstaie przeproadzić uczenie neuronu, następnie porónać artości yjścioe z neuronu i artości aproksymoanej funkcji przedstaiając je na jednym ykresie dla każdej z funkcji) Zbadać łaściości uogólniające neuronu. Zbadać czy linioy neuron ma takie same ograniczenia jak perceptron (Znaleźć zadanie klasyfikacji, które linioy neuron nie potrafi roziązać) Zbadać jak linioy neuron uczy się dla różnych ielkości kroku ucznia dla następujących danych P = [1.0-1.2] T = [0.5 1.0], zbadać uczenie się dla następujących ielkości kroku uczenia 0.01, 0.1, 5, 10, 50. Porónać otrzymane yniki z uczeniem przy użyciu kroku uczenia yznaczonego przez funkcję maxlinlr. Identyfikacja systemu linioego za pomocą funkcji adapth %Ustalenie czasu symulacji ze zmianą cech identyfikoanego systemu linioego 4 sekundzie time1=0:0.005:4; time2=4.005:0.005:6; time=[time1 time2]; %zadany sygnał ejścioy dla systemu linioego celu przygotoania próbek do adaptacyjnej identyfikacji systemu X=sin(sin(time*4).*time*8); %liczba próbek dla systemu linioego do 4 sekundy eksperymentu steps1=length(time1); % system linioy zdefinioany jako filtr linioy o skończonej odpoiedzi impulsoej [T1,state] = filter([1-0.5],1,x(1:steps1)); % od 4 sekundy łaściości filtru zmieniają się spradzamy czy sieć zadoptuje się do zmienionych arunkó steps2 = length(time2); T2 = filter([0.9-0.6],1,x((1:steps2) + steps1),state); T = [T1 T2]; plot(time,x) alabel('czas','sygnał ejscioy','sygnal ejscioy dla filtra') plot(time,t) alabel('czas','sygnal yjscioy','sygnal yjscioy z filtra') %Przygotoanie danych dla sieci neuronoej z opóźnionymi próbkami sygnału ejścioego P = delaysig(x,0,1); % konstrukcja sieci [,b] = initlin(p,t); lr = 0.5; %adaptacja sieci [a,e,,b] = adapth(,b,p,t,lr);
% porónanie sygnału yjścioego z filtra z odpoiedzią linioej sieci neuronoej plot(time,a,time,t,'--') alabel('czas','siec \_\_\_ Filter \_ \_','Odpoiedz linioej sieci neuronoej i filtra') Literatura: 1. Korbicz J., Obuchoicz A., Uciński D., Sztuczne sieci neuronoe. Podstay i zastosoanie, Warszaa 1994.