2. Architektury sztucznych sieci neuronowych
Transkrypt
2. Architektury sztucznych sieci neuronowych
- 18 - 2. Architektury sztucznych sieci neuronowych 2.1. Matematyczny model neuronu i prostej sieci neuronowej Sztuczne sieci neuronowe są modelami inspirowanymi przez strukturę i zachowanie prawdziwych neuronów. Podobnie jak mózg mogą one rozpoznawać obrazy, przetwarzać dane i uczyć się. Analogicznie do budowy mózgu, którego podstawowym elementem jest komórka nerwowa, tak dla sztucznych sieci neuronowych jest sztuczny neuron. Pierwszą formalną definicję modelu neuronu podali McCulloch i Pitts w 1943 r. Charakteryzował się tym, iż posiadał wiele wejść i jedno wyjście oraz był dwuwartościowym elementem progowym. Sygnały wejściowe xi, gdzie i = 1, 2, ..., n, oraz sygnał wyjściowy y mogą przyjmować wartości z pewnego ograniczonego przedziału [7]: x i ∈[− 1,1] , y ∈ [− 1,1] . - 19 - x1 w1 w2 x2 ∑ y wn xn Rys. 2.1. Pojedynczy element sieci neuronowej Istotnym elementem tego modelu jest sumowanie sygnałów wejściowych z odpowiednią wagą i poddanie otrzymanej sumy działaniu funkcji aktywacji f [2]. Zależność sygnału wyjściowego od wejściowego może być liniowa, chociaż istnieją także inne przypadki. n y = ∑ wixi (2.1) i =1 gdzie: wi – wagi synaptyczne, które podlegają modyfikacji w trakcie procesu uczenia Sygnały wejściowe i wagi synaptyczne tworzą wektory X = <x1 x2 ... xn>T , W = <w1 w2 ... wn>T. Przy takich założeniach odpowiedź neuronu wyrazić można jako skalarny iloczyn wektora wejść i wektora wag: y = WT . X. (2.2) Neurony mają następujące właściwości: • każdy neuron otrzymuje wiele sygnałów wejściowych i wyznacza na ich podstawie swoją „odpowiedź” to znaczy jeden sygnał wyjściowy, - 20 - • z każdym oddzielnym wejściem neuronu związany jest parametr nazywany wagą (weight). Określa on stopień ważności informacji docierających tym właśnie wejściem, • sygnały wejściowe (pomnożone przez odpowiednie wagi) są w neuronie sumowane, dając pewien pomocniczy sygnał wewnętrzny zwany łącznym pobudzeniem neuronu (net value), • do tak utworzonej sumy sygnałów dodaje się niekiedy pewien dodatkowy składnik niezależny od sygnałów wejściowych, nazywany progiem (bias) [19]. y1 y2 w (11) w (21) ... w (n1) w (12 ) w (22 ) ... w (n2 ) yk w (1k ) w (2k ) ... w (nk ) x1 x2 xn Rys. 2.2. Warstwa neuronów jako najprostsza sieć Łącząc pojedyncze neurony w warstwy możemy utworzyć najprostszą sieć. W tym przypadku każdy neuron otrzymuje ten sam zestaw sygnałów wejściowych i posiada własny wektor wag. Sygnał wyjściowy k – tego neuronu yk wynosi: n yk = ∑ w i ⋅ xi (2.3) i =1 Można go także zapisać w postaci wektorowej y = W kT ⋅ X (2.4) - 21 - Działanie tej sieci polega na tym, że pojawienie się określonego wektora wejściowego X powoduje powstanie sygnałów wyjściowych na wszystkich neuronach wchodzących w skład rozważanej warstwy. Oczekuje się przy tym, maksymalnego sygnału wyjściowego na tym neuronie, którego wektor wag najbardziej przypomina wektor sygnałów wejściowych X. Jedną z podstawowych własności rozważanej sieci jest to, że macierz W zadaje k określone odwzorowanie liniowe sygnału X ∈ R n w sygnał Y ∈ R . Odwzorowanie to może być w zasadzie dowolne [7]. O zachowaniu pojedynczego neuronu decyduje wektor wag Wk a o działaniu sieci – macierz wag W. Bardzo trudne jest ustalenie wektora Wk lub macierzy W odpowiednich dla rozwiązywania za pomocą sieci neuronowej jakiegoś złożonego zadania. Aby to ułatwić należy stary model neuronu uzupełnić o dwa dodatkowe elementy: procesor zmiany wag i detektor błędu. Tak uzupełniony neuron nazywa się ADALINE (ADAptive LINear Element) [7]. Wiąże on sygnał wejściowy i wyjściowy pewną zależnością. Funkcja f nie musi być zadana w sposób jawny; wystarczy, że dla każdego konkretnego wektora wejściowego potrafi się wskazać konkretną wartość; stanowiącą żądanie odnośnie sygnału wyjściowego. Wraz z każdym wektorem wejściowym X do elementu sieci podawany jest sygnał z. Jest to wymagana odpowiedź neuronu na sygnał X. Neuron odpowiada sygnałem y (wzór 2.2), przy czym jeśli neuron nie jest nauczony, sygnał ten jest inny niż wymagany (y ≠ z). Wewnątrz neuronu ADALINE znajduje się blok oceniający (który składa się z inwertora oraz sumatora) wielkość błędu. δ = z – y. (2.5) - 22 - x1 w1 x2 w2 xn w3 Σ δ y Σ z Rys. 2.3. Struktura neuronu ADALINE [7] Na podstawie sygnału błędu δ oraz wektora wejściowego X możliwe jest takie skorygowanie wektora wag W, by neuron lepiej realizował zadaną funkcję y = f (X). Łącząc pojedyncze elementy ADALINE można utworzyć sieć zwaną MADALINE (Many ADALINE). Sieci te były pierwszymi efektywnie zastosowanymi sieciami neuronowymi i mimo ogromnego postępu notowanego w tej dziedzinie pozostają wciąż bardzo użytecznym narzędziem. Jednak możliwości tej sieci są ograniczone ponieważ odwzorowania X => Y jakie może realizować sieć MADALINE są wyłącznie odwzorowaniami liniowymi. Innym rozwiązaniem, które wniosło nowy element w stosunku do omówionych wcześniej sieci ADALINE był PERCEPTRON zbudowany - 23 - przez Rosenblatta. Jest to nieliniowy element przetwarzający informację w każdym neuronie sieci. Opisuje go równanie: y = ϕ (e) (2.6) gdzie: ϕ – progowa funkcja aktywacji e – łączne pobudzenie neuronu. Można zapisać sygnał e jako sumę wag w i sygnałów wejściowych x n e = ∑ wi ⋅ xi (2.7) i =1 lub uzupełnioną dodatkowo o składnik stały – bias (przesuwa funkcję o pewną wartość) [7]. n e = ∑ wi ⋅ xi + b (2.8) i =1 zapis wektorowy: e = WT . X. x1 xi xn Rys. 2.4. (2.9) w1 wi wn Σ e ϕ y bias b=1 Nieliniowy neuron z biasem o sygnale wejściowym X [3] - 24 - Te funkcje scalające wejściowe sygnały w łączne pobudzenie e używane są w perceptronie jedynie jako wstępny etap przetwarzania informacji. O specyficznych właściwościach perceptronu decyduje funkcja aktywacji ϕ. Jest to funkcja nieliniowa, która na podstawie sygnału wejścia daje określony sygnał wyjściowy (przy sieciach ADALINE zastosowany był zapis liniowej funkcji aktywacji f w odróżnieniu od funkcji nieliniowej ϕ). Wczesne modele neuronowe wykorzystywały prostą funkcję progową. ϕ (e) = 1 e≥0 gdy (2.10) 0 gdy e<0 ϕ (e) 1 e 0 Rys. 2.5. Funkcja progowa I (jednostkowa) lub ϕ (e) = 1 gdy e≥0 (2.11) -1 gdy e<0 ϕ (e) 1 0 -1 Rys. 2.6. Funkcja progowa (bipolarna) II [8] e - 25 - Jeżeli ważona suma sygnałów wejściowych jest mniejsza od wartości progowej, to wyjście neuronu jest równe 0 (-1), w przeciwnym przypadku jest ono równe 1. W neuronie ADALINE funkcja aktywacji ϕ ma postać liniową ϕ (e) 1 0 Rys. 2.7. e Funkcja liniowa [5] Większość współczesnych modeli wykorzystuje sigmoidalną funkcję aktywacji. Można ją zdefiniować jako funkcję ciągłą o wartościach rzeczywistych. Najczęściej stosowaną funkcją sigmoidalną jest funkcja logistyczna ϕ (e) = 1 1 + exp (− β ⋅ e) (2.12) Zaletą tej funkcji jest prosta i łatwa do obliczenia wartość jej pochodnej, którą wykorzystuje się przy uczeniu sieci (rozdział 3) dϕ = ϕ (e) ⋅ (1 − ϕ (e)) de (2.13) - 26 - ϕ (e) 1,0 0,8 0,6 0,5 0,4 0,2 -4 Rys. 2.8. Niekiedy używana jest 0 -2 2 e 4 Funkcja logistyczna [5] funkcja sigmoidalna, taka jak tangens hiperboliczny. ϕ (e) = tg h (β e) = exp (βe) − exp (−β e) exp (βe) + exp (−β e) (2.14) ϕ (e) 1,0 0,75 0,5 0,25 -4 -2 0 2 - 0,25 4 - 0,5 - 0,75 - 1,0 Rys. 2.9. Tangens hiperboliczny [5] e - 27 - Tu także jest prosta pochodna dϕ = (1 + ϕ (e) ) (1 − ϕ (e) ). de (2.15) Ponadto występuje jeszcze bardzo wiele innych nieliniowości, spośród których wymienić należy jeszcze: • funkcję sinus – stosuje się, aby uzyskać wartość z przedziału ϕ (e) ∈ [-1,1] [7]. ϕ (e) = sin (βe) (2.16) • funkcję signum ϕ (e) = 1 gdy e>0 0 gdy e=0 -1 gdy e<0 (2.17) Kształt funkcji ma mały wpływ na ostateczną skuteczność sieci ale może mieć wpływ także na szybkość uczenia. Pokazane funkcje aktywacji pozwalają na wygodną analizę matematyczną zachodzących zjawisk, łatwą realizację techniczną i wygodne modelowanie. W tym podrozdziale opisane zostały najprostsze modele sieci neuronowych. Stanowią one filar, podstawę rozważanej w tej pracy dziedziny nauki, dlatego warto o nich wspomnieć. W dalszej części rozdziału pokazane zostaną dużo bardziej złożone struktury sztucznych sieci neuronowych jak np. sieci wielowarstwowe jednokierunkowe, sieci komórkowe, sieci rezonansowe itp. - 28 - 2.2. Sieci wielowarstwowe jednokierunkowe Sieć wielowarstwowa jednokierunkowa składa się ze zbioru neuronów, logicznie rozmieszczonych w dwóch lub więcej warstwach. Wyróżnia się warstwę wejściową zbierającą informacje ze świata zewnętrznego; warstwę wyjściową wysyłającą sygnał oraz warstwy ukryte pośredniczące pomiędzy warstwami wejściowymi i wyjściowymi. Określenie „jednokierunkowe” oznacza, że informacja przepływa tylko od wejścia do wyjścia, czyli sygnały wejściowe dochodzące do neuronów w każdej warstwie za wyjątkiem warstwy wejściowej, pochodzą wyłącznie od sygnałów wyjściowych neuronów z warstw poprzednich, a sygnały wyjściowe z tych neuronów dochodzą wyłącznie do neuronów w następnych warstwach (z wyjątkiem warstwy wyjściowej) [5]. W sieciach tych neurony warstwy poprzedniej łączą się z wszystkimi neuronami warstwy następnej. Sygnał wyjściowy zależy tylko od aktualnych wartości sygnałów wejściowych. Aby utworzyć złożoną strukturę sieci wielowarstwowej należy zacząć od pojedynczej warstwy. warstwa neuronów wejście x1 w1,1 Σ e1 ϕ y1 e2 ϕ y2 ek ϕ yk b1 1 Σ x2 b2 1 xn wk,n Σ bk 1 Rys. 2.10. Pojedyncza warstwa neuronów [3] w1(1,1) Σ ϕ1 b1(1) 1 e1(2) ϕ1 y1(1) w2(1,1) y1(2) Σ Σ x(n) w 1( k1 , n ) Σ 1 1 b2(1) 1 e2(2) ϕ2 y2(1) w3(1,1) y2(2) Σ Σ b2(2) 1 e1( k ) b1( k ) 1 ϕ2 ϕ1 y1( k ) Σ 1 w 2( k ,k1 ) 2 b3(1) 1 e3(2) ϕ3 y3(1) ϕ3 y3(2) b3(2) 1 e 2( k b 2( k 1 e3(1) 2 ) 2 ) ϕ2 y 2( k 2 ) w 3( k Σ ,k 2 ) 3 e3( k b 3( k 1 3 3 ) ϕ3 y 3( k 3 ) ) - 29 - b1(2) 1 e2(1) y = ϕ (WT . X +B) Σ x(2) e1(1) 3-cia warstwa neuronów Sygnał wyjściowy pojedynczej warstwy wynosi: x(1) Po połączeniu kilku warstw powstaje sieć: (2.18) Rys. 2. 11. Schemat sieci neuronowej składającej się z 3 warstw [3] wejście 1-sza warstwa neuronów 2-ga warstwa neuronów