2016-09-24 15 views
7

Mam trudny czas konceptualizacji różnicy między stateful i stateless LSTMs w Keras. Rozumiem, że na końcu każdej partii "stan sieci został zresetowany" w przypadku bezstanowym, podczas gdy dla przypadku stanowego stan sieci jest zachowywany dla każdej partii, a następnie musi zostać ręcznie zresetowany koniec każdej epoki.Keras - stateful vs stateless LSTMs

Moje pytania są następujące: 1. W przypadku bezpaństwowców, w jaki sposób sieć się uczy, jeżeli państwo nie jest zachowane pomiędzy partiami? 2. Kiedy można użyć trybu bezpaństwowego vs stanowego LSTM?

Odpowiedz

7

polecam Ci najpierw nauczyć pojęcia BPTT (Back Krzewienia Through Time) oraz mini-serii SGD (Stochastic Gradient Descent), wtedy będziesz mieć dalsze rozumienie procedury treningowej LSTM użytkownika.

W razie pytań,

Q1. W przypadkach bezpaństwowych LSTM aktualizuje parametry wsadu 1, a następnie inicjuje stany ukryte i stany komórek (zwykle wszystkie zera) dla wsadu 2, podczas gdy w przypadkach stanowych wykorzystuje ostatnie stany ukryte wyjścia i stany komórki jako stany początkowe dla wsadu 2.

Q2. Jak widać powyżej, gdy dwie sekwencje w dwóch partiach mają połączenia (na przykład ceny jednego zasobu), lepiej użyć trybu stanowego, w przeciwnym razie (na przykład jedna sekwencja reprezentuje pełne zdanie) należy użyć trybu bezpaństwowego.

BTW, @ vu.pham powiedział if we use stateful RNN, then in production, the network is forced to deal with infinite long sequences. Wydaje się, że nie jest to poprawne, jak widać w Q1, LSTM NIE BĘDZIE nauczyć się na całej sekwencji, najpierw uczy się sekwencji w partia1, aktualizuje parametry, a następnie uczyć się sekwencji na batch2.

+0

Odnośnie uwagi na temat tego, co @ vu.pham powiedział ... Jeśli LSTM jest "stanowy", informacje o poprzednich partiach są przechowywane w ukrytych stanach, więc aktualizacje na partia 2 powinny zależeć od partii 1, czyż nie? ? (to jest uważane za skrócone BPTT waniliowego RNN, myślę, że tam backprop używa tylko kilku kroków czasowych, ale RNN może nadal uczyć się długich zależności, dłużej niż długość sekwencji, na której są obliczane gradienty) –

4
  1. Sieć nadal uczy się połączenia z pozycji i oraz pozycji i + 1 w każdej partii. Jeśli więc zdecydujesz się na bezpaństwowy RNN, bardzo często podzielisz serię na wiele segmentów, każdy segment o długości N. Jeśli dodasz te segmenty do sieci, nadal nauczysz się przewidywać następny element, biorąc pod uwagę jego wiedzę o wszystkich poprzednich elementy.

  2. Wierzę, że większość ludzi używa w praktyce bezpaństwowego RNN, ponieważ jeśli używamy stateful RNN, to w produkcji sieć musi radzić sobie z nieskończonymi długimi sekwencjami, co może być kłopotliwe w obsłudze.

Powiązane problemy