Use Cases

Encoder-Decoder-Transformer für Zeitreihen implementieren

Encoder-Decoder-Transformer mit Self-Attention, Cross-Attention und Ausgabeprojektion

Use Case

Ein Encoder-Decoder-Transformer übersetzt eine historische Zeitreihe in eine interne numerische Darstellung und verarbeitet sie mit Self-Attention. Der Decoder erzeugt daraus mehrere zukünftige Schritte. Positionsinformationen bewahren die Reihenfolge; kausale Masken sperren im Training Informationen aus der Zielzukunft.
Trainings- und Blockhorizont · Schritte
RRE · 1.024 Schritte

Kurz erklärt

Von einer bekannten Historie zu einer zukünftigen Wertesequenz

Ein Encoder-Decoder-Transformer bildet eine Eingabesequenz auf eine Zielsequenz ab. Bei technischen Zeitreihen enthält die Eingabe historische Messwerte, Zustände und äußere Anregungen; die Ausgabe kann zukünftige Beschleunigungen, Kräfte, Temperaturen oder andere kontinuierliche Zielgrößen enthalten.

Anders als eine LSTM verarbeitet der Transformer Positionen nicht Schritt für Schritt durch einen rekurrenten Zustand. Attention setzt Zeitschritte direkt zueinander in Beziehung. Das ermöglicht parallele Matrixoperationen und macht auch weiter auseinanderliegende Stellen im Kontextfenster unmittelbar vergleichbar.

Bausteine

Encoder und Decoder haben getrennte Aufgaben

Rolle der Transformer-Komponenten bei einer Multi-Step-Zeitreihenprognose.
BausteinAufgabe bei Zeitreihen
EncoderVerdichtet die bekannte Historie zu kontextabhängigen Repräsentationen.
DecoderErzeugt den Zukunftshorizont unter Nutzung der Encoder-Ausgabe.
Self-AttentionModelliert Beziehungen innerhalb der Eingabe- oder Zielsequenz.
Cross-AttentionVerbindet Decoder-Queries mit Keys und Values aus dem Encoder.
PositionsinformationErhält Reihenfolge und zeitlichen Abstand der Werte.
Output-ProjektionBildet die Modelldimension auf die kontinuierlichen Zielkanäle ab.

Architektur

Abbildung: Die Encoder-Decoder-Architektur verarbeitet die bekannten Eingaben im Encoder zu einer latenten Repräsentation. Der Decoder nutzt seine eigenen Eingaben sowie diese Encoder-Repräsentation, um die Zielsequenz zu erzeugen.
Abbildung Die Encoder-Decoder-Architektur verarbeitet die bekannten Eingaben im Encoder zu einer latenten Repräsentation. Der Decoder nutzt seine eigenen Eingaben sowie diese Encoder-Repräsentation, um die Zielsequenz zu erzeugen.
Encoder-Decoder-Transformer mit linearer Eingabeprojektion, Positionsinformation, Multi-Head Self-Attention im Encoder, Self- und Cross-Attention im Decoder sowie Ausgabeprojektion
100%

Encoder

Wie Self-Attention die Historie verarbeitet

Kontinuierliche Eingangswerte besitzen keine Token-Embeddings wie Wörter. Deshalb bildet eine lineare Projektion jeden Zeitschritt vom ursprünglichen Feature-Raum auf die Modelldimension d_model ab. Anschließend wird Positionsinformation addiert. Ohne sie wäre Self-Attention permutationsinvariant: Das Modell könnte Beziehungen zwischen Werten erkennen, aber nicht unterscheiden, welches Ereignis zuerst kam.

Jede Attention-Schicht erzeugt Queries Q, Keys K und Values V. Vereinfacht gilt: Attention(Q, K, V) = softmax(QKᵀ / √dₖ)V. Das Produkt QKᵀ bewertet, wie stark Positionen zueinander passen; die gewichtete Summe der Values erzeugt eine kontextualisierte Repräsentation. Multi-Head Attention wiederholt diesen Vorgang in mehreren Projektionen, bevor Residual-Verbindungen, Normalisierung und ein Feedforward-Netz die Repräsentation weiterverarbeiten.

Attention

Self-Attention und Cross-Attention unterscheiden

MechanismusQueryKey und ValueZweck
Encoder Self-AttentionEncoder-SequenzEncoder-SequenzBeziehungen innerhalb der bekannten Historie modellieren.
Decoder Self-AttentionDecoder-SequenzDecoder-SequenzBisher verfügbare Zielinformation unter Beachtung der Kausalität verarbeiten.
Cross-AttentionDecoder-RepräsentationEncoder-AusgabeDie Zielerzeugung gezielt mit der kodierten Historie verbinden.

