• Nie Znaleziono Wyników

Uczenie sztucznej sieci neuronowej

W dokumencie Index of /rozprawy2/11036 (Stron 28-33)

Sztuczna sieć neuronowa składa się z określonej liczby sztucznych neuro-nów, pogrupowanych w warstwach. Dane podawane są na warstwę wejściową, a stąd kolejno przez warstwę (lub warstwy) ukrytą aż do warstwy wyjściowej (Rys. 2.3). W trakcie procesu uczenia sieć szuka takich zależności między da-nymi wejściowymi, które pozwolą na przewidywanie wartości wyjściowych, zaś samo „uczenie się” realizowane jest poprzez zmianę wartości wag na poszcze-gólnych wejściach neuronów. Proces ten przebiega iteracyjnie i w każdym kroku wartości wag poszczególnych połączeń ulegają modyfikacji według określonego algorytmu. Na efekt uczenia wpływ ma szereg czynników, jak choćby jakość i ilość danych podawanych na wejście sieci, struktura sieci (ilość warstw ukry-tych, liczba neuronów w poszczególnych warstwach), dobór funkcji aktywacji. Tworzenie sztucznej sieci neuronowej jest działaniem w pewnym sensie eks-perymentalnym i dla każdego zagadnienia wymaga indywidualnego podejścia, w dużym stopniu opartego na metodzie prób i błędów.

Sztuczne sieci neuronowe można klasyfikować pod wieloma względami, jednak najpopularniejszy podział opiera się na metodzie uczenia, którą sieć wykorzystuje. Rozróżnia się tutaj sieci uczące się pod nadzorem (supervised ) i bez nadzoru (unsupervised ) (Tadeusiewicz, 1993). Sieci najczęściej stosowane w przemyśle naftowo-gazowniczym wykorzystują algorytm uczenia pod

nad-zorem (Mohaghegh, 2000a). W metodzie tej na wejście sieci podawany jest wektor danych składający się z parametrów wejściowych oraz odpowiadającej im odpowiedzi z. W procesie uczenia wykorzystywana jest jedynie część bazy danych reprezentującej analizowany problem. Kolejna część służy do kalibra-cji, zaś ostatnia do weryfikacji działania sieci. Niezwykle istotne jest aby dane używane do weryfikacji nie były wykorzystywane w procesie uczenia, czyli aby nie były znane sieci - tzw. „ślepe dane” (z ang. blind data). Co bardzo istotne, zapotrzebowanie SSN na dane w procesie trenowania jest stosunkowo nieduże względem rozmiaru przestrzeni analizowanego zagadnienia (Kalantari-Dahaghi et al., 2012).

Rys. 2.3: Schemat sztucznej sieci neuronowej typu feedforward (opracowano na podst. Bernacki et al., 2004)

Jednym z najpopularniejszych algorytmów wykorzystywanych do ucze-nia sztucznych sieci neuronowych jest algorytm wstecznej propagacji błędu (Tadeusiewicz, 1993; Mohaghegh, 2000a). Bazuje on na metodzie uczenia pod nadzorem, a na wejście sieci podawane są zarówno dane wejściowe jak i wyniki poprzednich prób. Różnica między wynikami sieci i wartościami spodziewany-mi (rzeczywistyspodziewany-mi) traktowana jest jako błąd, a w trakcie realizacji algorytm dąży do jego redukcji. Trening sieci rozpoczyna się zwykle z losowo przypisany-mi wagaprzypisany-mi, które w każdym kroku są modyfikowane tak, aby zprzypisany-minimalizować wartość błędu sieci.

Przebieg procesu trenowania sztucznej sieci neuronowej z wykorzysta-niem algorytmu wstecznej propagacji omówiony zostanie na przykładzie przed-stawionej wyżej (Rys. 2.3) trójwarstwowej sieci jednokierunkowej typu

feed-forward z trzema parametrami wejściowymi i jednym wyjściem. Jak wskazuje

nazwa sieci, przepływ sygnałów jest jednokierunkowy. Po przyjęciu sygnałów przez neurony warstwy wejściowej następuje ich transfer do warstwy ukrytej, co zobrazowane zostało schematycznie na Rys. 2.4. Symbol wij oznacza współ-czynniki wagowe połączeń między wyjściem i-tego a wejściem j-tego neuronu w kolejnej warstwie sieci. Z kolei symbol yi oznacza sygnał wyjściowy neuronu o numerze i.

Rys. 2.4: Schemat działania sztucznej sieci neuronowej - propagacja sygnału z warstwy wejściowej do warstwy ukrytej (opracowano na podst. Bernacki et al., 2004)

