[ Pobierz całość w formacie PDF ]
.}end; {of K :=.}Testowanie odbywa się poprzez podanie na wejście sieci sygnału zaszumionego.Uzyskuje się w ten sposób wykresy z nałożonym (opcjonalnie) sygnałem wzorcowym, sygnałem zakłóconym lub/i sygnałem przefiltrowanym.lRozpoznawanie obrazulJak widać było we wcześniejszej części niniejszego opracowania dziedzina sieci neuronowych przeżywa wzloty i upadki.Niewątpliwie wielkim osiągnięciem w tej materii jest opracowanie mechanizmów definicji oraz konstrukcji wielowarstwowych sieci nieliniowych.Sieci takie posiadają wręcz nieograniczone możliwości przynajmniej jak na razie nie zostały one znalezione jak miało to miejsce dla sieci liniowych - publikacja Minsky'ego i Paperta.[11] Na pewno to opracowanie nie stanowiłoby przynajmniej próby ogarnięcia i zaprezentowania najistotniejszych zagadnień sieci neuronowych gdybyśmy nie pokusili się o przedstawienie uczenia i pracy takiej sieci.W przypadku konstrukcji wielowarstwowych sieci neuronowych korzysta się przeważanie z definicji nieliniowości neuronu określonej rozdziale Prezentacja neuronu tej pracy.Jeśli zaś chodzi o sferę związaną z topologią połączeń to wyróżnia się w takich układach następujące elementy:lwarstwa wejściowa - zawiera ona tyle neuronów aby pokryć w pełni dziedzinę cech opracowywanego zjawiska czy obiektu; w większości przypadków warstwa ta nie będzie podlegać uczeniu; pełnić będzie rolę dyskryminacyjne oraz normalizacyjne dla sygnałów podlegających obróbce w dalszej strukturze siecillwarstwa ukryta - raczej powinno się tu mówić o warstwach ukrytych; one to stanowią o jakości sieci, jej potencjale pamięciowym, skomplikowaniu możliwego odwzorowania realizowanego przez sieć, o sposobie uczenia całej sieci; połączenie pomiędzy warstwami odbywają się na zasadzie wyjścia jednej warstwy stanowią wejścia następnej warstwy; uczeniu podlegają wszystkie neurony wchodzące w skład warstw ukrytychllwarstwa wyjściowa - ma w zasadzie dwa zadania odebrać „odpowiedź” (przetworzony sygnał) warstw ukrytych oraz odpowiednio go przeskalować dla potrzeb danej realizacji; warstwa wyjściowa zwykle podlega uczeniu ale może być zmienione zgodnie z potrzebami konkretnej implementacji.lRysunek poniższy w sposób obrazowy przedstawia jak modelowo konstruuje się wielowarstwowe sieci neuronowe:Rys.1.Model budowy wielowarstwowej sieci neuronowejW programie przedstawiono aspekt uczenia i testowania po każdym kroku sieci neuronowej, wielowarstwowej z definicją nieliniowości pojedynczego neuronu daną wzorem:gdzie net jest wartością dla neuronu (m) w warstwie (0.n+1):ldla warstwy wejściowej (0) - neuron posiada n1 - wag z doprowadzonymi sygnałami wejściowymi :lldla warstw ukrytych (1.n); k - jest to ilość wag warstwy (j) a jednocześnie ilość neuronów w warstwie poprzedniej; y(i)(j-1) - odpowiedź i-tego neuronu warstwy (j-1)lldla warstwy wyjściowej mamy związek odpowiednio taki, jak dla warstw ukrytychlSieć posiada dwa neurony warstwy wejściowej dwie warstwy ukryte o ilości elementów definiowanych przez użytkownika oraz jeden neuron wyjściowy.Taka konstrukcja posłuży nam do nauczenia sieci rozpoznawania obrazu dwuwymiarowego przedstawionego w postaci figur geometrycznych (kół) nakładanych na siebie.struktury danych algorytmu:LW - ogólna liczba warstw (ukryte plus dwie); jeśli w określeniu ilości neuronów w warstwach ukrytych podamy 0 to możemy otrzymać sieć wielowarstwową z warstwą wejściowa i wyjściową,n - tablica z informacją ile elementów (neuronów) znajduje się w poszczególnych warstwach - tablica ta pełni funkcje sterująca dla ogólnej tablicy wag,yy - tablica odpowiedzi poszczególnych neuronów w danym kroku dla wszystkich warstw,Wagi - wielowymiarowa tablica wag całej sieci (trzy wymiarowa: warstwa, neuron, nr wagi w neuronie),alfa - momentum - wpływ zmian w poprzednim kroku na zmiany w kroku bieżącymeta - współczynnik uczeniasigma - tablica pomocnicza pamiętająca propagację błędu w danym krokugeneracja wartości odpowiedzi sieci w bieżącym kroku:for i := 1 to LW dofor k := 0 to n[i] - 1 dobeginyy[i,k] := 0;yy[i-1,n[i-1]] := -1;for j := 0 to n[i-1] doyy[i,k] := yy[i,k] + yy[i-1,j]*Wagi[i,j,k];yy[i,k] := 1.0 / (1.0+Exp(-yy[i,k]));end;uczenie wielowarstwowej sieci neuronowej (backpropagation):for i := LW downto 1 dofor j := 0 to n[i] - 1 dobeginif i = LW thenblad := dd[j] - yy[i,j]elsebeginblad := 0
[ Pobierz całość w formacie PDF ]