Sztuczne sieci neuronowe¶


dr inż. Aleksander Smywiński-Pohl¶

apohllo@agh.edu.pl¶

http://apohllo.pl/dydaktyka/nlp¶

konsultacje: środa 17-18¶

Naturalne i sztuczne sieci neuronowe¶

  • a – dendryty,
  • b – ciało komórki,
  • c – jądro komórkowe,
  • d – akson,
  • e – otoczka mielinowa,
  • f – komórka Schwanna,
  • g – przewężenie Ranviera,
  • h – zakończenia aksonu

Wielkość sieci neuronowej¶

  • Liczba neuronów w mózgu: $1,5-1,6 * 10^{11}$ (setki miliardów)
  • Liczba połączeń w mózgu: $10^{14}$ (setki bilionów)
  • Liczba parametrów w sieci neuronowej: $1,75 * 10^{12}$ (biliony parametrów, model WuDao)

Uwaga

Angielski wyraz billion odpowiada polskiemu wyrazowi miliard.

Działanie pojedynczego neuronu¶

 

 

 

sumowanie sygnałów od porzedzających neuronów

$$ z = w_1 x_1 + \cdots + w_i x_i + \cdots w_k x_k + b $$$$ z = \boldsymbol{w} \cdot \boldsymbol{x} + b $$
$$ z = w_0 x_0 + w_1 x_1 \cdots + w_i x_i + \cdots w_k x_k $$$$ x_0 = 1, w_0 = b $$$$ z = \boldsymbol{w} \cdot \boldsymbol{x} $$
In [ ]:
 

Funkcja aktywacji¶

 

 

 

$$ y = a = f(z) $$

Sigmoida

$$ \sigma(z) = \frac{1}{1 + e^{-z}} $$

Tangens hiperboliczny

$$ \tanh(z) = \frac{e^z - e^{-z}}{e^z+e^{-z}} $$

Rektyfikowana jednostka liniowa
(rectified linear unit)

$$ \textrm{ReLU}(z) = max(x, 0) $$

Jednostka liniowa z błędem gaussowskim
Gaussian error linear unit

$$ \textrm{GeLU(z)} = x P(X \leq x) = x \Phi(x) = 0.5 x\left[1 + \frac{2}{\sqrt{\pi}}\int_0^{\frac{x}{\sqrt{2}}} e^{-t^{2}}dt\right] $$
In [ ]:
 

Sigmoida¶

 

Tangens hiperboliczny¶

 

In [ ]:
 

ReLU¶

 

GeLU¶

 

In [ ]:
 

Struktura sieci neuronowych¶

 

Typowa sieć neuronowa składa się z:

  • warstwy wejściowej (kolor zielony), która akceptuje wektor danych wejściowych
  • warstw/y ukrytej/ych (kolor niebieski - jedna lub wiele warstw),
  • warstwy wyjściowej (kolor żółty), która generuje odpowiedź sieci.

Uniwersalny aproksymator

Sieć neuronowa z nieliniową funkcją aktywacji stanowi uniwersalny aproksymator, tzn. może aproksymować dowolną funkcję:

$$ f(x): \mathbb{R}^{n} \rightarrow \mathbb{R}^{m} $$

Reprezentacja danych wejściowych¶

  • dane tabelaryczne: $\mathbb{R}^n$, nieuporządkowane wartości dyskretne kodowane jako wektory 1-hot-encoding
  • dane sekwencyjne:
    • pojedynczy punkt danych reprezentowana jako wektor $\mathbb{R}^n$, aktywacja sieci jest zachowywana dla kolejnego punktu,
    • sekwencja punktów danych o maksymalnej długości $k$, uzupełniona o wektory dłuości $m$ kodujące pozycję: $\mathbb{R}^{(n+m) \times k}$
  • dane tekstowy:
    • reprezentowane jak dane sekwencyjne, wyrazy nie są kodowane jako 1-hot-encoding, ale jako osadzenia (embeddings)

Wartość funkcji¶

  • pojedynczy neuron $\mathbb{R}$ - regresja
  • dwa neurony, dla których stosowana jest funkcja softmax
    $\sigma(\boldsymbol{z})_i = \frac{e^{z_i}}{\sum_{j=1}^{2} e^{z_j}}$ - klasyfikacja binarna.
  • K neuronów, dla których stosowana jest funkcja soft-max - klasyfikacja wieloklasowa
  • wartościami mogą być również tensory wielowymiarowe