Decoder

Zwei Wege zur Multi-Step-Prognose

1

Klassisch autoregressiv

Der Decoder startet mit einem Startwert oder dem letzten bekannten Zielwert, erzeugt den nächsten Schritt, hängt ihn an und wird erneut ausgeführt. Die Erzeugung bleibt damit sequenziell.
2

Blockweise für einen festen Horizont

Gelernte oder positionsbasierte Zukunfts-Queries können mehrere Zielschritte in einem Forward Pass erzeugen. Dieser Aufbau ermöglicht die parallele Multi-Step-Ausgabe.
3

Design explizit benennen

Ein Transformer ist nicht automatisch vollständig parallel. Entscheidend ist, ob der Decoder unbekannte frühere Zielwerte benötigt oder den gesamten Horizont ohne sie dekodieren kann.

Maskierung

Drei Grenzen gegen Informationslecks

Maskierung ist Teil der experimentellen Gültigkeit, nicht nur ein Implementierungsdetail.
GrenzeWas sie verhindertPrüffrage
Kausale Target-MaskeDass Position t beim Teacher Forcing auf spätere Zielpositionen zugreift.Ist oberhalb der zulässigen zeitlichen Diagonale alles maskiert?
Padding-MaskeDas Modell lernt aus künstlichen Füllwerten oder deren Anzahl.Werden aufgefüllte Source- und Target-Positionen sicher ignoriert?
Source-GrenzeDer Encoder erhält Features, die zum Prognosezeitpunkt noch unbekannt sind.Nutzen Aggregationen ausschließlich Historie oder tatsächlich geplante Zukunftswerte?

Besonders kritisch sind Features wie Minimum, Maximum oder Mittelwert, wenn sie versehentlich über das gesamte Fenster inklusive des zukünftigen Zielbereichs berechnet werden.

Tensorformen

Source und Target getrennt vorbereiten

TensorForm bei batch_first=TrueInhalt
source[batch, source_length, source_features]Historische und zum Prognosezeitpunkt bekannte Eingaben.
target_in[batch, target_length, target_features]Startwert und bisherige reale Ziele beim Teacher Forcing, um einen Schritt verschoben.
Trainingsziel[batch, target_length, target_features]Die jeweils nächsten Zielschritte, gegen die der Loss berechnet wird.

Source und Target benötigen separate lineare Projektionen auf d_model, da Feature-Anzahl und semantische Rolle unterschiedlich sein können.

Datenpipeline

Sieben Schritte für ein belastbares Training

1

1. Chronologisch aufteilen

Trainings-, Validierungs- und Testdaten entlang der Zeit trennen, statt zukünftige Zustände zufällig in alle Splits zu verteilen.
2

2. Scaling nur auf Training fitten

Statistiken der Validierungs- oder Testperiode dürfen nicht in die Normalisierung einfließen.
3

3. Source- und Target-Fenster bilden

Bekannte Historie und zukünftigen Zielhorizont mit klarer zeitlicher Grenze erzeugen.
4

4. Decoder-Eingabe verschieben

Beim Teacher Forcing sieht der Decoder den Startwert und bisherige reale Ziele, der Loss bewertet die nächsten Schritte.
5

5. Masken anwenden

Kausale Target-Maske und gegebenenfalls Padding-Masken passend zur verwendeten PyTorch-Version erzeugen.
6

6. Freie Inferenz separat bewerten

Teacher-forced Kennzahlen reichen nicht aus, weil das Modell im Einsatz eigene Vorhersagen weiterverarbeitet.
7

7. Über den Trainingshorizont hinaus testen

Mehrere Blöcke ausrollen, um Sprünge an Blockgrenzen und schleichende Fehlerakkumulation sichtbar zu machen.

PyTorch-Implementierung

Ein kompaktes Encoder-Decoder-Skelett

Das Skelett enthält separate Source-/Target-Projektionen, Positionsinformation, batch_first=True, den Transformer und die Rückprojektion auf kontinuierliche Zielkanäle.

import torch
from torch import nn

