Różnica między propagacją wsteczną a stochastycznym spadkiem gradientowym

Różnica między propagacją wsteczną a stochastycznym spadkiem gradientowym

Dla początkujących jest wiele nieporozumień związanych z tym, jaki algorytm jest używany do trenowania modeli sieci neuronowych uczenia głębokiego.

Często słyszy się, jak sieci neuronowe uczą się za pomocą „wsteczna propagacja błędu„Algorytm” lub „stochastyczne zejście w gradiencie. ” Czasami jeden z tych algorytmów jest używany jako skrót do tego, jak sieć neuronowa jest dopasowana do zbioru danych szkoleniowych, chociaż w wielu przypadkach istnieje głębokie zamieszanie co do tego, czym są te algorytmy, w jaki sposób są powiązane i jak mogą działać razem.

Ten samouczek ma na celu wyjaśnienie roli algorytmów stochastycznego opadania gradientu i propagacji wstecznej w uczeniu między sieciami.

W tym samouczku odkryjesz różnicę między stochastycznym spadkiem gradientu a algorytmem propagacji wstecznej.

Po ukończeniu tego samouczka będziesz wiedział:

  • Stochastyczne zejście w gradiencie to algorytm optymalizacji minimalizujący utratę modelu predykcyjnego w odniesieniu do zestawu danych szkoleniowych.
  • Propagacja wsteczna to algorytm automatycznego różnicowania służący do obliczania gradientów wag w strukturze grafów sieci neuronowej.
  • Stochastyczne opadanie gradientu i propagacja wsteczna algorytmów błędów są używane razem do trenowania modeli sieci neuronowych.

Zacznijmy.

Różnica między propagacją wsteczną a stochastycznym zejściem gradientowym

Różnica między propagacją wsteczną a stochastycznym spadkiem gradientowym
Zdjęcie: Christian Collins, niektóre prawa zastrzeżone.

Omówienie samouczka

Ten samouczek jest podzielony na trzy części; oni są:

  • Stochastyczne zejście gradientowe
  • Algorytm wstecznej propagacji
  • Stochastyczne zejście gradientowe z propagacją wsteczną

Stochastyczne zejście gradientowe

Gradientowe zejście to algorytm optymalizacji, który znajduje zestaw zmiennych wejściowych dla funkcji docelowej, co daje w wyniku minimalną wartość funkcji docelowej, zwaną minimum funkcji.

Jak sama nazwa wskazuje, zstępowanie gradientowe polega na obliczeniu gradientu funkcji docelowej.

Możesz sobie przypomnieć z rachunku różniczkowego, że pochodna pierwszego rzędu funkcji oblicza nachylenie lub krzywiznę funkcji w danym punkcie. Czytaj od lewej do prawej, pochodna dodatnia sugeruje, że funkcja celu jest nachylona w górę, a pochodna ujemna sugeruje, że funkcja celu jest nachylona w dół.

  • Pochodna: Nachylenie lub krzywizna funkcji docelowej w odniesieniu do określonych wartości wejściowych funkcji.

Jeśli funkcja docelowa przyjmuje wiele zmiennych wejściowych, można je traktować razem jako wektor zmiennych. Praca z wektorami i macierzami jest nazywana algebrą liniową, a wykonywanie rachunku różniczkowego ze strukturami algebry liniowej nazywa się rachunkiem macierzowym lub rachunkiem wektorowym. W rachunku wektorowym wektor pochodnych pierwszego rzędu (pochodnych cząstkowych) określa się ogólnie jako gradient funkcji celu.

  • Gradient: Wektor pochodnych cząstkowych funkcji celu w odniesieniu do zmiennych wejściowych.

Algorytm gradientu spadku wymaga obliczenia gradientu funkcji celu w odniesieniu do określonych wartości wartości wejściowych. Gradient jest skierowany w górę, dlatego po ujemnym gradiencie każdej zmiennej wejściowej następuje w dół, co skutkuje nowymi wartościami dla każdej zmiennej, co skutkuje niższą oceną funkcji celu.

Rozmiar kroku służy do skalowania gradientu i kontrolowania, o ile należy zmienić każdą zmienną wejściową w odniesieniu do gradientu.

  • Rozmiar kroku: Szybkość uczenia się lub alfa, hiperparametr używany do kontrolowania, jak bardzo należy zmienić każdą zmienną wejściową w odniesieniu do gradientu.

Ten proces jest powtarzany do momentu zlokalizowania minimum funkcji docelowej, oszacowania maksymalnej liczby rozwiązań kandydujących lub wystąpienia innego warunku zatrzymania.

