Sztuczne sieci neuronowe (ANN ): Różnice pomiędzy wersjami

Z Brain-wiki
Linia 18: Linia 18:
 
Przytoczony powyżej (z pominięciem roli jonów potasu) model Hodgkina-Huxleya jest dziś uważany za bardzo uproszczony. Mimo to, jego stopień komplikacji tak dalece odbiega od sztucznych sieci neuronowych, że nie można ich traktować jako modelu działalności mózgu. Modelowanie prosesów zachodzących w mózgu człowieka to osobna gałąź nauki. Za to właśnie dzięki drastycznym uproszczeniom sztuczne sieci neuronowe (ANN) zyskały efektywność obliczeniową, która w połączeniu z równoległością, tolerancją na błędy i atrakcyjną terminologią doprowadziła do rozpowszechnienia ANN w praktycznych zastosowaniach obliczeniowych.  
 
Przytoczony powyżej (z pominięciem roli jonów potasu) model Hodgkina-Huxleya jest dziś uważany za bardzo uproszczony. Mimo to, jego stopień komplikacji tak dalece odbiega od sztucznych sieci neuronowych, że nie można ich traktować jako modelu działalności mózgu. Modelowanie prosesów zachodzących w mózgu człowieka to osobna gałąź nauki. Za to właśnie dzięki drastycznym uproszczeniom sztuczne sieci neuronowe (ANN) zyskały efektywność obliczeniową, która w połączeniu z równoległością, tolerancją na błędy i atrakcyjną terminologią doprowadziła do rozpowszechnienia ANN w praktycznych zastosowaniach obliczeniowych.  
  
 +
<!--
 
Obszernym i aktualnym źródłem informacji o ANN są
 
Obszernym i aktualnym źródłem informacji o ANN są
 