class TimeSeriesTransformer(nn.Module):
    def __init__(
        self,
        source_dim,
        target_dim,
        d_model=128,
        nhead=8,
        encoder_layers=4,
        decoder_layers=2,
        dropout=0.1,
    ):
        super().__init__()
        self.source_projection = nn.Linear(source_dim, d_model)
        self.target_projection = nn.Linear(target_dim, d_model)
        self.position = nn.Parameter(torch.zeros(1, 2048, d_model))

        self.transformer = nn.Transformer(
            d_model=d_model,
            nhead=nhead,
            num_encoder_layers=encoder_layers,
            num_decoder_layers=decoder_layers,
            dropout=dropout,
            batch_first=True,
        )
        self.output_projection = nn.Linear(d_model, target_dim)

    def forward(self, source, target_in, target_mask=None):
        src_len = source.size(1)
        tgt_len = target_in.size(1)

        source = self.source_projection(source) + self.position[:, :src_len]
        target = self.target_projection(target_in) + self.position[:, :tgt_len]

        hidden = self.transformer(
            source,
            target,
            tgt_mask=target_mask,
        )
        return self.output_projection(hidden)

Vor dem Einsatz muss eine kausale Target-Maske ergänzt und geprüft werden. Form sowie Bool-/Float-Semantik der Maske richten sich nach der konkret verwendeten PyTorch-Version.

Produktionsreife

Was das Code-Skelett bewusst offenlässt

1

Positionsmodell und exogene Eingaben

Source und Target können getrennte Positionsmodelle benötigen. Tatsächlich bekannte zukünftige Einflussgrößen müssen mit klarer Semantik in den Decoder gelangen.
2

Masken und Normalisierung

Padding-Masken sowie die Entscheidung für Normalisierung vor oder nach Attention gehören zur konkreten Architektur.
3

Trainingsstabilität

Learning-Rate-Schedule, Warm-up, Gradient Clipping, Mixed Precision und Early Stopping müssen gemeinsam abgestimmt werden.
4

Inferenz und Gültigkeitsbereich

Blockweise und autoregressive Inferenz sind getrennt zu testen. Ausgabeunsicherheit und Betriebsgrenzen müssen für den Einsatz dokumentiert werden.

Hyperparameter

Die entscheidenden Stellschrauben aus der Untersuchung

Finale Werte des dokumentierten MVP; sie sind keine generischen Empfehlungen.
ParameterFinale KonfigurationÜbertragbare Erkenntnis
Modelldimension / Headsd_model=128 / 16 HeadsMehr Heads sind nicht automatisch besser; bei fester Modelldimension wird der Teilraum pro Head kleiner.
Encoder- / Decoder-Tiefe20 / 6 LayerBeide Tiefen separat variieren. Mehr Encoder-Kapazität half, zusätzliche Decoder-Layer konnten schneller überfitten.
Historisches KontextfensterLag 90Das lokale Optimum lag ungefähr bei 100 Samples; noch längere Fenster erhöhten den Aufwand ohne verlässlichen Zusatznutzen.
Trainings- und Blockhorizont1.024 SchritteLokale Studien sättigten früher, der längere überwachte Horizont stabilisierte jedoch den späteren Rollout.
Lernrate / Warm-up0,00069 / 1.758 SchritteWarm-up senkte den RRE in der Studie um bis zu zehn Prozent und muss zusammen mit Batch-Größe und Gradient Clipping abgestimmt werden.

Kontextfenster

Abbildung: Der Einfluss der Lag-Länge auf die Transformer-Genauigkeit: Ein längeres Kontextfenster verbessert den RRE zunächst. Bei mittlerer Fenstergröße liegt ein lokales Minimum; noch größere Fenster erhöhen den Rechenaufwand ohne verlässlichen Genauigkeitsgewinn.
Abbildung Der Einfluss der Lag-Länge auf die Transformer-Genauigkeit: Ein längeres Kontextfenster verbessert den RRE zunächst. Bei mittlerer Fenstergröße liegt ein lokales Minimum; noch größere Fenster erhöhen den Rechenaufwand ohne verlässlichen Genauigkeitsgewinn.
Relativer Bereichsfehler und Rechenaufwand des Transformers für historische Kontextfenster von 8 bis 2.048 Zeitschritten
100%

Long-Horizon-Test

Gute Blockgenauigkeit garantiert noch keinen stabilen Rollout

Ein Transformer kann innerhalb seines trainierten Blocks sehr genau sein und danach trotzdem driften. Bei einer frühen Konfiguration der Bachelorarbeit waren die ersten 256 Schritte stabil; mit dem nächsten Block stieg der Fehler deutlich. Die Abbildung zeigt bewusst diesen Fehlermodus und nicht das finale Modell. Eine Trainingssequenz und Blockgröße von 1.024 Schritten stabilisierte den Verlauf wesentlich.

Parallele Multi-Step-Genauigkeit und Stabilität weit jenseits des trainierten Horizonts sind deshalb zwei getrennte Bewertungskriterien.

Fehlerakkumulation

