Wie trainiere ich das LSTM-Modell anhand mehrerer Zeitreihendaten?
Anwendungsfall: Ich habe in den letzten 5 Jahren einen wöchentlichen Umsatz von 20.000 Agenten. Sie müssen die bevorstehenden wöchentlichen Verkäufe für jeden Agenten prognostizieren.
Muss ich einer Stapelverarbeitungstechnik folgen - jeweils einen Agenten nehmen, das LSTM-Modell trainieren und dann prognostizieren? Irgendwelche besseren Wege?
Antworten:
Machen Sie die Identität des Agenten zu einer der Funktionen und trainieren Sie alle Daten. Trainieren Sie wahrscheinlich auf einer Mini-Charge von z. B. 128 Agenten gleichzeitig: Durchlaufen Sie die Zeitreihen von Anfang bis Ende für diese 128 Agenten und wählen Sie dann eine neue Mini-Charge von Agenten aus. Führen Sie für jeden Mini-Batch einen Slice mit beispielsweise 50 Zeitschritten aus und wiederholen Sie den Vorgang. Behalten Sie die Endzustände von diesem Slice bei und führen Sie die nächsten 50 Zeitschritte aus, beginnend mit diesen Endzuständen. Spülen und wiederholen Sie den Vorgang, bis Sie das Ende der Zeitschritte erreicht haben, für diese Mini-Charge von ~ 128 Agenten.
Indem Sie die Identität jedes Agenten als eine der Funktionen festlegen, ermöglichen Sie dem Netzwerk Folgendes:
Edit: Alpo Jose schrieb:
Ooo, das stimmt. Es gibt 20.000 von ihnen. Das ist ziemlich viel. Ich denke, Sie möchten sie vielleicht "einbetten". Haben Sie eine Nachschlagebene, die eine Agenten-ID (ausgedrückt als Ganzzahl, Index) aufnimmt und einen hochdimensionalen Vektor ausgibt, wie etwa einen Vektor mit einer Länge von 50 bis 300, wahrscheinlich einen Vektor, dessen Länge ungefähr der verborgenen Größe von entspricht Ihr LSTM.
Mathematisch gesehen entspricht eine Nachschlagetabelle, die auch als "Einbettungsschicht" bezeichnet wird, der Umwandlung der Agenten-IDs in One-Hot-Vektoren und dem anschließenden Durchlaufen einer linearen (vollständig verbundenen) Schicht. Die Anforderungen an den Speicher für die Einbettungsschicht sind jedoch stark reduziert.
In Bezug auf das, was die Einbettungsschicht lernt, während Sie sie trainieren, bildet die Einbettungsschicht eine Art latente Darstellung jedes Agenten. Die latente Darstellung ist wahrscheinlich in keiner Weise lesbar / interpretierbar, ermöglicht es dem Modell jedoch, Dinge wie „ok, dieser Agent, 1524, ist relativ effektiv, aber nicht an Wochenenden; wo als 1526 ist jeden Tag groß; usw ....'. Die latenten Dimensionen des Einbettungsvektors könnten tatsächlich etwas bedeuten, aber niemand versucht jemals herauszufinden, was sie bedeuten (ich denke, das wäre schwer / unmöglich). Die hochdimensionalen Einbettungen pro Agent ermöglichen es dem Modell jedoch, etwas über das Verhalten jedes Agenten zu lernen und dies in den Zeitreihenvorhersagen zu modellieren.
quelle