2017-03-24 4 views
1

Dies ist eine konzeptionelle Frage zu Zeitreihen verschiedener Längen in einem tiefen Lernkontext arbeiten:Deep Learning und Time Series: Unterschiedlich Vektorlängen

ich Beobachtungen von standardisierten Funktionen, die in unregelmäßigen Abständen auftreten, die eine Zeit umfassen basierend auf jeder einzelnen Messung. Ich folge dann diese multivariate Zeitreihe (Panel-Daten) zu einem einzigen kontinuierlichen Feature-Vektor für jede Zeitreihe. Ich baue dann ein tiefes neuronales Netz für eine binäre Klassifikation Aufgabe auf diesen Vektoren, die nun wie folgt aussehen:

xxxx(T=2)xxxx(T=4)xxxx(T=5) 
xxxx(T=1)xxxx(T=2) 
xxxx(T=3) 
xxxx(T=1)xxxx(T=2)xxxx(T=3)xxxx(T=5) 

und werden dann mit Nullen aufgefüllt Ende gleich lang sein.

Jedes "xxxxT" repräsentiert eine Beobachtung, bei der "x" nicht zeitliche Merkmale und "T" ein zeitbasiertes Merkmal sind. Meine Frage ist, ob davon ausgegangen werden kann, dass das neuronale Netz in der Lage sein wird, die Unregelmäßigkeit dieser Zeitreihe allein zu unterscheiden.

Oder sollte ich die intermittierenden nicht-auftretenden Beobachtungen wirklich auffüllen, um so etwas zu sehen (wo die "0000" die fehlenden Beobachtungen padding)?

0000(T=1)xxxx(T=2)0000(T=3)xxxx(T=4)xxxx(T=5) 
xxxx(T=1)xxxx(T=2)0000(T=3)0000(T=4)0000(T=5) 
0000(T=1)0000(T=2)xxxx(T=3)0000(T=4)0000(T=5) 
xxxx(T=1)xxxx(T=2)xxxx(T=3)0000(T=4)xxxx(T=5) 

Ich habe dies bereits getan und untersuchte die Ergebnisse beider Ansätze. Ich wollte nur sehen, ob irgendjemand ein Licht darauf werfen könnte, wie ein tiefes neuronales Netzwerk dies "interpretiert".

Antwort

1

Wenn Sie ein wiederkehrendes Netz verwenden, denke ich nicht, dass es eine gute Idee ist, innerhalb der Sequenz zu puffern. Angesichts der Tatsache, dass die Gewichte im Laufe der Zeit wiederverwendet werden, sollte sie "empfindlich" für "echte" Daten sein, nicht für das Auffüllen.

Mit End-of-Sequence-Padding umgehen wir diese "fake data", indem wir die Sequenzlängen an die rekurrente Funktion übergeben, etwa mit TensorFlows tf.nn.dynamic_rnn-Methode, die das Argument "sequence_length" hat. Auf diese Weise wird der letzte "echte" versteckte Zustand der Sequenz durch die Zeit kopiert.

Wenn Sie auf Intra-Padding bestehen, benötigen Sie eine Implementierung, die versteckte Zustände innerhalb einer Sequenz wie beim Auffüllen der End-of-Sequence kopiert.

Richtig?

+0

Dank @vega. Das ist meine Interpretation. Eine Sache in meinem Fall war, dass ich interessante sehr marginale Leistungsverbesserung fand, wenn ich eine LSTM RNN Architektur verwendete (auch viel längere Trainingszeiten). Denkst du, die richtige Interpretation wäre, dass das zeitbasierte Feature diesen Einfluss erfasst oder dass es nur eine wirklich schwache zeitliche Assoziation zwischen den Sequenzen gibt? Meine Ergebnisse spiegeln eine wissenschaftliche Arbeit über das genaue Thema wider, aber sie haben sich nie wirklich mit Erklärungen beschäftigt. – Pylander

+0

Sie haben marginale Verbesserungen bei der Verwendung von LSTM im Vergleich zu was? – vega

+0

Die Verbesserungen waren bei Verwendung eines LSTM RNN im Vergleich zu nur einem Feedforward-Netzwerk gering. – Pylander

Verwandte Themen