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

Z Brain-wiki
Linia 6: Linia 6:
 
szukamy funkcji najlepiej je rozdzielającej, która umożliwi
 
szukamy funkcji najlepiej je rozdzielającej, która umożliwi
 
zaklasyfikowanie nowej obserwacji.
 
zaklasyfikowanie nowej obserwacji.
 
Ponieważ nie chodzi nam o klasyfikowanie obserwacji już zaklasyfikowanych, tylko nowych, do weryfikacji działania algorytmów stosujemy [https://pl.wikipedia.org/wiki/Sprawdzian_krzy%C5%BCowy sprawdzian krzyżowy] (ang. [https://en.wikipedia.org/wiki/Cross-validation_(statistics) cross-validation]).
 
  
  
Linia 34: Linia 32:
 
https://towardsdatascience.com/exploring-classifiers-with-python-scikit-learn-iris-dataset-2bcb490d2e1b
 
https://towardsdatascience.com/exploring-classifiers-with-python-scikit-learn-iris-dataset-2bcb490d2e1b
  
 +
 +
===Weryfikacja===
 +
Ponieważ nie chodzi nam o klasyfikowanie obserwacji już zaklasyfikowanych, tylko nowych, do weryfikacji działania algorytmów stosujemy [https://pl.wikipedia.org/wiki/Sprawdzian_krzy%C5%BCowy sprawdzian krzyżowy] (ang. [https://en.wikipedia.org/wiki/Cross-validation_(statistics) cross-validation]).
  
  

Wersja z 18:25, 21 maj 2023

Wnioskowanie_Statystyczne_-_wykład

Uczenie (maszynowe, ML) nadzorowane (spupervised learning)

Wielowymiarowe wektory próby X mamy podzielone na grupy, szukamy funkcji najlepiej je rozdzielającej, która umożliwi zaklasyfikowanie nowej obserwacji.


Regresja Logistyczna (Logistic regression, LR)

linie podziału z LDA i LR, z pracy "Comparison of Logistic Regression and Linear Discriminant Analysis: A Simulation Study", M. Pohar, M. Blas, and S. Turk, Metodološki zvezki, Vol. 1, No. 1, 2004, 143-161

Omawiana wcześniej regresja liniowa opierała się na linowej zależności między zmienną niezależną [math]x[/math] a zmienną zależną [math]y[/math]

[math]y = a x + b[/math]

Regresję logistyczną stosujemy w przypadku, gdy zmienna zależna jest jakościowa (wyliczeniowa / czynnikowa / kategoryczna = categorical variable). Nie szacujemy wtedy wartości [math]y[/math] na podstawie [math]x[/math], tylko prawdopodobieństwo przynależności [math]x[/math] do jednej z klas (kategorii) [math]K_i[/math].

[math]P(K_i | x) = \frac{1}{1 - e^ {-(a x + b)}}[/math]
Lin log reg.png

Podobnie jak w przypadku regresji liniowej, parametry [math]a[/math] i [math]b[/math] możemy estymować metodą największej wiarygodności. Niestety w przypadku LR nie daje się znaleźć rozwiązania analitycznego, stosowane są metody numeryczne.


Liniowa Analiza dyskryminacyjna (Linear Discriminant Analysis, LDA)

Do każdego punktu danych (potencjalnie wielowymiarowych) mamy przypisaną przynależność do jednej z 2 (w klasycznym podejściu Fischera z 1936r.) lub więcej grup/klas. Założenia o danych wejściowych: rozkład normalny, homoskedastyczność, niezależność. Wykorzystywana jest do znalezienia liniowej kombinacji cech, które najlepiej rozróżniają klasy.

In bankruptcy prediction based on accounting ratios and other financial variables, linear discriminant analysis was the first statistical method applied to systematically explain which firms entered bankruptcy vs. survived. Despite limitations including known nonconformance of accounting ratios to the normal distribution assumptions of LDA, Edward Altman's 1968 model is still a leading model in practical applications.


Przykładowe dane (iris flower dataset)

https://towardsdatascience.com/exploring-classifiers-with-python-scikit-learn-iris-dataset-2bcb490d2e1b


Weryfikacja

Ponieważ nie chodzi nam o klasyfikowanie obserwacji już zaklasyfikowanych, tylko nowych, do weryfikacji działania algorytmów stosujemy sprawdzian krzyżowy (ang. cross-validation).


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ę...

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ł -75 mV 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 -75 mV do +55 mV. 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.


przykładowy problem: https://en.wikipedia.org/wiki/MNIST_database#/media/File:MnistExamples.png


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. Klasyczna 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}^{in}[/math] prezentujemy na wejściu sieci i obliczamy odpowiedź [math]\vec{n}^{out}[/math].
  4. Wartości odczytane z neuronów wyjściowych [math]n_i^{out}[/math] porównujemy z "prawidłową odpowiedzią" [math]r_i^{out}[/math]. Jeśli jako funkcję kosztu wybierzemy błąd średniokwadratowy, będzie ona postaci [math] \sum_i (n_i^{out} -r_i^{out})^2[/math]
  5. Modyfikujemy wagi połączeń kolejnych warstw proporcjonalnie do ich wkładu w dany wynik; jeśli funkcją kosztu będzie błąd średniokwadratowy, wzór na propagację wsteczną błędu otrzymamy 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.
  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.


Metodą uczenia bezpośrednio nakierowaną na optymalizację rozpoznawania wejść spoza zbioru uczącego jest Sprawdzian Krzyżowy (ang. cross-validation).

Generalizacja

z książki "Deep Learning" Ian Goodfellow, Yoshua Bengio and Aaron Courville

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ę.


Polecana lektura: książka "Deep Learning" Ian Goodfellow, Yoshua Bengio and Aaron Courville


  1. wybiórcze blokowanie neurotransmiterów przez niektóre leki psychotropowe czy narkotyki prowadzi m. in. do specyficznych zaburzeń działania mózgu

Modelowanie działania mózgu

ANN1.png ANN2.png