Abbildung: Beispiel eines frühen Transformer-Modellstands über 10.000 Vorhersageschritte: Nach dem anfangs trainierten Abschnitt von 256 Schritten nimmt der Fehler über den weiteren Verlauf zu. Die Abbildung veranschaulicht Drift und zeigt nicht das finale Modell.
Abbildung Beispiel eines frühen Transformer-Modellstands über 10.000 Vorhersageschritte: Nach dem anfangs trainierten Abschnitt von 256 Schritten nimmt der Fehler über den weiteren Verlauf zu. Die Abbildung veranschaulicht Drift und zeigt nicht das finale Modell.
Früher Transformer-Rollout über 10.000 Schritte, bei dem der Relative Range Error nach dem trainierten 256-Schritte-Horizont deutlich ansteigt
100%

Evaluation

Drei Tests für eine belastbare Aussage

1

In-Horizon

Den Fehler innerhalb des direkt überwachten Zielblocks messen und nach Signaltypen aufschlüsseln.
2

Multi-Block-Rollout

Mehrere vorhergesagte Blöcke hintereinander verwenden und die Fehlerkurve auf Sprünge und kontinuierliches Wachstum prüfen.
3

Unbekannte Betriebsbedingungen

Vollständige Zustände oder Parameterbereiche aus dem Training heraushalten und die Generalisierung separat bewerten.

Messergebnisse

Ergebnisse des finalen Transformers im dokumentierten MVP

Nicht parametrisiertes Schienenfahrzeug, vertikale Dynamik, gerade Strecke, konstante Geschwindigkeiten und Simulationsdaten mit 1.000 Hz.
KennzahlFinaler Transformer
RRE über 1.024 Schritte, alle Geschwindigkeiten0,74 %
RRE bei unbekannten Geschwindigkeiten0,85 %
RRE über 10.000 Schritte1,78 %
Mittlere Trainingszeit im Setup1 Stunde 15 Minuten
Inferenzgeschwindigkeit770.721 Schritte/s

RRE steht für Relative Range Error und setzt die Prognoseabweichung ins Verhältnis zur Signalspannweite. Niedrigere Werte sind besser. Alle Zahlen gelten ausschließlich für die dokumentierte Hard- und Softwareumgebung.

Einordnung

Der Transformer gewann den 1.024-Schritte-Test – nicht jede beliebig lange Aufgabe

Über 1.024 Schritte erreichte der Transformer im MVP die höchste Genauigkeit, die geringste Fehlerstreuung zwischen den Dynamiktypen und die höchste Inferenzgeschwindigkeit. Auch bei nicht im Training enthaltenen Geschwindigkeiten generalisierte er am genauesten.

Über 10.000 Schritte stieg sein Fehler jedoch stärker als bei der LSTM. Der mittlere RRE von 1,78 % blieb zwar unter dem NARX-Wert von 2,96 %, aber über dem LSTM-Wert von 1,277 %. Die Architekturwahl muss daher den tatsächlichen Prognosehorizont berücksichtigen.

Trade-offs

Stärken und Grenzen des Encoder-Decoder-Transformers

StärkenGrenzen
Direkter Zugriff auf den gesamten Kontext per AttentionAttention-Speicher wächst quadratisch mit der Sequenzlänge.
Hohe Parallelisierbarkeit von Encoder und BlockausgabeLernrate, Warm-up und Tiefe erfordern sorgfältige Abstimmung.
Flexible Multi-Step-PrognosenMaskierungsfehler können unbemerktes Leakage verursachen.
Längere nutzbare Historie im untersuchten DatensatzPositionsinformation muss explizit ergänzt werden.
Sehr schnelle Inferenz auf geeigneter HardwareÜber Blockgrenzen können sich Fehler akkumulieren.
Klare Trennung von Historie und ZielerzeugungBei kleinen Datensätzen besteht ein höheres Overfitting-Risiko.

Eignung

Wann die Architektur sinnvoll ist

1

Längerer multivariater Kontext

Mehrere historische Signalreihen sollen gemeinsam ausgewertet und zeitlich weit auseinanderliegende Stellen direkt verglichen werden.
2

Fester Multi-Step-Horizont

Mehrere zukünftige Schritte werden gemeinsam benötigt und ein passendes blockweises Decoderdesign ist möglich.
3

Bekannte zukünftige Einflüsse

Geplante oder anderweitig bekannte exogene Größen können sauber von den unbekannten Zielwerten getrennt werden.
4

Ausreichend Daten und Tuning-Budget

Training, Hyperparameterstudien, Rollout-Tests und die Validierung des Gültigkeitsbereichs sind realistisch finanzierbar.