Kiedy na bazie przedstawionego schematu wyznaczona zostanie wartość sygnału wyjściowego sieci y, jest ona porównywana z zawartą w ciągu uczącym oczekiwaną wartością sygnału wyjściowego z. Różnica obu wartości nazywana jest sygnałem błędu δ neuronu warstwy wyjściowej. W tym miejscu należy zwrócić uwagę, że wyznaczenie wartości błędu dla „wewnętrznych” neuronów sieci nie jest możliwe, ponieważ nie są znane oczekiwane wartości sygnałów wyjściowych z tych neuronów. W algorytmie wstecznej propagacji błędu sy-gnał wyznaczony w danym kroku procesu uczenia kierowany jest wstecz do wszystkich neuronów, których sygnał wyjściowy podawany był na wejście da-nego neuronu. W czasie wstecznej propagacji błędu wykorzystywane są te same współczynniki wagowe, przez które przemnażane były przesyłane wcześniej

sy-gnały. Na Rys. 2.5 zilustrowano rzutowanie błędu neuronu warstwy wyjściowej na neurony warstwy poprzedzającej. Ten sam sposób stosowany jest sukce-sywnie w celu propagacji błędów na wcześniejsze warstwy sieci. Jeżeli błędy pochodzą z kilku neuronów, ich wartości (a w zasadzie iloczyny ich wartości i współczynników wagowych) są sumowane tak, jak wcześniej sygnały. Przy-kład rzutowania błędów z warstwy ukrytej do neuronu warstwy wejściowej przedstawiono na Rys. 2.6. W analogiczny sposób określane są wartości błę-dów dla wszystkich neuronów sieci.

Rys. 2.5: Schemat wstecznej propagacji błędu z warstwy wyjściowej do warstwy ukrytej (opracowano na podst. Bernacki et al., 2004)

Rys. 2.6: Schemat wstecznej propagacji błędu z warstwy ukrytej do neuronu warstwy wejściowej (opracowano na podst. Bernacki et al., 2004)

Następnym krokiem algorytmu jest modyfikacja wartości współczynni-ków wagowych w oparciu o wyznaczone błędy i pochodne funkcji aktywacji. Na przykładzie połączenia między neuronami 1 i 4 zmodyfikowaną wartość wagi wyznacza się z zależności:

w14= w14+ ηδ4

df4(a)

da y1. (2.3)

Wykorzystując wprowadzone wcześniej indeksy i i j, wyrażenie na zaktualizo-wane wartości współczynników wagowych przedstawić można w ogólnej postaci:

wij = wij + ηδjdfj(a)

da yi. (2.4)

Współczynnik uczenia η przyjmuje wartości z przedziału [0, 1] i decydu-je o szybkości uczenia sieci. Stosudecydu-je się różne techniki doboru wartości tego parametru. Pierwszy sposób polega na rozpoczynaniu procesu uczenia przy większych wartościach parametru oraz jego stopniowe zmniejszanie w miarę jak współczynniki wagowe zbliżają się do swoich ustalonych wartości. Druga, bardziej złożona metoda zakłada rozpoczynanie uczenia z niewielkimi warto-ściami parametru, które są zwiększane w momencie kiedy proces uczenia jest już zaawansowany, zaś w końcowym etapie uczenia są one ponownie zmniej-szane. Rozpoczynanie uczenia sieci z niewielkimi wagami pozwala na wstępne „spolaryzowanie” (określenie znaku) wag połączeń pomiędzy neuronami (Ber-nacki et al., 2004).

Modyfikacją SSN typu feedforward jest sieć kaskadowa - cascade

feedfor-ward, w której istnieją dodatkowe połączenia między daną warstwą (począwszy

od wejściowej) i każdą kolejną warstwą sieci. Schematyczne porównanie sieci

feedforward i cascade feedforward przedstawiono na Rys. 2.7. Na przywołanym

rysunku elementy oznaczone jako b to tzw. próg (z ang. bias), który posiada stałą wartość−1 i własną wagę synaptyczną. Próg nie jest elementem

koniecz-nym i nie we wszystkich rodzajach neuronów występuje. W ramach niniejszej pracy testowane były obydwa typy sieci, a dla analizowanego problemu sieć kaskadowa okazała się lepszym rozwiązaniem.

Rys. 2.7: Uproszczony schemat blokowy sieci typu feedforward (góra) i cascade feedforward (dół)

W dokumencie Index of /rozprawy2/11036 (Stron 28-33)