Sieć jednowarstwowa jednokierunkowa
Sygnały na wyjściu pojedynczej warstwy można wyznaczyć zgodnie z zależnością:
Y = f(WTX+θ)
Gdzie:
Y – wektor kolumnowy wartości wyjść Y = (y1, y2, …, yk)T, k – liczba wyjść warstwy
X – wektor kolumnowy wejść, X=(x, x, …, xn)T, n – liczba wejść
Θ – wektor kolumnowy przesunięć funkcji aktywacji (tzw. Bias), k-elementów
f – funkcja aktywacji, W – macierz wag o strukturze W = [W1, W2, …, Wk], k – liczba neuronów w warstwie; Wi – wektor kolumnowy wartości wag i-tego neuronu. Wi – (wi1, wi2, …, wij, … win)T, n – liczba wag neuronu.
Algorytm uczenia.
Ciąg uczący: U=(<X1, Z1>, <X2, Z2, …<XL, ZL>); <X, Z> - para ucząca; X-wektor wejściowy, Z – wektor wartości oczekiwanych na wyjściu.
Uczenie polega na zmianie wartości wag macierzy W.
Algorytm dla sieci z liniową funkcja aktywacji (algorytm delta).
$\delta = \sum_{j}^{}\delta_{j}$ - sumaryczny błąd na wyjściach, gdzie $\delta_{j} = \frac{\left( z_{j} - y_{j} \right)^{2}}{2}$
Problem uczenia można określić jako problem minimalizacji błędu, do którego można wykorzystać gradientową metodę największego spadku. Zgodnie z tą metodą w każdym kolejnym kroku iteracji wartości wag zmienia się o pewną wartość:
wijnowe = wijstare + wij, gdzie: $w_{\text{ij}} = - \eta\frac{\text{σδ}}{\sigma w_{\text{ij}}}$
Zmodyfikowana wartość wagi: wijnowe = wijstare + η(zj − yj)xi
Dla nieliniowych funkcji aktywacji, wymagane jest by były różniczkowalne:
$w_{\text{ij}}^{\text{nowe}} = w_{\text{ij}}^{\text{stare}} + \eta(z_{j} - y_{j}){\frac{\sigma y_{j}}{\sigma\text{net}_{j}}x}_{i}$, net – sumaryczne pobudzenie neuronu.
Uczenie perceptronu wielowarstwowego:
Algorytm zmiany wartości wag jest analogiczny jak dla perceptronu prostego.
Algorytm wstecznej propagacji błędów:
Na wejście wprowadzić pierwszy wektor wejściowy X
Wyznaczyć wartość wektora wyjściowego sieci
Dla każdego neuronu warstwy wyjściowej wyznaczyć błąd: δMj = zj − yj
Wyznaczyć wartość poprawki dla każdej z wag warstwy M-tej (wyjściowej): wijnowe = wijstare + ηδMj(1 − yj)xiyj
Wyznaczyć wartość błędów dla neuronów warstwy M-1, korzystając z zależności:
$\delta_{M - 1\ k} = \sum_{j}^{}{w_{\text{ij}}\delta_{\text{Mj}}}$
Wyznaczyć wartość poprawki dla każdej z wag warstwy M-1:
wijnowe = wijstare + ηδM − 1 j(1 − yj)xiyj
Przejść do warstwy M-2 i powtarzać czynności 5 i 6 do momentu wprowadzenia modyfikacji dla wszystkich wag sieci.
Z ciągu uczącego pobrać kolejny wektor X i przejść do czynności 2.
Czynności 1-8 wykonać dla całego ciągu uczącego. Warunkiem zakończenia jest 100% poprawności rozpoznawania.