LSTM für Zeitreihen implementieren: Aufbau, Architektur und Ergebnisse
Use Case
Direktantwort
Was ist eine LSTM – und warum eignet sie sich für Zeitreihen?
Damit ist ihre Erinnerung weder unbegrenzt noch automatisch korrekt. Die Architektur kann ihre effektive Erinnerungsdauer jedoch aus den Daten lernen, statt ausschließlich auf ein starres Lag-Fenster beschränkt zu sein.
LSTM-Aufbau
Hidden State, Cell State und die drei Gates
| Bestandteil | Aufgabe |
|---|---|
Hidden State h(t) | Kurzfristige Repräsentation, die für die aktuelle Ausgabe und den nächsten Zeitschritt verwendet wird. |
Cell State c(t) | Fortlaufender Speicherpfad, der Information mit kontrollierten Änderungen durch viele Schritte transportieren kann. |
Forget Gate f(t) | Entscheidet mit Werten zwischen null und eins, welcher Anteil des bisherigen Cell State erhalten bleibt. |
Input Gate i(t) | Steuert gemeinsam mit einem Kandidatenzustand, welche neue Information in den Cell State geschrieben wird. |
Output Gate o(t) | Bestimmt, welcher Anteil des aktualisierten Cell State als neuer Hidden State sichtbar wird. |
Vereinfacht gilt: c(t) = f(t) · c(t−1) + i(t) · Kandidatenzustand und h(t) = o(t) · tanh(c(t)). Die Gate-Werte werden mit einer Sigmoid-Funktion berechnet.
Architektur
Mehrschrittvorhersage
Drei Wege von der bekannten Historie zur Mehrschrittprognose
Direkter Vorhersageblock
Autoregressiver Decoder
Encoder-Decoder-LSTM
Bidirektionalität
Bidirectional LSTM einsetzen, ohne zukünftige Ziele preiszugeben
Ein Informationsleck (Data Leakage) entsteht, sobald zukünftige Zielwerte oder zum Prognosezeitpunkt unbekannte Eingabewerte in den Encoder gelangen. Die entscheidende Prüffrage lautet daher: War jeder Wert im Eingabetensor zum Prognosezeitpunkt tatsächlich verfügbar?
Attention
Attention gewichtet relevante Stellen der bekannten Historie
In der Bachelorarbeit zeigte sich der messbare Vorteil vor allem bei kurzen, bereits gut gewählten Kontextfenstern. Attention ersetzte dort keine beliebig lange Erinnerung, sondern half, wichtige Prädiktoren innerhalb der bekannten Historie genauer zu gewichten.
Kontextfenster
Implementierung
LSTM für Zeitreihen in sechs Schritten implementieren
Zeitliche Splits festlegen
Skalierung ohne Leakage berechnen
Sliding Windows je Split erzeugen
Tensorvertrag definieren
Teacher-forced trainieren und absichern
Autoregressiv und außerhalb des Trainings testen
Tensorformen
Welche Form erwartet eine PyTorch-LSTM?
batch_first=True ist die übliche Eingabeform [Batch, Sequenzlänge, Features]. torch.nn.LSTM liefert einen Hidden State für jeden Eingabeschritt sowie die finalen Hidden- und Cell-States pro Layer und Richtung.Bei einer multivariaten Zeitreihe umfasst
Features alle Größen, die am jeweiligen Prognosezeitpunkt bekannt sind. Historische Zielkanäle dürfen Teil des Inputs sein, solange ausschließlich vergangene Werte verwendet werden.PyTorch
Kompaktes Many-to-Many-Grundgerüst
Das Grundgerüst bildet jeden Hidden State auf Zielkanäle ab. Für eine reine
Next-Step-Prognose kann stattdessen nur states[:, -1] an den Head
übergeben werden.
import torch
from torch import nn
class LSTMForecaster(nn.Module):
def __init__(
self,
input_dim,
target_dim,
hidden_dim=128,
num_layers=1,
bidirectional=False,
dropout=0.0,
):
super().__init__()
self.lstm = nn.LSTM(
input_size=input_dim,
hidden_size=hidden_dim,
num_layers=num_layers,
batch_first=True,
bidirectional=bidirectional,
dropout=dropout if num_layers > 1 else 0.0,
)
directions = 2 if bidirectional else 1
self.head = nn.Linear(hidden_dim * directions, target_dim)
def forward(self, x):
states, _ = self.lstm(x)
return self.head(states)Produktionsreife
Was das Code-Skelett noch nicht löst
Zustände und variable Sequenzlängen
Training und Modellselektion
Faire Evaluation
Getrennte Inferenzmodi
Mehrschrittprognose
Der Trainingshorizont entscheidet über die spätere Rollout-Stabilität
In der Bachelorarbeit überfitten Sequenzlängen von einem bis acht Schritten auf kurzfristige Korrelationen. Mit längerem Training sank der RRE zunächst stetig; in der Parameterstudie lag ein günstiger Bereich ungefähr bei 128 Schritten, danach flachte der Nutzen ab.
Trainingshorizont
Rollout-Diagnose
Validierung
Drei Tests beantworten drei unterschiedliche Fragen
Teacher-forced Validation
Autoregressiver Rollout
Out-of-Distribution-Test
Hyperparameter
Welche LSTM-Hyperparameter waren im Versuch entscheidend?
| Parameter | Beobachtung im untersuchten Datensatz |
|---|---|
| Hidden-Größe | Die Genauigkeit verbesserte sich bis ungefähr 512 Einheiten. Eine moderat breite LSTM war stabiler als immer größere Varianten. |
| Anzahl Layer | Zusätzliche gestapelte Layer verschlechterten das Ergebnis und trafen schneller auf Speichergrenzen. Die finale LSTM nutzte eine Schicht. |
| Kontextfenster | Das lokale Optimum der isolierten Lag-Studie lag bei ungefähr zehn Samples. Die finale Gesamtkonfiguration nutzte dennoch Lag 64, weil Hyperparameter zusammenwirken. |
| Trainingssequenzlänge | Ein günstiger Bereich lag in der Parameterstudie ungefähr bei 128 Schritten. Sehr kurze Horizonte verstärkten spätere Drift. |
| Regularisierung | Final dokumentiert wurden Dropout 0,1, Gradient Clipping mit maximaler Norm 0,93 und Early-Stopping-Patience 200. |
| Reproduzierbarkeit | Die finale Bewertung nutzte sieben Seeds. Trotz robuster Reaktion auf viele Parameteränderungen blieb die Streuung damit prüfbar. |
Diese Werte sind Startpunkte aus einem klar abgegrenzten Versuch, keine universellen Defaults. Kontextfenster und Trainingshorizont beschreiben unterschiedliche Größen und müssen separat validiert werden.
Ergebnisse
Was erreichte die finale LSTM?
| Kennzahl | Finale LSTM |
|---|---|
| RRE über 1.024 Schritte, alle Geschwindigkeiten | 1,54 % |
| RRE bei unbekannten Geschwindigkeiten | 1,58 % |
| RRE über 10.000 Schritte | 1,277 % |
| Mittlere Trainingszeit im dokumentierten Setup | 13 Stunden |
| Inferenzgeschwindigkeit | 88.279 Schritte/s |
Gültigkeitsbereich: ein nicht parametrisiertes Schienenfahrzeug, vertikale Dynamik, gerade Strecke, konstante Geschwindigkeiten und Simulationsdaten bei 1.000 Hz. Der Relative Range Error normalisiert den Prognosefehler anhand der Signalspannweite. Die Werte sind keine allgemeinen LSTM-Benchmarks.
Langer Vorhersagehorizont
Die Stärke der LSTM wurde erst über 10.000 Schritte sichtbar
Die Kehrseite der rekurrenten Verarbeitung: Jeder Zeitschritt hängt vom vorherigen Zustand ab. Deshalb ließ sich die Zeitachse schlechter parallelisieren, und die LSTM war im dokumentierten Setup beim Training und bei der Inferenz langsamer als NARX und Transformer.
10.000-Schritte-Test
Bewertung
Stärken und Schwächen einer LSTM für Zeitreihen
| Stärken | Schwächen |
|---|---|
| Adaptive Erinnerung über Hidden und Cell State | Sequenzielle Verarbeitung begrenzt die Parallelisierung |
| Stabile autoregressive Rollouts im untersuchten MVP | Höherer Trainings- und Inferenzaufwand im dokumentierten Setup |
| Vergleichsweise robust gegenüber Hyperparameteränderungen | Hidden- und Cell-State-Logik erschwert die Fehlersuche |
| Für multivariate Sequenzen geeignet | Unterschiede zwischen Training und Inferenz können Drift erzeugen |
| Mit Attention und Bidirektionalität erweiterbar | Falsche bidirektionale Datenschnitte führen zu Leakage |
Auswahl
Wann ist eine LSTM die richtige Wahl?
Zeitliche Abhängigkeiten sind nicht durch ein einziges starres Fenster beschrieben
Sehr lange autoregressive Stabilität ist wichtiger als maximale Geschwindigkeit
Die Anwendung ist naturgemäß sequenziell
Alternativen
NARX oder Transformer statt LSTM?
Ein Encoder-Decoder-Transformer für Zeitreihen wird interessant, wenn lange Kontexte oder eine parallele Multi-Step-Ausgabe den zusätzlichen Tuning-Aufwand rechtfertigen.
Anwendung
LSTM als Surrogat für rechenintensive Simulationsverläufe
Wie das Sequenzmodell in einen Engineering-Workflow eingebettet wird und warum FEM beziehungsweise Mehrkörpersimulation die Referenz bleibt, zeigt der Use Case zur Echtzeit-Vorhersage von FEM-Simulationen.
FAQ
Häufige Fragen zur LSTM-Implementierung
Ist eine LSTM immer besser als ein normales RNN?
Wie lang sollte das Eingabefenster sein?
Darf man eine bidirektionale LSTM für Forecasting einsetzen?
Warum driftet eine LSTM trotz Memory?
Wann ist ein Transformer geeigneter?
Quelle
Datengrundlage und weiterführende technische Quellen
Technische Quellen: PyTorch-Dokumentation zu
torch.nn.LSTM und Hochreiter & Schmidhuber: Long Short-Term Memory.Modellvergleich
Wie schlägt sich die LSTM im direkten Vergleich?
Vergleichen Sie dieses Modell mit NARX und Transformer – bei Genauigkeit über 1.024 Schritte, Stabilität über 10.000 Schritte und Inferenzgeschwindigkeit.