Pytanie: jaką wartość powinna zwracać sieć neuronowa rozpoznająca obiekty na obrazku?¶

 

Funkcja straty¶

Entropia krzyżowa:

$$ H(P,Q) = \boldsymbol{E}_{\boldsymbol{z} \sim P(\boldsymbol{z})}\left[\log Q(\boldsymbol{z})\right] = \int P(\boldsymbol{z})\log Q(\boldsymbol{z}) d\boldsymbol{z} $$
$$ \boldsymbol{w^*} = arg\min_{\boldsymbol{w}} \left(- \sum_{j=1}^N \log P_{\boldsymbol{w}}(\boldsymbol{y}_j|\boldsymbol{x}_j)\right) $$

Sieć w pełni połączona¶

Ang. feed-forward NN, multi layer perceptron (MLP)  
 

Pytanie: dlaczego potrzebne jest kodowanie pozycji dla sekwencyjnych danych wejściowych przetwarzanych przez sieć w pełni połączoną?¶

$$ \boldsymbol{w^*} = arg\min_{\boldsymbol{w}} \left(- \sum_{j=1}^N \log P_{\boldsymbol{w}}(\boldsymbol{y}_j|\boldsymbol{x}_j)\right) $$$$ \boldsymbol{w^*} = arg\min_{\boldsymbol{w}} \left(- \sum_{j=1}^N \log P_{\boldsymbol{w}}(\boldsymbol{y}_j|\boldsymbol{x}_j)\right) $$

Sieć konwolucyjna¶

Filtry sieci konwolucyjnej¶

In [ ]:
 

Sieć rekurencyjna¶

Sieć rekurencyjna (rozwinięcie)¶

Sieć transformacyjna¶

Inferencja w sieci neuronowej¶

 

Graf obliczeń¶

 

In [ ]:
 

Reguła łańcuchowa¶

$$ \frac{\partial g(f(x))}{\partial x} = g'(f(x))\frac{\partial f(x)}{\partial x} $$

 

$$ \frac{dg}{dx} = \frac{dg}{df}\cdot\frac{df}{dx} $$

 

In [ ]:
 

Obliczanie gradientu¶

 

