Stacked Long-Term Memory Networks

Stacked Long-Term Memory Networks

Delikatne wprowadzenie do Stacked LSTM
z przykładowym kodem w Pythonie.

Oryginalny model LSTM składa się z pojedynczej ukrytej warstwy LSTM, po której następuje standardowa warstwa wyjściowa z wyprzedzeniem.

Stacked LSTM jest rozszerzeniem tego modelu, który ma wiele ukrytych warstw LSTM, z których każda zawiera wiele komórek pamięci.

W tym poście poznasz architekturę modelu Stacked LSTM.

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

  • Zaleta głębokich architektur sieci neuronowych.
  • Architektura rekurencyjnej sieci neuronowej Stacked LSTM.
  • Jak zaimplementować zestawione LSTM w Pythonie za pomocą Keras.

Rozpocznij swój projekt z moją nową książką Long-Short-Term Memory Networks With Python, w tym samouczki krok po kroku i Kod źródłowy Pythona pliki dla wszystkich przykładów.

Zacznijmy.

Delikatne wprowadzenie do skumulowanych sieci pamięci długoterminowej

Delikatne wprowadzenie do skumulowanych sieci pamięci długoterminowej
Zdjęcie: Joost Markerink, niektóre prawa zastrzeżone.

Przegląd

Ten post jest podzielony na 3 części, są to:

  1. Po co zwiększać głębokość?
  2. Architektura skumulowana LSTM
  3. Zaimplementuj skumulowane LSTM w Keras

Po co zwiększać głębokość?

Układanie warstw ukrytych LSTM w stosy sprawia, że ​​model jest głębszy, dokładniej uzyskując opis jako technika głębokiego uczenia się.

To właśnie głębokość sieci neuronowych jest generalnie przypisywana sukcesowi podejścia w szerokim zakresie trudnych problemów predykcyjnych.

[the success of deep neural networks] jest powszechnie przypisywany hierarchii, która jest wprowadzana z powodu kilku warstw. Każda warstwa przetwarza część zadania, które chcemy rozwiązać, i przekazuje ją do następnej. W tym sensie DNN można postrzegać jako potok przetwarzania, w którym każda warstwa rozwiązuje część zadania przed przekazaniem go do następnej, aż w końcu ostatnia warstwa dostarcza dane wyjściowe.

- Szkolenie i analiza głębokich rekurencyjnych sieci neuronowych, 2013

Dodatkowe ukryte warstwy można dodać do sieci neuronowej Multilayer Perceptron, aby ją pogłębić. Uznaje się, że dodatkowe warstwy ukryte rekombinują wyuczoną reprezentację z poprzednich warstw i tworzą nowe reprezentacje na wysokim poziomie abstrakcji. Na przykład od linii do kształtów do obiektów.

Do przybliżenia większości funkcji można zastosować dostatecznie dużą pojedynczą ukrytą warstwę Multilayer Perceptron. Zwiększenie głębokości sieci zapewnia alternatywne rozwiązanie, które wymaga mniejszej liczby neuronów i szybciej trenuje. Ostatecznie dodanie głębi jest rodzajem optymalizacji reprezentacyjnej.

Uczenie głębokie opiera się na hipotezie, że głęboki, hierarchiczny model może być wykładniczo skuteczniejszy w reprezentowaniu niektórych funkcji niż model płytki.

- Jak konstruować głębokie rekurencyjne sieci neuronowe, 2013.

Potrzebujesz pomocy z LSTMs for Sequence Prediction?

Weź udział w moim bezpłatnym 7-dniowym kursie e-mail i odkryj 6 różnych architektur LSTM (z kodem).

Kliknij, aby się zarejestrować i otrzymać bezpłatną wersję kursu w formacie PDF Ebook.

Rozpocznij teraz BEZPŁATNY minikurs!

Architektura skumulowana LSTM

Te same korzyści można uzyskać dzięki LSTM.

Biorąc pod uwagę, że LSTM działają na danych sekwencyjnych, oznacza to, że dodanie warstw zwiększa poziom abstrakcji obserwacji wejściowych w czasie. W efekcie rozbijanie obserwacji w czasie lub reprezentowanie problemu w różnych skalach czasowych.

… Budowanie głębokiego RNN poprzez układanie wielu powtarzających się stanów ukrytych jeden na drugim. Takie podejście potencjalnie pozwala na działanie stanu ukrytego na każdym poziomie w różnych skalach czasowych

- Jak konstruować głębokie rekurencyjne sieci neuronowe, 2013

Stacked LSTM lub Deep LSTM zostały wprowadzone przez Gravesa i in. w zastosowaniu LSTM do rozpoznawania mowy, pokonując punkt odniesienia w trudnym, standardowym problemie.

