59
Rozdział 4. Nieliniowe sieci neuronowe
Opisany wyżej algorytm uczenia jest możliwy do bezpośredniego zastosowania jedynie w przypadku sieci jednowarstwowej. Dla sieci wielowarstwowych, o których wyżej stwierdzono, że mają istotnie szersze możliwości przetwarzania informacji, niż sieci jednowarstwowe, podany wyżej wzór nic daje się zastosować, ponieważ dla wewnętrznych warstw sieci nie ma możliwości bezpośredniego określenia oczekiwanych (wymaganych) wartości sygnałów wyjściowych z^\ a tym samym nie ma możliwości określenia błędu Istotnie, rozważając ciąg uczący w postaci
U = << >,< x(a\z<3) »
mamy do dyspozycji «-wymiarowe wektory wejściowe X oraz &-wy miarowe wektory wyjściowe Z — stanowiące zestawy wymaganych sygnałów wyjściowych z elementów terminalnych czyli domykających sieć. Jeśli wektor sygnałów wyjściowych z tych elementów nie będzie odpowiadał wymaganiom, to znaczy jeśli odnotujemy błąd wyrażający się różnicą wektorów Z*D — Y(-D, to nie będziemy w stanie ustalić, w jakim stopniu za pojawienie się tego błędu odpowiadają neurony warstwy wyjściowej, na których tell błąd się ujawnił, a w jakim stopniu błąd powstał w elementach wcześniejszej warstwy, których sygnały podawane były jako wejściowe do neuronów ocenianej warstwy.
Przez wiele lat. nie znano metody skutecznego uczenia sieci wielowarstwowych, a warstwy, dla których nie można było wyznaczyć sygnału błędu znane były w literaturze pod nazwą „warstw ukrytych” (hiden łayers). Dopiero w połowie lat 80-tych zaproponowany został algorytm wstecznej propagacji błędów (backpropagahnn) [Rume86], polegający na tym, że mając wyznaczony błąd występujący podczas realizacji j-tego kroku procesu ucze
nia w neuronie o numerze m — możemy „rzutować” ten błąd wstecz do wszystkich tych neuronów, który cli sygnały stanowiły wejścia dla m-tego neuronu.
Opiszemy dokładniej ten ważny algorytm. Zacznijmy od sprawy oznaczeń. W sieci wielowarstwowej niemożliwe jest ścisłe rozgraniczenie sygnałów wejściowych i wyjściowych, ponieważ sygnały wyjściowe z neuronów wcześniejszej warstwy stają się zwykle sygnałami wejściowymi dla neuronów następnej warstwy. Z tego względu wprowadzimy jednolitą numerację wszystkich neuronów (bez dzielenia ich na wejściowe, wyjściowe i należące do warstw ukrytych) oraz zastosujemy stale oznaczenie y[,n * dla sygnału pojawiającego się na wyjściu m-tego neuronu w j-tyrri kroku procesu uczenia. Oczywiście niektóre spośród tych reprezentować będą sygnały wyjściowe z całej sieci, możliwe do skonfrontowania z odpowiednimi składowymi wektora Z(-D w celu stwierdzenia, czy sieć pracuje poprawnie, czy też ma miejsce błąd. Podobnie uznamy, że sygnały wejściowe, dotychczas oznaczane X, będą także rozpatrywane jako sygnały postaci czyli sygnały występujące na wyjściach wyróżnionej grupy neuronów. Uprzednio (przy omawianiu pojedynczych neuronów lub sieci typu MADALINE) grupa ta nie istniała, a sygnał zewnętrzny docierał bezpośrednio do synaps przetwarzających informacje komórek. Teraz, wprowadzając dla sygnałów wejściowych także notację postaci j/^ zakładamy, jak gdyby niejawanie, że każde wejście „buforowane” jest przez neuron, którego zadaniem jest przetwarzanie wejściowego sygnału € X^ na sygnał y„i , przy czym oczywiście neuron ten ma liniową charakterystykę i współczynnik wagi jedynego wejścia wynoszący I, w wyniku czego