Algorytm wstecznej propagacji błędów dla sieci MLP

Transkrypt

Algorytm wstecznej propagacji błędów dla sieci MLP
Algorytm wstecznej propagacji błędów dla sieci MLP z jedną warstwą ukrytą
Michał Bereta
http://torus.uck.pk.edu.pl/~beretam
Dla jednego przykładu trenującego błąd definiujemy jako:
przy czym m oznacza liczbę neuronów liniowych w warstwie ukrytej, yi oznacza odpowiedź
neuronu i-tego, di oznacza odpowiedź wzorcową (oczekiwaną) tego neuronu.
Idea algorytmu wstecznej propagacji błędów polega na modyfikowaniu wektora wag w odwrotnym
kierunku niż gradient funkcji błędu. Ogólny wzór zatem to:
gdzie eta to krok uczenia, będący parametrem algorytmu. W szczególności dla j-tej wagi i-tego
neuronu warstwy wyjściowej (drugiej), wzór ten sprowadza się do:
Uwaga! “2” w górnym indeksie wagi w nie oznacza potęgi, a jedynie jest indeksem wskazującym
numer warstwy sieci. Analogicznie jest dla neuronów warstwy pierwszej (ukrytej).
Dla g-tej wagi neuronu t-tego warstwy ukrytej (pierwszej) wzór sprowadza się do:
Neuron t-ty warstwy ukrytej (ang. hidden) realizuje nieliniowe odwzorowanie sygnałów
wejściowych sieci:
gdzie t = 1..K, K to liczba neuronów ukrytych, g = 1..n, n to wymiar danych wejściowych, indeks 0
oznacza wagę biasu.
Neuron i-ty warstwy wyjściowej realizuje odwzorowanie liniowe sygnałów h dochodzących od
neuronów warstwy ukrytej:
gdzie i=1..m, m to liczba neuronów wyjściowych.
Wartość gradientu dla j-tej wagi i-tego neuronu warstwy wyjściowej wymosi:
w szczególności dla wagi biasu:
Wartość gradientu dla g-tej wagi neuronu t-tego wartwy ukrytej wynosi
w szczególności dla wagi biasu:
gdzie m to liczba neuronów liniowych w warstwie wyjściowej.
Ostatecznie otrzymujemy następujące wzory na modyfikację wag obu warstw (k to chwila
czasowa):
Jeśli użytą funkcją nieliniową w neuronach warstwy ukrytej jest funkcja sigmoidalna
to wartość pochodnej łatwo policznyć korzystając jedynie z wartości już obliczonej funckji:
Podobnie dla tangensa hiperbolicznego:
pochodna wynosi:

Podobne dokumenty