[http://page.mi.fu-berlin.de/prechelt/FAQ/neural-net-faq.html archiwa grupy dyskusyjnej], w literaturze polskojęzycznej pierwszą klasyczną
 
[http://page.mi.fu-berlin.de/prechelt/FAQ/neural-net-faq.html archiwa grupy dyskusyjnej], w literaturze polskojęzycznej pierwszą klasyczną
 
pozycją są [http://winntbg.bg.agh.edu.pl/skrypty/0001/main.html Sieci Neuronowe] autorstwa Ryszarda Tadeusiewicza. Poniżej przedstawimy w
 
pozycją są [http://winntbg.bg.agh.edu.pl/skrypty/0001/main.html Sieci Neuronowe] autorstwa Ryszarda Tadeusiewicza. Poniżej przedstawimy w
 
skrócie zdecydowanie najpopularniejszy typ sieci neuronowych.
 
skrócie zdecydowanie najpopularniejszy typ sieci neuronowych.
 +
-->
  
 
===Sieci warstwowe z propagacją wsteczną===
 
===Sieci warstwowe z propagacją wsteczną===

Wersja z 17:53, 21 sty 2016

AS/ Sztuczne sieci neuronowe (ANN )

Artificial Neural Networks, ANN powstały w wyniku dążenia do stworzenia systemów naśladujących działanie mózgu. Mózg człowieka składa się z ok. [math]10^{11}-10^{12}[/math] neuronów, każdy z nich posiada ok. [math]10^4[/math] połączeń z innymi neuronami. Ich działanie w największym uproszczeniu można opisać jak następuje:

Potencjał czynnościowy wygenerowany przez neuron propaguje się przez wypustki (akson i dendryty) do innych neuronów. Potencjały docierające do każdego z neuronów sumują się, z wagami zależnymi od siły połączeń. Połączenia między neuronami mogą mieć różną siłę, czyli potencjał czynnościowy generowany ze stałą wartością może mieć różny wkład w zależności od tego, przez jakie połączenie dotarł. Jeśli suma tych potencjałów (po odjęciu wkładu połączeń hamujących) przekroczy ustalony dla danego neuronu próg, to generowany jest potencjał czynnościowy o stałej wartości. Potencjał czynnościowy wygenerowany przez neuron propaguje się[math]\ldots[/math]

Ogólnym modelem matematycznym, naśladującym opisane procesy, będzie

sieć złożona z prostych jednostek obliczeniowych, połączonych kanałami komunikacyjnymi zdolnymi do przenoszenia wartości numerycznych. Jednostki działają wyłącznie w oparciu o swe lokalne dane i wejścia z kanałów komunikacyjnych (połączeń).

Jednak bliższe badania nad mózgiem człowieka wykazały nieporównanie wyższy niż w przytoczonym opisie stopień złożoności, związany m. in. z wpływem szeregu procesów biochemicznych. I tak np.

do przekazu impulsu z dendrytów do ciała neuronu konieczna jest obecność szeregu neurotransmiterów, czyli cząsteczek przenoszących impuls drogą chemiczną przez szczelinę synaptyczną między dendrytem a ciałem neuronu-adresata[1]. Z kolei generacja potencjału czynnościowego, czyli jak się wydaje podstawowej jednostki przekazu informacji w układzie nerwowym, jest wynikiem złożonych procesów rządzących depolaryzacją błony neuronu. W stanie spoczynku wnętrze neuronu wykazuje potencjał [math]-75\mu V[/math] względem otoczenia; jest on utrzymywany dzięki aktywności błony neuronu (pompa jonowo-sodowa), utrzymującej wyższe stężenie jonów [math]=Na= ^{+}[/math] na zewnątrz oraz niższe stężenie [math]=Cl= ^{-}[/math] wewnątrz. Neurotransmitery uwolnione z synapsy neuronu wysyłającego impuls powodują otwarcie kanałów przepuszczjących dodatnio naładowane jony sodu ([math]=Na= ^{+}[/math]) do wnętrza neuronu, co zmienia potencjał z [math]-75\mu V[/math] do [math]+55\mu V[/math]. Ta depolaryzacja aktywuje kanały sodowe w sąsiednich częściach błony, co powoduje propagację pobudzenia.

Przytoczony powyżej (z pominięciem roli jonów potasu) model Hodgkina-Huxleya jest dziś uważany za bardzo uproszczony. Mimo to, jego stopień komplikacji tak dalece odbiega od sztucznych sieci neuronowych, że nie można ich traktować jako modelu działalności mózgu. Modelowanie prosesów zachodzących w mózgu człowieka to osobna gałąź nauki. Za to właśnie dzięki drastycznym uproszczeniom sztuczne sieci neuronowe (ANN) zyskały efektywność obliczeniową, która w połączeniu z równoległością, tolerancją na błędy i atrakcyjną terminologią doprowadziła do rozpowszechnienia ANN w praktycznych zastosowaniach obliczeniowych.


Sieci warstwowe z propagacją wsteczną

Schemat sieci neuronowej z jedną warstwą ukrytą

Na rysunku %i 1 wagę połączenia przewodzącego pobudzenie od [math]j[/math]-tego do [math]i[/math]-tego neuronu w [math]k[/math]-tej warstwie oznaczono [math]w_{ij}^k[/math]. Suma pobudzeń docierających w danej chwili do [math]i[/math]-tego neuronu wyniesie

[math]\sum_{j} w_{ij} n_j.[/math]

Przetwarzanie w neuronie polega na odjęciu od tej sumy charakteryzującego neuron progu [math]\mu_i[/math] i podziałaniu na wynik nieliniową funkcją [math]\Phi[/math]:

[math] n_i=\Theta\left(\sum_{j} w_{ij}^k n_j - \mu_i\right) [/math]

W oryginalnym modelu McCulloha i Pittsa z roku 1943, [math]\Theta(\cdot)[/math] była funkcją progową:

[math] \Theta(x)=\begin{cases} 0 \ =dla= \ x \lt 0\\ 1\ =dla= \ x\ge 0 \end{cases}. [/math]

Aktualnie najczęściej stosowaną formą nieliniowości jest funkcja logistyczna

[math] \Theta(x)=\frac{1}{1+e^{-\beta x}} [/math]

Działanie sieci z rys. %i 1 wygląda następująco:

  • Sygnał wejściowy [math]\vec{x}=\{x_1, x_2, x_3, x_4\}[/math] podawany jest na neurony warstwy wejściowej.
  • Aktywacja każdego z neuronów warstwy ukrytej obliczana jest na podstawie równania %i 1. Dla przykładu dla "środkowego" neuronu [math] n_2=\frac{1}{1+=e= ^{-\beta\left(w_{21}^1x_1+w_{22}^1x_2+w_{23}^1x_3+w_{24}^1x_4-\mu_2 \right)}}.[/math]
  • Aktywacja neuronów warstwy wyjściowej, czyli odpowiedź sieci na sygnał [math]\vec{x}[/math], obliczana jest analogicznie jak w poprzednim kroku, tylko sygnały wejściowe [math]x_i[/math] zastęują obliczone aktywacje neuronów warstwy ukrytej.

"Inteligencja" sieci zawarta jest w wagach [math]w_{ij}^k[/math] połączeń między kolejnymi warstwami. Clou problemu polega na dobraniu tych wag tak, by realizowały interesujące nas odwzorowanie.

W klasycznym przypadku, nieznane odwzorowanie mamy zadane z pomocą zestawu "przykładów" postaci (wektor wejściowy, prawidłowa klasyfikacja) — oznaczmy je [math](\vec{x}^i, \vec{r}^i)[/math]. Rozważmy dla przykładu konstrukcję sieci rozpoznającej pisane odręcznie litery. Zestaw przykładów stanowić będą mapy bitowe obrazów reprezentujących litery i ich prawidłowe klasyfikacje. Wagi dobierane są w procesie uczenia sieci . Cała procedura przebiega jak następuje:

  1. Ustalamy architekturę sieci:
    • rozmiar warstwy wejściowej jest zwykle zdeterminowany przez rozmiar wektora danych; np w przypadku zapisu pisanych odręcznie liter w postaci obrazów o rozmiarach 15x15 pixeli, rozmiar warstwy wejściowej wyniesie 225 neuronów,
    • rozmiar i liczba warstw ukrytych są problemem otwartym; najczęściej używamy jednej warstwy ukrytej, której rozmiar dobieramy empirycznie,
    • rozmiar warstwy wyjściowej zależy od sposobu kodowania informacji, którą chcemy na niej odczytywać; w przypadku rozpoznawania dużych liter alfabetu polskiego najlepiej wybrać 35 neuronów wyjściowych: literę "A" reprezentować będzie jedynka na pierwszym neuronie i zera na pozostałych, "B" — jedynka na drugim neuronie itd.
  2. Inicjalizujemy wagi połączeń [math]w_{ij}^k[/math] przypisując im małe liczby losowe — warto zapamiętać, że w związku z tym każde uruchomienie tego samego algorytmu na tych samych danych może dać w wyniku inną sieć.
  3. Wybrany losowo ze zbioru uczącego wektor [math]\vec{x}^l[/math] prezentujemy na wejściu sieci i obliczamy odpowiedź [math]\vec{n}^=wyjść= [/math].
  4. Wartości odczytane z neuronów wyjściowych [math]n_i^=wyjść= [/math] porównujemy z "prawidłową odpowiedzią" [math]r_i^l[/math]. Błąd średniokwadratowy obliczamy jako [math] \sum_i (n_i^=wyjść= -r_i^l)^2[/math]
  5. Modyfikujemy wagi połączeń kolejnych warstw proporcjonalnie do ich wkładu w dany wynik (propagacja wsteczna błędu)[2]
  6. Punkty 3—5 powtarzamy na losowo wybieranych przykładach aż do uzyskania zamierzonego efektu.

Ostatni punkt wymaga podjęcia wysoce nietrywialnej decyzji, od której m.in. zależeć będzie zdolność sieci do generalizacji wiedzy podanej w postaci przykładów.

Generalizacja

Głównym celem opisanej powyżej przykładowej konstrukcji nie było rozpoznawanie liter ze zbioru przygotowanego do uczenia sieci (to możnaby osiągnąć znacznie prostszymi metodami), lecz prawidłowa klasyfikacja nowych , nie widzianych przez sieć przypadków. Uzyskanie takiej własności wymaga prawidłowej generalizacji wiedzy "widzianej" w procesie uczenia. Doskonała klasyfikacja przypadków prezentowanych sieci w procesie uczenia nie implikuje wcale poprawnego zachowania sieci na nowych elementach — czasami dla uzyskania prawidłowej generalizacji konieczna jest wręcz pewna tolerancja w stosunku do wyników uzyskiwanych na zbiorze uczącym.

Uzyskaniu poprawnej generalizacji służy m. in. dzielenie zbioru przykładów przeznaczonych do uczenia sieci na zbiór uczący i zbiór kontrolny, nie prezentowany sieci w procesie uczenia (punkty 3—5), i służący wyłącznie do weryfikacji zdolności generalizacji.

Opisany powyżej schemat to zaledwie szkielet metodologii stosowanej w rozwiązywaniu konkretnych problemów. Nawet w swej podstawowej postaci zawiera dwie arbitrarnie wybierane stałe (współczynniki uczenia i bezwładności) od których zależy jego działanie. Metody uczenia stosowane w praktyce oferują ogromą ilość modyfikacji polepszających zbieżność i generalizację.

  1. wybiórcze blokowanie neurotransmiterów przez niektóre leki psychotropowe czy narkotyki prowadzi m. in. do specyficznych zaburzeń działania mózgu
  2. Wzór na propagację wsteczną błędu otrzymujemu wypisując explicite wzór na wartości otrzymane na neuronach wyjściowych w zależności od wag i wartości wejściowych, i różniczkując go po wagach połączeń między kolejnymi warstwami.