LSTM został opracowany specjalnie w celu uniknięcia problemu zanikania gradientu. Ma to zrobić za pomocą karuzeli Constant Error (CEC), która na poniższym schemacie ( Greff i in. ) Odpowiada pętli wokół komórki .
(źródło: deeplearning4j.org )
Rozumiem, że ta część może być postrzegana jako rodzaj funkcji tożsamości, więc pochodna jest jedna, a gradient pozostaje stały.
Nie rozumiem tylko, jak nie znika z powodu innych funkcji aktywacyjnych? Bramki wejściowe, wyjściowe i zapomniane używają sigmoidu, którego pochodna wynosi co najwyżej 0,25, a g i h były tradycyjnie tanh . W jaki sposób propagacja wsteczna przez te nie powoduje zniknięcia gradientu?
neural-networks
lstm
TheWalkingCube
źródło
źródło
Odpowiedzi:
Znikający gradient najlepiej wyjaśnić w przypadku jednowymiarowym. Wielowymiarowość jest bardziej skomplikowana, ale zasadniczo analogiczna. Możesz to przejrzeć w tym doskonałym artykule [1].
Załóżmy, że mamy stanie ukrytym w momencie kroku t . Jeśli upraszczamy rzeczy i usuwamy błędy i dane wejściowe, otrzymujemy h t = σ ( w h t - 1 ) . Następnie możesz to pokazaćht t
Faktoring oznaczony !!! jest kluczowy. Jeśli waga nie jest równa 1, to albo spadnie do zera gwałtownie wt′-t, albo wzrośnie wykładniczo szybko.
W LSTMs masz stan komórki . Pochodna ma postać ∂ s t ′st
Tutajvtjest wejściem do bramki zapomnienia. Jak widać, nie ma w tym przypadku wykładniczo szybkiego rozkładu. W związku z tym istnieje co najmniej jedna ścieżka, w której gradient nie znika. Aby uzyskać pełne wyprowadzenie, patrz [2].
[1] Pascanu, Razvan, Tomas Mikolov i Yoshua Bengio. „Trudność szkolenia nawracających sieci neuronowych”. ICML (3) 28 (2013): 1310–1318.
[2] Bayer, Justin Simon. Reprezentacje sekwencji uczenia się. Diss. München, Technische Universität München, Diss., 2015, 2015.
źródło
Obraz bloku LSTM z Greffa i in. (2015) opisuje wariant, który autorzy nazywają waniliowym LSTM . Różni się nieco od oryginalnej definicji z Hochreiter i Schmidhuber (1997). Oryginalna definicja nie zawierała bramki „zapomnij” i połączeń wizjera.
Termin karuzela o stałym błędzie został użyty w oryginalnym artykule do oznaczenia powtarzającego się połączenia stanu komórki. Rozważ oryginalną definicję, w której stan komórki zmienia się tylko poprzez dodanie, gdy brama wejściowa zostanie otwarta. Gradient stanu komórki w stosunku do stanu komórki na wcześniejszym etapie czasowym wynosi zero.
Błąd może nadal wejść do CEC przez bramkę wyjściową i funkcję aktywacji. Funkcja aktywacji nieco zmniejsza wielkość błędu przed dodaniem go do CEC. CEC jest jedynym miejscem, w którym błąd może przepływać bez zmian. Ponownie, gdy brama wejściowa się otworzy, błąd wychodzi przez bramę wejściową, funkcję aktywacji i transformację afiniczną, zmniejszając wielkość błędu.
Zatem błąd jest redukowany, gdy jest on propagowany wstecz przez warstwę LSTM, ale tylko wtedy, gdy wchodzi i wychodzi z CEC. Ważne jest to, że nie zmienia się w CEC bez względu na to, jak długo przebywa dystans. Rozwiązuje to problem w podstawowej sieci RNN, że za każdym razem, gdy krok stosuje transformację afiniczną i nieliniowość, co oznacza, że im większa odległość czasowa między wejściem a wyjściem, tym mniejszy błąd.
źródło
http://www.felixgers.de/papers/phd.pdf Proszę zapoznać się z sekcjami 2.2 i 3.2.2, w których wyjaśniono część skróconego błędu. Nie propagują błędu, jeśli wycieknie on z pamięci komórki (tj. Jeśli jest zamknięta / aktywowana bramka wejściowa), ale aktualizują wagi bramki na podstawie błędu tylko w tym momencie. Później jest zerowane podczas dalszej propagacji wstecznej. Jest to rodzaj włamania, ale powodem jest to, że błąd przepływu wzdłuż bram i tak zanika z czasem.
źródło
Chciałbym dodać trochę szczegółów do zaakceptowanej odpowiedzi, ponieważ uważam, że jest ona nieco bardziej szczegółowa, a niuans może nie być oczywisty dla kogoś, kto pierwszy pozna RNN.
źródło