Rozważmy węzeł w sieci propagacji wstecznej (BP). Ma wiele wejść i wytwarza wartość wyjściową. Chcemy użyć korekcji błędów podczas treningu, więc zaktualizuje ona także wagi na podstawie oszacowania błędu dla węzła.
Każdy węzeł ma wartość odchylenia, θ. Możesz myśleć o tym jako o wadze do wewnętrznego, stałego, wartościowanego wejścia 1.0.
Aktywacja jest sumą ważonych wejść i wartości obciążenia. Przyjrzyjmy się naszemu węzłowi zainteresowania jako j, węzły w poprzedniej warstwie z wartościami i, i węzły w następnej warstwie o wartościach k. Aktywacja naszego węzła j wynosi:
netto J = Σ i (O i x W ij) + θ J
Oznacza to, że wartość aktywacji dla j jest sumą produktów wyjściowych z węzła i oraz odpowiedniego węzła łączącego wagę i i j, plus wartość odchylenia.
Wyjście naszego węzła j to funkcja przenoszenia aktywacji:
O J = F (bez J)
f jest zwykle funkcją esicy.
F (netto J) = 1/(1 + e -net J)
Funkcja esicy ma łatwo określić pierwszą pochodną:
f '(net j) = f (netto j) × (1.0 - f (netto j))
Cokolwiek przeniesienie funkcji używamy, musimy wiedzieć, jak obliczyć jego pierwszą pochodną. BP działa poprzez gradientowe zejście przez regułę łańcucha, więc jest to ważne. Powyższe równanie będzie różne przy innej funkcji przenoszenia.
Do tej pory wiemy, jak uzyskać wartości wejściowe, obliczyć aktywację, obliczyć wyjście i obliczyć pierwszą pochodną aktywacji. Teraz musimy radzić sobie z błędami i regulacją wagi.
Wartość używana do oszacowania błędu węzła w BP jest nazywana δ. Wartość δ dla węzła jest proporcjonalna do pierwszej pochodnej aktywacji węzła i warunku błędu, który otrzymuje. Istnieją dwa sformułowania dla odebranego błędu, jeden dla węzłów wyjściowych i jeden dla ukrytych węzłów.
Rodzajowo
δ = F '(netto) x (otrzymane błąd)
Dla węzła wyjściowego
δ wyjście = F' (netto) × (t - o)
gdzie t jest wartością oczekiwaną w tym węźle wyjściowym, a o jest faktyczną wartością wyjściową tego węzła wyjściowego.
Naszym ukrytego węzła j, to jest tak:
δ J = F '(bez J) x Ď K (δ K x W jk)
δ naszego węzła j δ j jest produktem pierwszej pochodnej naszego tran funkcja sfer podana czasy aktywacji suma delt w następnej warstwie (bliżej wyjścia) pomnożona przez wartość masy łączącej. Mając to na ręce, możemy obliczyć, w jaki sposób wyregulować ciężary idące do poprzedniej warstwy węzłów (bliżej wejścia).
DW ij = L x O i x δ J
DW tutaj oznacza "zmiana masy", to co równanie mówi się, że zmiana w masie z węzeł i do naszego węzła j jest równy iloczynowi parametru uczenia L (zwykle ta sama wartość dla wszystkich węzłów w sieci), wartość wyjściowa węzła i oraz δ (termin błędu) dla naszego węzła j.
Regulacja wartości odchylenia jest podobna do regulacji wagi.
dθ J = L x f (θ J) x δ J
dθ tutaj oznacza "zmianę θ". Musimy zastosować funkcję transferu do wartości odchylenia θ j, aby uzyskać termin podobny do wyniku z węzła. W przeciwnym razie wygląda tak jak inne równanie.
Należy zauważyć, że obliczanie zmian masy powinno odbywać się w całej sieci, a następnie zastosować zmiany po obliczeniu wszystkich tych wartości.
To dość szerokie pytanie. Możesz mieć więcej szczęścia na http://dsp.stackexchange.com. – mtrw
Możesz znaleźć bardzo dobre wyjaśnienie, ze zdjęciami, na http://galaxy.agh.edu.pl/~vlsi/AI/backp_t_pl/backprop.html –
To wspaniałe wytłumaczenie Marc! Nie jestem jednak pewien, czy rozumiem różnicowy bit. Czy df (e)/de oznacza pochodną w odniesieniu do całej ważonej sumy (e) lub tylko dane wejściowe połączenia, którego wagę próbujemy zaktualizować? Więc powiedzmy, że węzeł ma liniową funkcję aktywacji, czy df (e)/de zawsze będzie równe 1 (f (e) = e -> df (e)/de = 1)? Czy też zawsze będzie to równa masa, którą aktualizujemy (f (e) = w1x1 + w2x2 -> df (e)/dx1 = w1) –