Czy ktoś może wyjaśnić algorytm wstecznej propagacji? [duplikować]

13

Co to jest algorytm wstecznej propagacji i jak on działa?

Jestem
źródło
1
Tutaj zamieszczam odpowiedź na to pytanie , jeśli ktoś jest zainteresowany (nie chciałem ponownie publikować).
Phylliida,

Odpowiedzi:

14

Algorytm wstecznej propagacji jest algorytmem spadku gradientu do dopasowania modelu sieci neuronowej. (jak wspomniał @Dikran) Pozwól mi wyjaśnić, jak to zrobić.

Formalnie: użycie obliczenia gradientu na końcu tego słupka w ramach równania [1] poniżej (czyli definicja spadku gradientu) daje algorytm wstecznej propagacji jako szczególny przypadek zastosowania spadku gradientu.

Model sieci neuronowej Formalnie naprawiamy pomysły za pomocą prostego modelu jednowarstwowego:

f(x)=g(A1(s(A2(x))))
, gdzie , a są znane dla wszystkich , , i , to nieznane funkcje afiniczne. Funkcja nazywa się funkcją aktywacyjną w ramach klasyfikacji.g:RRs:RMRMm=1,Ms(x)[m]=σ(x[m])A1:RMRA2RpRMσ:RR

Aby naprawić pomysły, zastosowano kwadratową funkcję Loss . Dlatego wektory wejściowe z można dopasować do rzeczywistych danych wyjściowych z (mogą być wektorami), minimalizując empiryczne loss: w odniesieniu do wyboru i .(x1,,xn)Rp(y1,,yn)R

Rn(A1,A2)=i=1n(yif(xi))2[1]
A1A2

Zejście gradientowe Zejście gradientowe dla zminimalizowaniato algorytm, który iteruje: dla dobrze wybranych rozmiarów kroków(zwany również współczynnikiem uczenia się w ramach propagacji wstecznej). Wymaga obliczenia gradientu. W rozważanym przypadku.R

al+1=alγlR(al), l0.
(γl)lRal=(Al1,Al2)

GradientR (dla prostego rozważanego modelu sieci neuronowej) Oznaczmy przez gradient gradientu w funkcji , a gradient jako funkcja . Standardowe obliczenia (przy użyciu reguły do ​​wyprowadzania składu funkcji) i użycie zapisu dają dla wszystkich1RRA12RRA2zi=A1(s(A2(xi)))

1R[1:M]=2×i=1nzig(zi)(yif(xi))
m=1,,M
2R[1:p,m]=2×i=1nxig(zi)zi[m]σ(A2(xi)[m])(yif(xi))

Użyłem tutaj notacji R: jest wektorem złożonym ze współrzędnych od indeksu do indeksu .x a bx[a:b]xab

Robin Girard
źródło
11

Propagacja wsteczna jest sposobem wypracowania pochodnej funkcji błędu w odniesieniu do wag, aby model mógł być szkolony metodami optymalizacji spadku gradientu - jest to po prostu zastosowanie „reguły łańcucha”. Nie ma w tym nic więcej, więc jeśli czujesz się dobrze z rachunkiem, jest to w zasadzie najlepszy sposób, aby na to spojrzeć.

Jeśli nie podoba ci się rachunek różniczkowy, lepszym sposobem byłoby powiedzenie, że wiemy, jak źle radzą sobie jednostki wyjściowe, ponieważ mamy pożądaną moc wyjściową do porównania rzeczywistej mocy wyjściowej. Jednak nie mamy pożądanego wyjścia dla ukrytych jednostek, więc co robimy? Reguła wstecznej propagacji jest w zasadzie sposobem na zrzucenie winy za błąd jednostek wyjściowych na jednostki ukryte. Im większy wpływ ukryta jednostka ma na konkretną jednostkę wyjściową, tym większa jest wina za błąd. Całkowita wina związana z ukrytą jednostką daje wtedy wskazanie, jak bardzo należy zmienić wagę warstwy wejściowej do ukrytej. Dwie rzeczy, które decydują o tym, jak duża część winy jest przekazywana z powrotem, to waga łącząca ciężary warstwy ukrytej i wyjściowej (oczywiście) i moc wyjściowa ukrytej jednostki (jeśli krzyczy, a nie szepcze, może mieć większy wpływ). Reszta to tylko matematyczne subtelności, które zamieniają tę intuicję w pochodną kryterium treningowego.

Poleciłbym również książkę Biskupów, by uzyskać właściwą odpowiedź! ; o)

Dikran Torbacz
źródło
2

Jest to algorytm do uczenia wielowarstwowych sieci neuronowych (wielowarstwowe perceptrony). W Internecie jest kilka dobrych apletów Java, które ilustrują to, co się dzieje, na przykład ten: http://neuron.eng.wayne.edu/bpFunctionApprox/bpFunctionApprox.html . Ponadto książka Bishopa na temat NN jest standardowym źródłem informacji na temat wszystkiego, co ma związek z NN.

Stephen Turner
źródło
Próbując zbudować stałe repozytorium wysokiej jakości informacji statystycznych w formie pytań i odpowiedzi, staramy się unikać odpowiedzi tylko za pomocą linku . Jeśli możesz, możesz to rozwinąć, być może podając streszczenie informacji pod linkiem?
Glen_b