Zejście gradientowe można dostosować w celu zminimalizowania funkcji utraty modelu predykcyjnego w zestawie danych uczących, takim jak model klasyfikacyjny lub regresyjny. Ta adaptacja nazywa się stochastycznym zejściem gradientowym.

  • Stochastyczne zejście gradientowe: Rozszerzenie algorytmu optymalizacji zejścia gradientu w celu zminimalizowania funkcji utraty modelu predykcyjnego w zestawie danych szkoleniowych.

Funkcja docelowa jest traktowana jako funkcja utraty lub błędu w zbiorze danych, na przykład błąd średniokwadratowy dla regresji lub entropia krzyżowa dla klasyfikacji. Parametry modelu są przyjmowane jako zmienne wejściowe dla funkcji docelowej.

  • Funkcja strat: funkcja docelowa, która jest minimalizowana.
  • Parametry modelu: parametry wejściowe funkcji strat, które są optymalizowane.

Algorytm jest określany jako „stochastyczny”Ponieważ gradienty funkcji docelowej w odniesieniu do zmiennych wejściowych są zaszumione (np. Przybliżenie probabilistyczne). Oznacza to, że ocena gradientu może mieć szum statystyczny, który może przesłaniać rzeczywisty podstawowy sygnał gradientu, spowodowany rzadkością i szumem w zbiorze danych uczących.

Wgląd w stochastyczne opadanie gradientu jest taki, że gradient jest oczekiwaniem. Oczekiwanie można w przybliżeniu oszacować za pomocą małego zestawu próbek.

- Strona 151, Deep Learning, 2016.

Stochastyczne zejście gradientowe może być używane do trenowania (optymalizacji) wielu różnych typów modeli, takich jak regresja liniowa i regresja logistyczna, chociaż często odkryto bardziej wydajne algorytmy optymalizacji i prawdopodobnie należy je zamiast tego zastosować.

Stochastic Gradient Descent (SGD) i jego warianty są prawdopodobnie najczęściej używanymi algorytmami optymalizacyjnymi do uczenia maszynowego w ogóle, aw szczególności do uczenia głębokiego.

- Strona 294, Deep Learning, 2016.

Stochastyczne zejście gradientowe jest najbardziej wydajnym algorytmem odkrytym do uczenia sztucznych sieci neuronowych, w którym wagi są parametrami modelu, a funkcja straty docelowej jest błędem przewidywania uśrednionym dla jednego, podzbioru (partii) całego zbioru uczącego.

Niemal całe uczenie głębokie jest obsługiwane przez jeden bardzo ważny algorytm: stochastyczne zejście gradientowe lub SGD.

- Strona 151, Deep Learning, 2016.

Istnieje wiele popularnych rozszerzeń stochastycznego zejścia gradientowego zaprojektowanych w celu usprawnienia procesu optymalizacji (taka sama lub lepsza strata w mniejszej liczbie iteracji), takich jak Momentum, Root Mean Squared Propagation (RMSProp) i Adaptive Movement Estimation (Adam).

Wyzwaniem przy korzystaniu ze stochastycznego zstępowania gradientu do uczenia sieci neuronowej jest sposób obliczenia gradientu dla węzłów w ukrytych warstwach sieci, np. Węzłów o jeden lub więcej kroków od wyjściowej warstwy modelu.

Wymaga to określonej techniki z rachunku różniczkowego zwanej regułą łańcuchową i wydajnego algorytmu, który implementuje regułę łańcucha, której można użyć do obliczenia gradientów dla dowolnego parametru w sieci. Ten algorytm nazywa się propagacją wsteczną.

Algorytm propagacji wstecznej

Propagacja wsteczna, zwana także „propagacja wsteczna," lub po prostu "Backprop, ”To algorytm obliczania gradientu funkcji straty w odniesieniu do zmiennych modelu.

  • Rozmnażanie wsteczne: Algorytm obliczania gradientu funkcji straty względem zmiennych modelu.

Możesz sobie przypomnieć z rachunku różniczkowego, że pochodną pierwszego rzędu funkcji dla określonej wartości zmiennej wejściowej jest szybkość zmian lub krzywizna funkcji dla tego wejścia. Kiedy mamy wiele zmiennych wejściowych dla funkcji, tworzą one wektor, a wektor pochodnych pierwszego rzędu (pochodnych cząstkowych) nazywany jest gradientem (tj. Rachunek wektorowy).

  • Gradient: Wektor pochodnych cząstkowych określonych wartości wejściowych w odniesieniu do funkcji celu.

Propagacja wsteczna jest używana podczas uczenia modeli sieci neuronowych w celu obliczenia gradientu dla każdej wagi w modelu sieci. Gradient jest następnie używany przez algorytm optymalizacji do aktualizacji wag modelu.

