Sztuczna inteligencja/SI Moduł 12

Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania

Sieci neuronowe - wprowadzenie

Sieci neuronowe są jedną z wielu możliwych realizacji aproksymatora regresyjnego. Swoją popularność zawdzięczają w pewnej mierze analogiom biologicznym – można w nich upatrywać niezwykle uproszczonych modeli naturalnych struktur neuronowych. Przykładem sieci neuronowych, chyba najbardziej rozpowszechnionym, jest perceptron wielowarstwowy, któremu poświęcimy tę lekcję. Inne rozpowszechnione struktury sieci neuronowych to architektury ze sprzężeniem zwrotnym (tzw. sieci Hopfielda), realizujące układy dynamiczne, oraz architektury samoorganizujące (tzw. sieci Kohonena), realizujące algorytm grupowania. Tematyka sieci neuronowych jest dość dobrze opisana w literaturze uzupełniającej, do której odsyłamy bardziej zainteresowanych. Poniżej naszkicujemy podstawowe zagadnienia związane z wykorzystaniem perceptronu jako metody regresji oraz z metodami uczenia się stosowanymi dla tej sieci.

Definicja perceptronu wielowarstwowego

Perceptron wielowarstwowy jest aproksymatorem nieliniowym RmRn. Graficzna postać sieci jest następująca:

Węzeł grafu sieci odpowiada pojedynczemu neuronowi. Krawędź odpowiada połączeniu między neuronami (tzw. połączenie synaptyczne) – jest skierowana od wyjścia jednego do wejścia drugiego neuronu, co odpowiada jednokierunkowemu przepływowi danych.

Neuron działa w taki sposób, że dokonuje się ważonego sumowania wartości wejść, obliczając wartość, zwaną pobudzeniem hi:

hi=j=1..nwijyj+wi0

Wygodnie jest założyć, że neuron otrzymuje jeszcze jedno wejście x0 o wartości równej stale jedynce. Przy takim założeniu, pobudzenie da się zapisać prościej jako

hi=j=0..nwijyj

Wyjście neuronu powstaje w wyniku podania pobudzenia na funkcję aktywacji g:

yi=g(hi)

W przypadku sieci neuronowych, funkcja aktywacji ma kształt litery „s” – jest monotonicznie rosnąca z asymptotami poziomymi w nieskończonościach. Najczęściej przyjmuje się funkcję tangens hiperboliczny:

g(x)=exexex+ex

przyjmującą wartość z zakresu [–1,1], względnie funkcję logistyczną:

g(x)=11+ex

o wartościach z zakresu [0,1].

Neurony zgrupowane są w warstwy w taki sposób, że między neuronami tej samej warstwy nie ma połączeń, a połączenia występują jedynie między neuronami sąsiadujących warstw.

Wyróżnia się warstwę neuronów wyjściowych (zwaną krótko warstwą wyjściową), których wyjście jest jednocześnie wyjściem z sieci. Pozostałe warstwy są nazywane ukrytymi, gdyż wyjścia neuronów w nich się znajdujących nie są „widoczne” na wyjściu sieci.

Dla neuronów wyjściowych można przyjąć, że funkcja aktywacji jest funkcją liniową.


Tak więc sieć neuronowa jest w swojej istocie pewnym wzorem, który da się przedstawić w formie graficznej. Wzór ten brzmi (w nieco nieformalnym zapisie):

yi=wijg(kwikg(...(twstxt)))

Wielokrotne ważone sumowanie i przekształcanie funkcją aktywacji ma miejsce tyle razy, ile jest warstw neuronów w sieci, dlatego w powyższym wzorze pojawiają się trzy kropki. Jak więc widać, wyjście sieci neuronowej jest funkcją jej wejścia, przy czym funkcja ta jest parametryzowana zestawem parametrów w_.

Interpretacja znaczenia parametrów sieci

Spróbujmy zrozumieć znaczenie poszczególnych parametrów, analizując przykładowe sieci zawierające jeden neuron wyjściowy z liniową funkcją aktywacji oraz jedną warstwę nieliniowych neuronów.

Na początek skoncentrujmy się na najprostszej sieci, mających jedno wejście i jedno wyjście (a zatem aproksymowana jest funkcja RR). Rozważmy sieć o dwóch neuronach ukrytych i jednym wyjćciu liniowym. Opisuje ją wzór:

y=w10+w11g(w20+w21x)+w12g(w30+w31x)

Znaczenie parametrów pojedynczego neuronu warstwy ukrytej jest następujące. Wartości w20/w21, w30/w31 służą do przesuwania wykresu funkcji g wzdłuż osi OX. Z kolei parametry w21,w31 wpływają na „stromość” wykresu funkcji g(h2), g(h3). Tak więc, manipulując oboma parametrami, jesteśmy w stanie uzyskać funkcję o różnej „stromości”, różnie położoną na osi OX.

Parametry warstwy wyjściowej służą określeniu stopnia „wymieszania” wyjść neuronów ukrytych. Im większa wartość wagi w1i, tym większy mnożnik użyty do wykresu wyjścia neuronu i-tego (dodajmy, że przyjęcie ujemnej wagi w1i powoduje odbicie wykresu funkcji wyjścia neuronu względem osi OX).

Z kolei w przypadku sieci o dwóch wejściach, aproksymującej funkcję R2R, z dwoma neuronami ukrytymi i jednym liniowym wyjściowym, mamy wzór:

y=w10+w11g(w20+w21x1+w22x2)+w12g(w30+w31x1+w32x2)

Wagi w20,w21,w22 odpowiadają za sposób ułożenia w przestrzeni powierzchni, odpowiadającej funkcji g(w20+w21x1+w22x2) – powierzchnia ta ma poziomice ułożone wzdłuż prostej o równaniu w20+w21x1+w22x2=0, a w przekroju poprzecznym do poziomic ma kształt funkcji g. Zmieniając współczynniki wagowe, dokonujemy obrotów i przemieszczeń tej powierzchni, nie zmieniając jednak jej zasadniczego kształtu.

Wpływ wag perceptronu na jakość aproksymacji