Dlaczego RNN z jednostkami LSTM może cierpieć z powodu „eksplodujących gradientów”?


13

Mam podstawową wiedzę na temat działania RNN (a zwłaszcza jednostek LSTM). Mam obrazowe wyobrażenie o architekturze jednostki LSTM, czyli komórki i kilku bramek, które regulują przepływ wartości.

Jednak najwyraźniej nie do końca zrozumiałem, w jaki sposób LSTM rozwiązuje problem „znikania i eksplodowania gradientów”, który pojawia się podczas treningu, z wykorzystaniem propagacji wstecznej w czasie, konwencjonalnego RNN. Nie miałem okazji czytać gazet, aby w pełni zrozumieć matematykę.

Ta odpowiedź zawiera krótkie wyjaśnienie, w jaki sposób RNN z jednostkami LSTM rozwiązują problem „zanikających gradientów”. Matematycznie przyczyną wydaje się być nieistnienie pochodnej, która nie znika, tzn. Nie dąży do zera. W związku z tym autor stwierdza: „istnieje co najmniej jedna ścieżka, na której gradient nie zanika”. IMHO, to wyjaśnienie jest trochę niejasne.

W międzyczasie czytałem artykuł „ Sekwencja do uczenia się za pomocą sekwencji z sieciami neuronowymi” (autor: Ilya Sutskever, Oriol Vinyals, Quoc V. Le) oraz, w tym artykule, rozdział „3.4 Szczegóły treningu”

Chociaż LSTM zwykle nie cierpią z powodu znikającego gradientu gradientu, mogą mieć wybuchające gradienty.

Zawsze uważałem, że RNN z jednostkami LSTM rozwiązują zarówno problemy „znikania”, jak i „eksplodujących gradientów”, ale najwyraźniej RNN z jednostkami LSTM również cierpią z powodu „eksplodujących gradientów”.

Intuicyjnie, dlaczego tak jest? Matematycznie, jakie są przyczyny?

Odpowiedzi:


12

Bardzo krótka odpowiedź:

LSTM oddziela stan komórki (zwykle oznaczony przez c) i ukrytą warstwę / wyjście (zwykle oznaczony przez h) i dokonuje tylko addytywnych aktualizacji c, co czyni pamięć cbardziej stabilną. Tak więc gradient przepływający cjest utrzymywany i trudny do zniknięcia (dlatego ogólny gradient jest trudny do zniknięcia). Jednak inne ścieżki mogą powodować eksplozję gradientu.


Bardziej szczegółowa odpowiedź z matematycznym wyjaśnieniem:

Najpierw przejrzyjmy mechanizm CEC (Constant Error Carousel). CEC mówi, że od kroku tdo czasu t+1, jeśli bramka zapomnienia ma wartość 1 (nie ma bramki zapomnienia w oryginalnym dokumencie LSTM, więc zawsze tak jest), gradient może przepływać bez zmian. Zgodnie z formułami BPTT w pracy LSTM: A Space Search Odyssey, załącznik A.2 ( w pracy znajduje się w innej literaturze), przepływ CEC w rzeczywistości odpowiada równaniu . Kiedy jest bliskie 1, kumuluje się do bezstratnie.dl/dctyhδct=+δct+1ft+1ft+1δct+1δct

Jednak LSTM to coś więcej niż CEC. Oprócz ścieżki CEC od do istnieją inne ścieżki między dwoma sąsiadującymi krokami czasowymi. Na przykład . Przechodząc przez proces wstecznej propagacji w 2 krokach, mamy: , widzimy, że jest pomnożone dwukrotnie na tej ścieżce, podobnie jak waniliowe RNN, które mogą powodować wybuch gradientu. Podobnie ścieżki przez bramę wejściową i zapominającą są również zdolne do powodowania eksplozji gradientu z powodu macierzy .ctct+1ytot+1yt+1δytRoTδot+1δyt+1RoTδot+2RoTRiT,RfT,RzT

Odniesienie:

K. Greff, RK Srivastava, J. Koutn´ık, BR Steunebrink i J.Schmidhuber. LSTM: Odyseja przestrzeni poszukiwań. CoRR, abs / 1503.04069, 2015.


Czy możesz podać pełne cytowanie tego artykułu? Linki zwykle giną.
mkt - Przywróć Monikę

2
@mkt Dziękujemy za radę. W rzeczywistości jest to bardzo znany artykuł, a link prowadzi do arXiv, więc prawdopodobnie nie umrze, lol ~ Ale koniecznie sprawdź wersję v1 (Ponieważ obecna wersja v2 nie zawiera dodatku).
pula

Dzięki za dodanie go i szczegółowe informacje na temat dodatku.
mkt - Przywróć Monikę

Świetna odpowiedź, zwykle nie komentuję wstawiania +1, ale to zasługuje na to. Pokazanie rzeczywistego przykładu z algebrą macierzy potencjalnie niestabilnych ścieżek w komórce LSTM odpowiada dokładnie OP.
DeltaIV

3

RNN przed LSTM / GRU były niestabilne, ponieważ to, co robili, polegało zasadniczo na pomnożeniu stanu ukrytego z pewnymi wagami dla każdego pomiaru czasu, co oznacza, że ​​jest to operacja wykładnicza. Jak wiemy, potęgowanie jest bardzo niestabilne: komórek LSTM / GRU rozwiązuje ten problem, zamieniając mnożenie w wartość dodaną. Masz stan komórki i zamiast pomnożyć albo go dodajesz, albo odejmujesz.

0.992000.134
1200=1
1.0120013

Jednak wciąż istnieją ścieżki, przez które gradient może stać się niestabilny, a im większa jest sieć, tym bardziej prawdopodobne jest, że napotkasz ten problem.


3
Dlaczego miałoby to odpowiedzieć na moje pytanie? Chciałbym poznać szczegóły.
nbro
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.