Algorytm został opracowany specjalnie do obliczania gradientów zmiennych w strukturach grafowych działających wstecz od wyjścia wykresu do wejścia wykresu, propagując błąd w przewidywanym wyniku, który jest używany do obliczania gradientu dla każdej zmiennej.

Algorytm propagacji wstecznej, często nazywany po prostu odwrotną propozycją, umożliwia przepływ informacji o koszcie wstecz przez sieć w celu obliczenia gradientu.

- Strona 204, Deep Learning, 2016.

Funkcja straty reprezentuje błąd modelu lub funkcji błędu, wagi są zmiennymi dla funkcji, a gradienty funkcji błędu w odniesieniu do wag są zatem nazywane gradientami błędu.

  • Funkcja błędu: Funkcja utraty, która jest zminimalizowana podczas uczenia sieci neuronowej.
  • Ciężary: Parametry sieci przyjęte jako wartości wejściowe funkcji strat.
  • Gradienty błędów: Pochodne pierwszego rzędu funkcji straty w odniesieniu do parametrów.

To nadaje algorytmowi nazwę „propagacja wsteczna, ”Lub czasami„propagacja wsteczna błędu" albo "wsteczna propagacja błędu. ”

  • Szerzenie się błędu wstecz: Skomentuj, w jaki sposób gradienty są obliczane rekurencyjnie wstecz przez wykres sieci, zaczynając od warstwy wyjściowej.

Algorytm polega na rekurencyjnym zastosowaniu reguły łańcuchowej z rachunku różniczkowego (innej niż reguła łańcuchowa z prawdopodobieństwa), która służy do obliczania pochodnej funkcji podrzędnej, biorąc pod uwagę pochodną funkcji macierzystej, dla której pochodna jest znana.

Łańcuchowa reguła rachunku różniczkowego […] służy do obliczania pochodnych funkcji utworzonych przez komponowanie innych funkcji, których pochodne są znane. Propagacja wsteczna to algorytm obliczający regułę łańcucha z określoną kolejnością operacji, która jest wysoce wydajna.

- Strona 205, Deep Learning, 2016.

  • Zasada łańcuchowa: Wzór na rachunek różniczkowy do obliczania pochodnych funkcji za pomocą funkcji pokrewnych, których pochodne są znane.

Istnieją inne algorytmy obliczania reguły łańcuchowej, ale algorytm wstecznej propagacji jest wydajnym algorytmem dla określonego grafu zbudowanego przy użyciu sieci neuronowej.

Algorytm propagacji wstecznej można nazwać typem algorytmu automatycznego różnicowania i należy on do klasy technik różnicowania zwanych akumulacją odwrotną.

Opisany tutaj algorytm wstecznej propagacji jest tylko jednym podejściem do automatycznego różnicowania. Jest to szczególny przypadek szerszej klasy technik zwanych akumulacją w trybie odwrotnym.

- Strona 222, Deep Learning, 2016.

Chociaż propagacja wsteczna została opracowana w celu trenowania modeli sieci neuronowych, zarówno algorytm propagacji wstecznej, jak i efektywnie implementowana formuła łańcuchowa, mogą być ogólnie stosowane do obliczania pochodnych funkcji.

Ponadto propagacja wsteczna jest często mylnie rozumiana jako specyficzna dla wielowarstwowych sieci neuronowych, ale w zasadzie może obliczać pochodne dowolnej funkcji…

- Strona 204, Deep Learning, 2016.

Stochastyczne zejście gradientowe z propagacją wsteczną

Stochastic Gradient Descent to algorytm optymalizacji, którego można używać do trenowania modeli sieci neuronowych.

Algorytm stochastycznego spadku wartości gradientu wymaga obliczenia gradientów dla każdej zmiennej w modelu, aby można było obliczyć nowe wartości zmiennych.

Propagacja wsteczna to automatyczny algorytm różnicowania, który można wykorzystać do obliczenia gradientów parametrów w sieciach neuronowych.

Algorytm propagacji wstecznej i algorytm stochastycznego zstępowania gradientu mogą być używane razem do uczenia sieci neuronowej. Możemy to nazwać „Stochastyczne zejście gradientowe z propagacją wsteczną. ”

  • Stochastyczne zejście gradientowe z propagacją wsteczną: Bardziej kompletny opis ogólnego algorytmu używanego do uczenia sieci neuronowej, z odniesieniem do algorytmu optymalizacji i algorytmu obliczania gradientu.

Praktycy często mówią, że trenują swój model za pomocą propagacji wstecznej. Technicznie jest to niepoprawne. Nawet w przypadku krótkiej ręki byłoby to ...

Możesz być również zainteresowany