Anzahl der Parameter in einem LSTM-Modell


43

Wie viele Parameter hat ein einzelner gestapelter LSTM? Die Anzahl der Parameter legt eine Untergrenze für die Anzahl der erforderlichen Trainingsbeispiele fest und beeinflusst auch die Trainingszeit. Daher ist es für Trainingsmodelle mit LSTMs hilfreich, die Anzahl der Parameter zu kennen.

Antworten:


29

Der LSTM hat einen Satz von 2 Matrizen: U und W für jedes der (3) Gatter. Das (.) Im Diagramm gibt die Multiplikation dieser Matrizen mit dem Eingang und dem Ausgang .xh

  • U hat Dimensionenn×m
  • W hat die Dimensionenn×n
  • Für jedes der drei Gates gibt es eine andere Menge dieser Matrizen (wie für das forget gate usw.)Uforget
  • Es gibt einen weiteren Satz dieser Matrizen zum Aktualisieren des Zellenzustands S.
  • zusätzlich zu den genannten Matrizen müssen die Verzerrungen gezählt werden (nicht im Bild)

Daher ist die Summe der # Parameter =4(nm+n2+n)

LSTM-Zusammenfassungsblock


2
Ich habe mich dieser Frage gestellt, als ich praktische Entscheidungen zur Einschätzung des Hardwarebedarfs und der Projektplanung für ein Deep-Learning-Projekt getroffen habe. PS: Ich habe meine eigene Frage nicht beantwortet, um nur Reputationspunkte zu sammeln. Ich möchte wissen, ob meine Antwort von der Community stammt.
Wabbit

1
Sie haben Bias-Einheiten ignoriert. Siehe Adam Oudads Antwort unten.
Arun

1
Vorurteile gibt es nicht. Ich habe die Antwort bearbeitet.
Rolltreppe

21

Folgende früheren Antworten, die Anzahl der Parameter von LSTM, Eingangsvektoren der Größe unter und geben Ausgangsvektoren der Größe ist:mn

4(nm+n2)

Falls Ihr LSTM jedoch Bias-Vektoren enthält ( dies ist beispielsweise die Standardeinstellung in Keras ), lautet die Zahl:

4(nm+n2+n)

2
Dies ist die einzige vollständige Antwort. Jede andere Antwort scheint den Fall von Bias-Neuronen zu ignorieren.
Setzen Sie Monica

1
Um ein konkretes Beispiel zu geben: Wenn Ihre Eingabe m = 25 Dimensionen hat und Sie eine LSTM-Ebene mit n = 100 Einheiten verwenden, ist die Anzahl der Parameter = 4 * (100 * 25 + 100 ** 2 + 100) = 50400.
arun

1
Angenommen, ich verwende Timestep-Daten. Ist mein unten stehendes Verständnis korrekt? n = 100: bedeutet, dass ich in jedem Sample 100 Zeitschritte haben werde (Beispiel), also brauche ich 100 Einheiten. m = 25 bedeutet bei jedem Zeitschritt, ich habe 25 Funktionen wie [Gewicht, Größe, Alter ...].
Jason Zhang

2
@jasonzhang Die Anzahl der Zeitschritte ist nicht relevant, da dieselbe LSTM-Zelle rekursiv auf Ihre Eingabevektoren angewendet wird (ein Vektor für jeden Zeitschritt). Was als "Einheiten" bezeichnet wird, ist auch die Größe jedes Ausgangsvektors, nicht die Anzahl der Zeitschritte.
Adam Oudad

12

Nach dieser :

LSTM-Zellstruktur

LSTM-Zellstruktur

LSTM-Gleichungen

LSTM-Gleichungen

Ingoring Nichtlinearitäten

Ingoring Nichtlinearitäten

Wenn der Eingang X_t die Größe n x 1, und es gibt d Speicherzellen, dann ist die Größe jeden W * und U * ist , d × n und d × d resp. Die Größe von W wird dann 4d x (n + d) . Es ist zu beachten, dass jede der dd-Speicherzellen ihre eigenen Gewichte W ∗ und U ∗ hat und dass der einzige Zeitpunkt, zu dem Speicherzellenwerte mit anderen LSTM-Einheiten geteilt werden, während des Produkts mit U ∗ ist .

Vielen Dank an Arun Mallya für die großartige Präsentation.

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.