$$ \color{blue}{\frac{\partial L}{\partial c} = e} $$
$$ \color{green}{c' = c - \alpha e = -2 - 5\alpha} $$
In [ ]:
 

 

$$ \begin{split} \frac{\partial L}{\partial a} & = \frac{\partial L}{\partial e}\frac{\partial e}{\partial a} \end{split} $$
$$ \frac{\partial L}{\partial e}=c,\frac{\partial e}{\partial a}=1 $$
$$ \color{blue}{\frac{\partial L}{\partial a} = c} $$
$$ \color{green}{a' = a - \alpha c = 3 + 2\alpha} $$
In [ ]:
 

 

$$ \begin{split} \frac{\partial L}{\partial b} & = \frac{\partial L}{\partial e}\frac{\partial e}{\partial d}\frac{\partial d}{\partial b} \end{split} $$
$$ \frac{\partial L}{\partial e}=c,\frac{\partial e}{\partial d}=1,\frac{\partial d}{\partial b}=2 $$
$$ \color{blue}{\frac{\partial L}{\partial b} = 2c} $$
$$ \color{green}{b' = b - \alpha 2c = 1 + 4\alpha} $$

Wsteczna propagacja błędu (back-propagation)¶

 

Wsteczna propagacja błędów w czasie (BPTT)¶

 

Złe uwarunkowanie problemu optymalizacji¶

 

Pomimo tego, że wartość funkcji straty maleje, to norma z gradientu rośnie. Oznacza to, że proces nie osiąga minimum.

Lokalne minima¶

  • optymalny model nie jest identyfikowalny
  • model identyfikowlany, to model, który przy odpowiedniej liczbie danych uczących eliminuje wszystkie pozostałe modele, tzn. istnieje tylko jeden optymalny model
  • symetria przestrzeni wag - możliwe jest zamienienie ze sobą wag połączeń wchodzących i wychodzących dla pary neuronów w obrębie jednej warstwy, bez wpływu na wartość funkcji straty
  • skalowanie wag - przeskalowanie wagi połączenia wchodzącego przez $\alpha$ oraz wychodzącego przez $1/\alpha$ dla rektyfikowanej jednostki liniowej również nie wpływa na wartość funkcji straty
  • wszystkie takie minima są ekwiwalentne względem siebie
  • weryfikacja czy mamy do czynienia z minimum loklanym opiera się na wyświetleniu wartości normy gradientu - jeśli nie spada, to nie mamy do czynienia z minimum lokalnym

Punkty siodłowe i plateau¶

 

  • liczba punktów siodłowych dla funkcji wielowymiarowej jest większa niż liczba lokalnych minimów
  • przyczyną jest fakt, że wystąpienie miminum lokalnego występuje gdy hesjan macierzy jest dodatnio-określony
  • w przypadku punktu sidołowego, część wartości własnych hesjana jest dodatnia, a część ujemna
  • uzyskanie mimimum lokalnego jest znacznie mniej prawdopodobne, bo wymaga by wszystkie wartości własne były dodatnie - zakładając, że wartości te są losowane, prawdopodobieństwo jest eksponencjalnie mniejsze, w zależności od liczby wymiarów
  • w okolicy punktu siodłowego gradient może być bardzo mały, co wygląda jak wpadnięcie do minimum lokalnego

Eksplodujący gradient¶

 

  • klify powstają w sytuacji mnożenia kilkiu wag o wysokiej wartości, co ma miejsce w przypadku sieci rekurencyjnych
  • ograniczanie gradientu (gradient clipping) pozwala zmniejszyć ryzyko "spadku z klifu"

Optymalizacja parametrów¶

 

https://towardsdatascience.com/a-visual-explanation-of-gradient-descent-methods-momentum-adagrad-rmsprop-adam-f898b102325c

(Stochastic) Gradient Descent (SGD)¶

$$ \boldsymbol{w^*} = arg\min_{\boldsymbol{w}} \left(- \sum_{j=1}^m \log P_{\boldsymbol{w}}(\boldsymbol{y}_j|\boldsymbol{x}_j)\right) $$
  • N - rozmiar zbioru treningowego
  • m = N $\rightarrow$ graident descent
  • m = 1 $\rightarrow$ stochastic gradient descent
  • m > 1 i m < N $\rightarrow$ (minibatch) stochastic gradient descent

SGD¶

  • Istotne jest aby przykłady należące do m były wybrane w sposób losow (dlaczego?)
  • W praktyce wystarczy jednokrotnie zmienić kolejność elementów w całym zbiorze, a następnie wybierać kolejne paczki z tak zmodyfikowanego zbioru.
  • W optymalnym scenariuszu w trakcie procesu uczenia model wykorzystuje określony przykład uczący tylko raz (1 epoka uczenia)
  • W praktyce zbiory uczące są zbyt małe (z wyjątkiem sytuacji określanych jako self-supervised learning), aby można było wykonać tylko jedną epokę

Algorytm SGD¶

 

Warunki zbieżności SGD¶

 

Momentum¶

 

Algorytm SGD z momentum¶

 

Istotą algorytmu jest to, że obliczany jest "pęd" zmian, który bierze wcześniejszy pęd, ze współczynnikiem $\alpha$ oraz nowy gradient, ze współczynnikiem będącym stałą uczącą $\epsilon$.

W konsekwencjie w przypadku natrafienia na duży obszar wypłaszczony, optymalizacja wpada w mniejsze oscylacji i jest zdolna do znalezienia minimum.

 

https://towardsdatascience.com/a-visual-explanation-of-gradient-descent-methods-momentum-adagrad-rmsprop-adam-f898b102325c

Algorytm RMSProp¶

 

Promowane są te parametry sieci, które dotychczas (w ostatnim czasie) nie zmieniły się za bardzo. Zmiana parametrów, które zmieniły się mocna jest wygaszana. Szybkość zmiany obliczana jest na podstawie sumy kwadratów wcześniejszych gradientów ($\boldsymbol{g}\bigodot\boldsymbol{g}$) dla poszczególnych parametrów.

Algorytm AdaGrad¶

 

Algorytm AdaGrad działa jak RMSprop, ale nie ma składnika wygaszającego wcześniejszą sumę gradientów, dlatego wartość ta z czasem tylko rośnie, powodując powolną modyfikację, dla parametrów, które już się zmieniły.

Algorytm RMSprop¶

 

Porównaie AdaGrad z RMSprop. Ten drugi algorym daje szybszą zbieżność.

Algorytm Adam¶

 

In [11]:
from IPython.lib.display import YouTubeVideo

YouTubeVideo('ilYd4TAzNoU', 1120, 630)
Out[11]:
In [ ]: