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: