|
sztuczne sieci neuronowe
Rozpoznawanie obrazu Jak 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: ¨ warstwa 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 sieci ¨ warstwa 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 ukrytych ¨ warstwa 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. Rysunek poniższy w sposób obrazowy przedstawia jak modelowo konstruuje się wielowarstwowe sieci neuronowe:
Rys.
1
. Model budowy
wielowarstwowej sieci neuronowej W 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): ¨
dla warstwy wejściowej (0) – neuron posiada n1 – wag
z doprowadzonymi sygnałami wejściowymi
¨ dla 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)
¨ dla warstwy wyjściowej mamy związek odpowiednio taki, jak dla warstw ukrytych
Sieć 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: for i := 1 to LW do for k := 0 to n[i] - 1 do begin yy[i,k] := 0; yy[i-1,n[i-1]] := -1; for j := 0 to n[i-1] do yy[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 do for j := 0 to n[i] - 1 do begin if i = LW then blad := dd[j] - yy[i,j] else begin blad := 0.0; for k := 0 to n[i+1] - 1 do blad := blad + sigma[i+1,k]*Wagi[i+1,j,k]; end; sigma[i,j] := blad*yy[i,j]*(1-yy[i,j]) end; Wagi2 := Wagi; for i := 1 to LW do for j:= 0 to n[i-1] do for k := 0 to n[i] - 1 do begin zmiana := alfa*(Wagi[i,j,k]-Wagi1[i,j,k]); zmiana := eta*sigma[i,k]*yy[i-1,j] - zmiana; Wagi[i,j,k] := Wagi[i,j,k] + zmiana; end; Wagi1 := Wagi2; Wielowarstwowe, nieliniowe sieci neuronowe stanowią obecnie jedną z najważniejszych dziedzin sfery określanej mianem Sztuczne sieci neuronowe.
|
||
|
copyright 2003 Marcin Kobylec |