Sztuczne sieci neuronowe
Z EGA Wiki
Witaj, skoro znalazłeś się na tej stronie, oznacza to zapewne, że nie trzeba Ci przedstawiać w jak wielu dziedzinach naszego życia wykorzystuje się mechanizmy sztucznych sieci neuronowych. Jeżeli czujesz się na siłach, przejdź bezpośrednio do następnego paragrafu. Dla pozostałych, oraz tych, którzy trafili tutaj przypadkiem, postaram się pokazać dlaczego warto pozostać nieco dłużej na tej stronie.
Czy wiedziałeś, że sieci neuronowe można znaleźć w...
- filtrze antyspamowym - tak, konieczność ciągłego dostosowywania się do coraz wymyślniejszych metod spamerów sprawia, że operatorzy serwerów pocztowych sięgają po tą technologię,
- sondach kosmicznych - owszem, nie zawsze już przed startem rakiety wiadomo jak najlepiej pokonać przeszkodę na Marsie,
- rozpoznawaniu gestów - a także mowy oraz w oprogramowaniu OCR (elastyczność sieci neuronowych coraz częściej pomaga w rozpoznawaniu tekstu pisanego),
- wojskowych i cywilnych systemach radarowych - sieci doskonale rozpoznają wzorce, twarze itd...
- grach komputerowych - sieci neuronowe stoją za niektórymi decyzjami podejmowanymi przez bohaterów sterowanych przez komputer!
Spis treści |
Idea
Nazwa - sieci neuronowe - mówi już wiele o pochodzeniu i strukturze samej sieci.
Nie martw się jednak, jeżeli spałeś w czasie licealnych lekcji biologii. Rzut okiem na rysunek 1. wystarczy, abyś zrozumiał jak działają pierwowzory sztucznych neuronów - komórki nerwowe. Pomijając całą chemię oraz mechaniczne "pompy" jonów takich jak sód, potas czy wapń, które stoją za przesyłaniem sygnałów elektrycznych, dla naszych celów należy jedynie wiedzieć, że sygnały wejściowe dla komórki są podawana na dendryty, zaś wyjściowe kierowane na synapsę (bądź synapsy). Decyzja o tym, jakiego rodzaju będzie to sygnał podejmowana jest w ciele komórki. Jaka jest wydajność komórki nerwowej? Cóż, z uwagi na procesy biochemiczne rządzące przesyłaniem sygnałów, komórki mogę je przekazywać z częstotliwością z zakresu 1-100 Hz. Czas trwania samego impulsu to około 1-2 milisekundy, zaś szybkość propagacji (nie, to nie jest zwykły kabel, odpowiedź nie brzmi c!) zależy od regionu ciała i waha się w zakresie od 1-100 metrów na sekundę.
Ludzki mózg - jeden z najwspanialszych efektów ewolucji. Możnaby rzez, wzór do naśladowania dla chcących tworzyć sztuczne sieci neuronowe. Natrafić można tu jednak na kolejny problem - mimo objęctości okołó półtorej litra, w mózgu znajduje się średnio około 100 miliardów komórek nerwowych, dokonujących około 1 attooperacji na sekundę (10^18). Nawet mając możliwość odtworzenia struktury ich połączeń, nie wydaje się prawdopodobne aby w najbliższym czasie można było efektywnie naśladować ludzki mózg. Dlatego też, w dzisiejszych czasach, odchodzi się od porównania sztucznych sieci neuronowych do mózgu jako takiego, uznając to za zbyt daleko idące uproszczenie.
Model neuronu
Niemniej jednak okazało się, że nawet bardzo proste sztuczne sieci neuronowe w pewnych sytuacjach wypełniają doskonale swoje zadania. Pierwszy model neuronu, którego używa się zresztą do dnia dzisiejszego, zaproponowali jeszcze w czasie trwania drugiej wojny światowej McCulloch i Pitts (rysunek 2.).
Był i jest on rzecz jasna zbyt prosty, aby naśladować rzeczywisty neuron biologiczny, jednak nie taki był cel jego powstania. Neuron taki posiada <math>n</math> wejść oraz jedno dodatkowe, na które zawsze podawany jest sygnał jednostkowy (lub maksymalny przy innym doborze zakresu pracy). Każdy z sygnałów wejściowych <math>x_i</math> (<math>i \in (1, n)</math>) jest następnie mnożony przez odpowiednią wagę <math>w_i</math> oraz sumowany. Otrzymana w ten sposób wartość jest argumentem tzw. funkcji aktywacji, której wynik działania jest podawany na wyjście tego neuronu.
W bardziej zwartym, matematycznym opisie wygląda to następująco:
gdzie:
<math>\textbf{x} = [1, x_1, x_2, ... , x_n]^{T}</math> - wartości sygnałów wejściowych
<math>\textbf{w} = [-\Theta, w_1, ... , w_n]</math> - wartości wag przyporządkowanych poszczególnym wejściom
f - funkcja aktywacji
y - sygnał wyjściowy
Kolejną cechą wpływającą na używaną powszechnie terminologię jest zakres zwracanych przez neuron wartości.
- Neurony formalne, dla których wartość zwracana przybiera wartości dyskretne (całkowite, typu int).
- Neurony ciągłę, wartości funkcji aktywacji z zakresu (0,1), bądź (-1,1).
Funkcja aktywacji zwracająca wartości z zakresu (0,1) nazywane są unipolarnymi, te zaś, które zwracają wartości z przedziału (-1,1) nazywane są bipolarnymi. Poniżej przedstawiam postaci najczęściej spotykanych funkcji aktywacji, zarówno dyskretnych (u góry), jak i ciągłych (u dołu), unipolarnych (po lewej) i bilpolarnych (po prawej). Warto podkreślić zależność przebiegu wartości poniższych funkcji od parametru <math>\lambda</math>.
Sieci neuronowe
Dysponując podstawową jednostką budulcową, modelem pojedynczego neuronu, można pomyśleć o połączeniu ich w sieć.
- Sieci jednokierunkowe to takie, w których sygnał przechodzi przez każdy z neuronów tylko raz. Ze względu na ilość połączonych po kolej neuronów, można wyróżnić:
- sieci jednowarstwowe, rysunek 4 (jeden lub więcej neuronów, przez które sygnał przechodzi w tym samym czasie),
- sieci wielowarstwowe, rysunek 5 (spotykane w rzeczywistych sytuacjach; warstwy dzielą się na wejściową, wyjściową, a wszystko pomiędzy nimi nazywamy warstwami ukrytymi),
- Sieci rekurencyjne to takie, w których istnieje sprzeżenie zwrotne. Połączenia między neuronami stanowią graf z cyklami. Innymi słowy, wartości wyjść neuronów z dalszych części sieci stanowią część danych wejściowych dla wcześniejszych jej części.
Konwencja użyta przy numerowaniu wag dla neuronów w kolejnych warstwach polega na zapisaniu dwóch liczb w indeksie dolnym, z których pierwszy mówi o numerze warstwy (ukrytej), drugi zaś o numerze neuronu, tj. <math>w_{j,i}</math>: j-numer warstwy, i-numer neuronu. Nie ma przy tym żadnego powodu, aby zakładać, że poszczególne warstwy posiadają tą samą ilość neuronów. Co więcej, istnieje wiele metod mających na celu optymalizację ilości neuronów w sieci. Ideowo ich działanie można przedstawić jako sukcesywne usuwanie tych elementów, których wpływ na ostateczny wynik jest zaniedbywalny.
Uczenie sztucznych sieci neuronowych
Jedną z cech, które czynią sztuczne sieci neuronowe tak potężnym narzędniem jest ich zdolność do uczenia (się). Nauka taka może być (ang. supervised learning, uczenie z nauczycielem), ale nie musi (ang. unsupervised learning, uczenie bez nauczyciela) nadzorowana przez tzw. nauczyciela. W pierwszym przypadku dla każdego wektora danych wejściowych znamy dokładną, porządaną przez nas odpowiedź sieci. Korekta wag neuronów następuje przez uwzględnienie różnicy między pożądaną, a rzeczywistą odpowiedzią sieci. W procesie uczenia się sieci bez nauczyciela, porządana odpowiedź jest oczywiście nie znana, dlatego sieć uczy się poprzez analizę swych reakcji na pobudzenia. Tego typu zmiany nazywane są samoorganizacją.
Opis symboli użytych przy opisie metod uczenia sztucznych sieci neuronowych
x= <math>[1, x_1, x_2, ... , x_N ]^{T}</math> - wektor wejściowy
d= <math>[d_1, d_2, ... , d_M ]^{T}</math> - zadana postać wektora wyjściowego
<math>\textbf{w_k} = [-\theta, w_i1, w_i2, ..., w_iN]^{T}</math> - zbiór wag k-tej warstwy neuronów
<math>w_ij</math> - waga połączenia neuronu j-tego warstwy k+1 i i-tego warstwy k-tej
f - funkcja aktywacji
y= <math>[y_1, y_2, ..., y_M]^{T}</math> - sygnał wyjściowy sieci dla M neuronów w warstwie wyjściowej
x(k), w(k) - ogólnie, wektory wejścia oraz wag w k-tym kroku uczenia
Zmiana wartości wag odbywa się w kolejnych krokach uczenia i można ją zapisać formalnie jako:
Uczenie z nauczycielem
Reguła perceptronowa sieci dyskretnej
Reguła ta działa dla pojedynczego neuronu dyskretnego. Definiuje się funkcję błędu e(k) będącą różnicą pomiędzy wartością oczekiwaną d(k), a tą zwróconą przez sieć y(k):
W zależności od wartości funkcji błędu, wzmacnia bądź osłabia się wagi neuronu:
- e(k)>0 - wzmocnienie wag,
- e(k)<0 - osłabienie wag.
Korekcja może przebiegać przykładowo wg poniższej reguły:
w_i(k+1) = w_i(k) gdy y(k) = d(k)
w_i(k+1) = w_i(k)+x(k) gdy y(k) = -1, d(k) = +1
w_i(k+1) = w_i(k)-x(k) gdy y(k) = +1, d(k) = -1
Celem metody jest taka zmiana wag, aby dla każdego wektora wejściowego e(k) było równe zeru, dla wszystkich kolejnych kroków uczenia.
Reguła Widrowa-Hoffa
Reguła ta stanowi uogólnienie reguły perceptronowej dla sieci złożonej z zarówno neuronów ciągłych jak i dyskretnych. W metodzie tej korekcja wag następuje wg poniższych zależności
Prowadzi to do minimalizacji różnic pomiędzy wartościami <math>y_i</math> i <math>d_i</math>, co można równoznacznie zapisać jako minimalizację pewnej kwadratowej funkcji celu:
gdzie p oznacza liczbę kroków w procesie uczenia.
Uczenie bez nauczyciela
Omówione tutaj zostaną dwie metody uczenia samoorganizującego się typu konkurencyjnego, w których neurony współzawodniczą między sobą, aby stać się jak najbardziej aktywnymi.
WTA (ang. Winner Takes All)
Zasada głosi, że tylko jeden z neuronów może być aktywny w danym kroku procesu nauki.
Po podaniu na wejście sieci wektora uczącego x, bierzemy pod uwagę sygnały wyjściowe neuronów
po czym wyłaniajmy neurona-zwycięzcę (ozn. <math>i^*</math>), dla którego wartość net jest największa:
Aktualizacja wagi zwycięzcy następuje zgodnie z, podobnym do wcześniejszych, wzorem:
gdzie współczynnik c to tak zwana stała uczenia decydująca m.in. o szybkości i dokładności procesu nauki.
Warto zapamiętać, że w wyniku uczenia wartości wag neuronu będą odpowiadać uśrednionym wartościom wektorów wejściowych, dla których zadany neuron był zwycięzcą.
WTM (ang. Winner Takes Most)
Zasada głosi, że w danym kroku procesu nauki neuron wygrywający uaktywnia się w sposób maksymalny, zaś jego najbliźsi sąsiedzi uaktywniają się tylko częściowo. Pozostałe neurony nie są aktywne podczas tego kroku.
W regule tej stała c występująca w metodzie WTA zamieniona jest na funkcję określającą stopień sąsiedztwa pomiędzy neuronem-zwycięzcą a pozostałymi neuronami w warstwie. Przykładowo, funkcja taka mogłaby wyglądać jak:





