Grundlegendes zur LSTM-Topologie

9

Wie viele andere fand ich die Ressourcen hier und hier äußerst nützlich für das Verständnis von LSTM-Zellen. Ich bin zuversichtlich, dass ich verstehe, wie Werte fließen und aktualisiert werden, und ich bin zuversichtlich, dass ich auch die genannten "Gucklochverbindungen" usw. hinzufügen kann.

In meinem Beispiel habe ich zu jedem Zeitpunkt einen Eingabevektor der Länge iund einen Ausgabevektor der Länge o, wobei o < i.

Was auf keiner Seite wirklich behandelt wird, ist, wie diese angeordnet und trainiert sind.

Ich habe 2 Fragen:

  1. In meinen Trainingsdaten habe ich viele Eingabe / Ausgabe-Vektorpaare, die vielen, vielen Zeiteinheiten entsprechen. Angenommen, ich trainiere das LSTM mit allen Daten. Kann ich dann eine Eingabe beliebiger Länge ausführen? Was ich meine ist, wenn ich Trainingsdaten für beispielsweise das gesamte Jahr 2015 und 2016 habe, kann ich dann Daten für 2017 über das Netzwerk ausführen? Oder vielleicht 2017 bis 2020?
  2. Nach dem, was ich gelesen habe, habe ich das Gefühl, eine LSTM-Zelle pro Zeiteinheit zu haben. Wenn ich also viele Zeiteinheiten habe, habe ich viele verkettete LSTM-Zellen. Da die Länge der Kette von der Länge der Daten abhängt, die ich durch das Netzwerk laufen lassen möchte, und dies vermutlich willkürlich ist, kann ich nicht sehen, wie ich dies trainieren würde, es sei denn, ich trainiere nur eine einzelne LSTM-Zelle, die dann eine Nummer dupliziert mal. Es scheint also, als würde ich eine einzelne LSTM-Zelle trainieren und sie dann nfür eine bestimmte Eingangsvektorliste der Länge miteinander nverketten? Obwohl eine einzelne LSTM-Zelle eine Reihe von Elementen und Funktionen enthält, scheint es nicht genug zu sein, so viele Informationen in etwas so Kleinem zu erfassen?

Vielen Dank. Gibt es andere Ressourcen, die ich (relativ schnell) verbrauchen kann, um die Details der Implementierung zu verstehen? Die beiden obigen Links gaben ein fantastisches Bild auf hoher Ebene von dem, was vor sich geht, erfassen diese feineren Details jedoch nicht.

AKrip4k
quelle

Antworten:

1

Angenommen, ich trainiere das LSTM mit allen Daten. Kann ich dann eine Eingabe beliebiger Länge ausführen?

Abstrakt ja. Einige Software-Implementierungen haben jedoch strenge Regeln, ob Variablen eine feste Größe haben müssen oder ob sie eine variable Größe haben können. In Bezug auf die Programmierung müssen Sie daher überprüfen, ob Sie die Dinge korrekt implementieren.

Es scheint also, als würde ich eine einzelne LSTM-Zelle trainieren und dann n von ihnen für eine gegebene Eingabevektorliste der Länge n miteinander verketten?

xtxt+1

Sycorax sagt Reinstate Monica
quelle