Alternativen

Die Modellwahl folgt dem Gedächtnis und dem Prognosehorizont

Für kurze, explizite Gedächtnisfenster kann ein NARX-Modell einfacher und günstiger sein. Wenn sehr lange rekursive Stabilität wichtiger ist als maximale Inferenzgeschwindigkeit, ist eine LSTM eine relevante Alternative.

Rekurrente Alternative

LSTM statt Transformer implementieren

Eine LSTM verdichtet die Sequenz schrittweise in rekurrenten Zuständen und benötigt keine Positions-Embeddings. Im untersuchten MVP war sie bei 10.000 Schritten stabiler, aber in der Inferenz langsamer als der Transformer.

Anwendung

Transformer als schnelles Surrogat für technische Simulationen

In der Bachelorarbeit bildete der Encoder historische Fahrzeugreaktionen und Streckenanregungen ab, während der Decoder zukünftige dynamische Größen erzeugte. Das trainierte Modell konnte einen aufwendigen Simulationslauf nicht freigabefähig ersetzen, aber neue Varianten sehr schnell annähern. Referenzsimulationen blieben für Referenzdaten, Validierung und ausgewählte Entscheidungen notwendig.

FAQ

Häufige Fragen zum Encoder-Decoder-Transformer

1

Braucht ein Zeitreihen-Transformer immer einen Decoder?

Nein. Für Klassifikation, Repräsentationslernen oder die direkte Projektion eines festen Horizonts kann ein Encoder genügen. Ein Encoder-Decoder ist besonders sinnvoll, wenn Eingabe- und Zielsequenz getrennte Rollen haben und die Zukunft konditioniert erzeugt werden soll.
2

Welche Maske verhindert zukünftige Information?

Eine kausale Target-Maske verhindert im autoregressiven Decoder, dass Position t auf spätere Zielpositionen zugreift. Padding-Masken schließen künstliche Füllwerte aus. Unabhängig davon darf der Source-Tensor nur zum Prognosezeitpunkt bekannte Informationen enthalten.
3

Ist ein Transformer automatisch schneller als eine LSTM?

Nein. Attention ist gut parallelisierbar, benötigt aber mit längeren Sequenzen viel Speicher und profitiert von geeigneter Hardware. Bei kleinen Modellen oder CPU-Inferenz kann eine LSTM konkurrenzfähig sein. Die Messwerte der Bachelorarbeit gelten nur für ihr Setup.
4

Warum kann der Fehler nach dem Trainingshorizont steigen?

Innerhalb des überwachten Horizonts wird das Modell direkt optimiert. Wird es darüber hinaus blockweise oder rekursiv fortgesetzt, fließen eigene Abweichungen in spätere Blöcke ein. Diese Verteilung hat das Modell möglicherweise nicht ausreichend gesehen.
5

Wann sollte ich einen Encoder-Decoder-Transformer wählen?

Wenn lange bekannte Kontexte, multivariate Sequenzen, ein fester Multi-Step-Horizont und parallele Verarbeitung wichtig sind und genügend Daten sowie Tuning-Budget vorhanden sind, ist die Architektur besonders interessant.

Architekturentscheidung

Vor der Modellkonfiguration muss der Informationsfluss geklärt sein

Der erste Entwurf sollte nicht mit der Anzahl der Attention Heads beginnen, sondern mit drei Fragen: Welche Historie geht in den Encoder, welche Werte sind im Decoder wirklich bekannt und soll der Horizont parallel oder autoregressiv entstehen?

Wenn diese Grenzen explizit sind, lassen sich Maskierung, Tensorformen und Evaluationsmodus ableiten. Ohne diese Klarheit kann ein technisch funktionierendes Modell sehr gute Kennzahlen liefern und trotzdem Informationen nutzen, die im realen Einsatz nicht verfügbar wären.

Quellen

Datengrundlage und technische Referenzen

Bachelorarbeit: Oscar Johann Schumacher, Surrogate Modeling of Rail Vehicle Dynamics using Neural Networks, insbesondere Kapitel 4.5, 6.2–6.7, 7.1 und Anhang A. Alle Messwerte beziehen sich auf den dokumentierten MVP und die dort verwendete Hard- und Softwareumgebung.

Architektur: Vaswani et al.: Attention Is All You Need. Implementierungsreferenz: PyTorch: torch.nn.Transformer.

Modellvergleich

Wie schlägt sich der Transformer gegen NARX und LSTM?

Vergleichen Sie Genauigkeit, Inferenzgeschwindigkeit und Fehlerakkumulation über 1.024 und 10.000 Vorhersageschritte.