Jaka jest możliwa długość sekwencji dla modelu RNN?

15

Zastanawiam się nad użyciem wersji LSTM ( długoterminowej pamięci krótkotrwałej ) rekurencyjnej sieci neuronowej (RNN) do modelowania danych szeregów czasowych. Wraz ze wzrostem długości sekwencji danych wzrasta złożoność sieci. Jestem zatem ciekawy, jaką długość sekwencji można by modelować z dobrą dokładnością?

Chciałbym zastosować stosunkowo prostą wersję LSTM bez żadnych trudnych do wdrożenia najnowszych podejść. Każda obserwacja w moich szeregach czasowych prawdopodobnie miałaby 4 zmienne numeryczne, a liczba obserwacji wynosiłaby około 100 000 do 1 000 000.

pir
źródło

Odpowiedzi:

8

Zależy to całkowicie od charakteru twoich danych i wewnętrznych korelacji, nie ma ogólnej zasady. Biorąc jednak pod uwagę, że masz dużą ilość danych, dwuwarstwowy LSTM może modelować dużą liczbę problemów / testów szeregów czasowych.

Co więcej, nie cofasz się w czasie do całej serii, ale zwykle do (200-300) ostatnich kroków. Aby znaleźć optymalną wartość, możesz dokonać weryfikacji krzyżowej za pomocą wyszukiwania siatki lub optymalizacji bayesowskiej. Ponadto możesz sprawdzić parametry tutaj: https://github.com/wojzaremba/lstm/blob/master/main.lua .

Tak więc długość sekwencji tak naprawdę nie wpływa na trening modelu, ale to tak, jakby mieć więcej przykładów treningu, że po prostu zachowujesz poprzedni stan zamiast go resetować.

Yannis Assael
źródło
Powiedz, że muszę przeprowadzić analizę sentymentu, która jest podejściem jeden do jednego (patrz karpathy.github.io/2015/05/21/rnn-effectiveness ). Każdy z tych senteces jest bardzo długi (> 200 słów). Gdybym tylko cofał się w czasie w zwykłych 35 krokach, czy nie byłoby to problemem? Ponieważ jest to uczenie nadzorowane Przypuszczam, że to może tylko backpropagate kiedy it „trafień” binarny klasyfikacja, cel y. W ten sposób, w jaki sposób RNN kiedykolwiek dostosowuje wagi na podstawie czegokolwiek przed 35 krokami wybranymi dla BPTT?
pir
1
Cóż, nie byłoby problemu, ponieważ te same ciężary są ponownie wykorzystywane w następnym etapie treningu. Ponadto, jeśli zobaczysz kod źródłowy w kroku 36 (powiedzmy), wektor inicjalizacji nie jest zerowy, ale stany kroku 35. Tak więc, wykonując małe kroki, optymalizujesz funkcję kosztów za pomocą BPTT.
Yannis Assael,
1
Żeby wyjaśnić: czy BPTT jest uruchamiany jeden raz czy wiele razy dla jednego zdania? Jeśli zostanie uruchomione jednorazowo, to wzorce wpływające tylko na kilka pierwszych słów w zdaniu wpłyną tylko na stan ukryty, prawda? To znaczy ... gradienty nigdy nie będą obliczane w odniesieniu do tej części danych wejściowych.
pir
1
Zadałem to jako osobne pytanie, na które mam nadzieję spojrzysz :) stats.stackexchange.com/questions/167482/…
pir
2
„biorąc pod uwagę, że masz dużą ilość danych, dwuwarstwowy LSTM może modelować praktycznie dowolne szeregi czasowe”. gdzie jest dowód?
nro