Was ist eine realisierbare Sequenzlänge für ein RNN zum Modellieren?


15

Ich möchte eine LSTM - Version ( Long Short Term Memory ) eines wiederkehrenden neuronalen Netzwerks (RNN) zur Modellierung von Zeitreihendaten verwenden. Mit zunehmender Sequenzlänge der Daten nimmt die Komplexität des Netzwerks zu. Ich bin deshalb neugierig, welche Länge von Sequenzen mit einer guten Genauigkeit modellierbar wäre.

Ich möchte eine relativ einfache Version des LSTM verwenden, ohne dass es schwierig ist, die neuesten Ansätze zu implementieren. Jede Beobachtung in meiner Zeitreihe würde wahrscheinlich 4 numerische Variablen haben und die Anzahl der Beobachtungen würde zwischen 100.000 und 1.000.000 liegen.

Antworten:


8

Es kommt ganz auf die Art Ihrer Daten und die inneren Zusammenhänge an, es gibt keine Faustregel. Wenn Sie jedoch über eine große Datenmenge verfügen, kann ein zweischichtiger LSTM eine Vielzahl von Zeitreihenproblemen / Benchmarks modellieren.

Darüber hinaus wird die Durchlaufzeit nicht auf die gesamte Serie, sondern in der Regel auf (200-300) letzte Schritte zurückgesetzt. Um den optimalen Wert zu finden, können Sie eine Kreuzvalidierung mit der Rastersuche oder der Bayes'schen Optimierung durchführen. Darüber hinaus können Sie die Parameter hier einsehen : https://github.com/wojzaremba/lstm/blob/master/main.lua .

Die Sequenzlänge wirkt sich also nicht wirklich auf Ihr Modelltraining aus, aber es ist wie bei mehr Trainingsbeispielen, wenn Sie nur den vorherigen Status beibehalten, anstatt ihn zurückzusetzen.


Angenommen, ich muss eine Stimmungsanalyse durchführen, bei der es sich um einen 1: 1-Ansatz handelt (siehe karpathy.github.io/2015/05/21/rnn-effectiveness ). Jeder dieser Senteces ist sehr lang (> 200 Wörter). Wenn ich nur die üblichen 35 Schritte zurückpropagiere, wäre das dann kein Problem? Da es sich um überwachtes Lernen handelt, gehe ich davon aus, dass es sich nur dann rückwärts ausbreiten kann, wenn es das binäre Klassifizierungsziel "trifft" y. Wie würde die RNN auf diese Weise die Gewichte vor den für BPTT ausgewählten 35 Schritten anpassen?
Pir

1
Nun, es wäre kein Problem, da die gleichen Gewichte im nächsten Trainingsschritt wiederverwendet werden. Wenn Sie den Quellcode in Schritt 36 sehen (sagen wir mal), ist der Initialisierungsvektor nicht Nullen, sondern die Zustände von Schritt 35. Wenn Sie also kleine Schritte ausführen, optimieren Sie Ihre Kostenfunktion mit BPTT.
Yannis Assael

1
Nur um zu verdeutlichen: Wird die BPTT für einen einzelnen Satz einmal oder mehrmals ausgeführt? Wenn es ein einziges Mal ausgeführt wird, wirken sich Muster, die nur die ersten paar Wörter im Satz betreffen, nur auf den verborgenen Zustand aus, richtig? Ich meine ... die Gradienten werden niemals in Bezug auf diesen Teil der Eingabe berechnet.
Pir

1
Ich habe dies als separate Frage gestellt, die ich hoffe, dass Sie sich ansehen werden :) stats.stackexchange.com/questions/167482/…
pir

2
"Angesichts der großen Datenmenge kann ein 2-Layer-LSTM so ziemlich jede Zeitreihe modellieren." Wo ist der Beweis?
Nr.
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.