Zrozumienie topologii LSTM

9

Tak jak wielu innych, znalazłem tu i tutaj zasoby niezwykle przydatne do zrozumienia komórek LSTM. Jestem pewien, że rozumiem, w jaki sposób wartości płyną i są aktualizowane, i jestem wystarczająco pewny, aby dodać wspomniane „połączenia z wizjerami” itp.

W moim przykładzie za każdym razem mam wektor wejściowy długości ii wektor wyjściowy długości o, gdzie o < i.

Żadna ze stron tak naprawdę nie obejmuje tego, w jaki sposób są one rozmieszczane i szkolone.

Mam 2 pytania:

  1. W moich danych treningowych mam wiele par wektorów wejścia / wyjścia odpowiadających wielu, wielu jednostkom czasu. Załóżmy, że trenuję LSTM ze wszystkimi danymi. Czy mogę następnie uruchomić zestaw danych o dowolnej długości? Mam na myśli to, że jeśli mam dane szkoleniowe dla, powiedzmy, całego 2015 i 2016 roku, czy mogę następnie przesyłać dane przez sieć za 2017 rok? A może 2017 do 2020 roku?
  2. Zgodnie z tym, co przeczytałem, wydaje mi się, że mam jedną komórkę LSTM na jednostkę czasu, więc jeśli mam wiele jednostek czasu, to mam wiele połączonych komórek LSTM. Ponieważ długość łańcucha zależy od długości danych, które chcę uruchomić przez sieć, a to jest prawdopodobnie arbitralne, nie widzę, jak bym to wytrenował, chyba że wytrenuję tylko jedną komórkę LSTM, która następnie powiela liczbę czasy. Wygląda więc na to, że wyszkoliłbym pojedynczą komórkę LSTM, a następnie łańcuch nich razem dla danej listy wektorów wejściowych o długości n? Mimo że pojedyncza komórka LSTM zawiera wiele elementów i funkcji, wydaje się, że nie wystarczy uchwycić tak wiele informacji w czymś tak małym?

Dzięki. Czy są jakieś inne zasoby, które mogę zużyć (stosunkowo szybko), które pomogą mi zrozumieć szczegóły wdrożenia? Powyższe 2 linki dały fantastyczny obraz tego, co się dzieje, ale nie udało się uchwycić tych drobniejszych szczegółów.

AKrip4k
źródło

Odpowiedzi:

1

Załóżmy, że trenuję LSTM ze wszystkimi danymi. Czy mogę następnie uruchomić zestaw danych o dowolnej długości?

Abstrakcyjnie tak. Jednak niektóre implementacje oprogramowania mają twarde reguły dotyczące tego, czy zmienne muszą mieć stały rozmiar, czy też mogą być zmiennymi rozmiarami, więc jeśli chodzi o programowanie, musisz sprawdzić, czy implementujesz wszystko poprawnie.

Wygląda więc na to, że wyszkoliłbym pojedynczą komórkę LSTM, a następnie połączono ich n razem dla danej listy wektorów wejściowych o długości n?

Nie. Każda komórka przetwarza wszystkie jednostki czasu. To sprawia, że ​​są one cykliczne : komórka przetwarza dane wejściowe poprzez aktualizację stanu pamięci komórki . Następnej jednostce czasu jest funkcją poprzedniego stanu pamięci i nowych danych .xtxt+1

Sycorax mówi Przywróć Monikę
źródło