RNN są z natury głębokie w czasie, ponieważ ich stan ukryty jest funkcją wszystkich poprzednich stanów ukrytych. Pytanie, które zainspirowało ten artykuł, brzmiało, czy RNN mogą również skorzystać z głębi kosmosu; to jest przez układanie wielu powtarzających się warstw ukrytych jedna na drugiej, tak jak warstwy z wyprzedzeniem są układane w stosy w konwencjonalnych głębokich sieciach.

- Rozpoznawanie mowy za pomocą głębokich rekurencyjnych sieci neuronowych, 2013

W tej samej pracy odkryli, że głębokość sieci jest ważniejsza dla modelowania umiejętności niż liczba komórek pamięci w danej warstwie.

Stacked LSTM są obecnie stabilną techniką rozwiązywania trudnych problemów z przewidywaniem sekwencji. Architektura Stacked LSTM może być zdefiniowana jako model LSTM składający się z wielu warstw LSTM. Warstwa LSTM powyżej zapewnia sekwencję wyjściową zamiast pojedynczej wartości wyjściowej do warstwy LSTM poniżej. W szczególności jedno wyjście na wejściowy krok czasowy zamiast jednego wyjściowego kroku czasowego dla wszystkich wejściowych etapów czasowych.

Skumulowana architektura pamięci długookresowej

Skumulowana architektura pamięci długookresowej

Zaimplementuj skumulowane LSTM w Keras

Możemy łatwo tworzyć skumulowane modele LSTM w bibliotece głębokiego uczenia Keras Python

Każda komórka pamięci LSTM wymaga wejścia 3D. Kiedy LSTM przetwarza jedną wejściową sekwencję kroków czasowych, każda komórka pamięci wyprowadza pojedynczą wartość dla całej sekwencji jako tablicę 2D.

Możemy to zademonstrować poniżej za pomocą modelu, który ma pojedynczą ukrytą warstwę LSTM, która jest jednocześnie warstwą wyjściową.

Sekwencja wejściowa ma 3 wartości. Uruchomienie przykładu generuje pojedynczą wartość dla sekwencji wejściowej jako tablicę 2D.

Aby ułożyć warstwy LSTM, musimy zmienić konfigurację poprzedniej warstwy LSTM, aby wyprowadzać tablicę 3D jako dane wejściowe dla kolejnej warstwy.

Możemy to zrobić, ustawiając argument return_sequences na warstwie na True (domyślnie False). To zwróci jedno wyjście dla każdego wejściowego kroku czasowego i zapewni tablicę 3D.
Poniżej znajduje się ten sam przykład co powyżej, gdzie return_sequences = True.

Uruchomienie przykładu generuje pojedynczą wartość dla każdego kroku czasowego w sekwencji wejściowej.

Poniżej znajduje się przykład definiowania dwóch warstw ukrytych Stacked LSTM:

Możemy kontynuować dodawanie ukrytych warstw LSTM, o ile poprzednia warstwa LSTM dostarcza dane wyjściowe 3D jako dane wejściowe dla kolejnej warstwy; na przykład poniżej znajduje się Stacked LSTM z 4 ukrytymi warstwami.

Dalsze czytanie

Ta sekcja zawiera więcej zasobów na ten temat, jeśli szukasz głębszych informacji.

Podsumowanie

W tym poście odkryłeś architekturę sieci stosowej pamięci długoterminowej.

W szczególności nauczyłeś się:

  • Zaleta głębokich architektur sieci neuronowych.
  • Architektura rekurencyjnej sieci neuronowej Stacked LSTM.
  • Jak zaimplementować zestawione LSTM w Pythonie za pomocą Keras.

Czy masz jakieś pytania?
Zadaj pytania w komentarzach poniżej, a ja postaram się odpowiedzieć.

Opracuj LSTM do prognozowania sekwencji już dziś!

Sieci pamięci długoterminowej z Pythonem

Opracuj własne modele LSTM w kilka minut

... za pomocą zaledwie kilku wierszy kodu w Pythonie

Dowiedz się, jak w moim nowym ebooku:
Sieci pamięci długoterminowej z Pythonem

To zapewnia samouczki do samodzielnej nauki na tematy takie jak:
CNN LSTM, koder-dekoder LSTM, modele generacyjne, przygotowanie danych, prognozowanie i wiele więcej...

Na koniec przenieś powtarzające się sieci neuronowe LSTM do
Twoje projekty prognozowania sekwencji

Pomiń akademików. Tylko wyniki.

Zobacz, co jest w środku

Możesz być również zainteresowany