Sequence-to-Sequence Models
Sequenz-zu-Sequenz-Modelle (seq2seq) bilden eine Eingabesequenz auf eine Ausgabesequenz anderer Länge ab, etwa bei Übersetzung, Zusammenfassung oder Spracherkennung.
Sequenz-zu-Sequenz-Modelle (seq2seq) wandeln eine Sequenz in eine andere um, deren Länge abweichen kann, etwa einen englischen Satz in seine französische Übersetzung, einen langen Artikel in eine Zusammenfassung oder einen Audioclip in ein Transkript. Die meisten verwenden einen Encoder-Decoder-Aufbau: Der Encoder liest die gesamte Eingabe und wandelt sie in interne Repräsentationen um. Der Decoder generiert die Ausgabe jeweils ein Token nach dem anderen, abhängig von diesen Repräsentationen und den bereits erzeugten Tokens. Die moderne Form des Ansatzes entstand 2014, als Sutskever, Vinyals und Le bei Google Sequence to Sequence Learning with Neural Networks veröffentlichten und Cho et al. einen RNN-Encoder-Decoder für die maschinelle Übersetzung beschrieben. Seit 2017 werden die meisten seq2seq-Modelle mit Transformern entwickelt.
So funktionieren seq2seq-Modelle#
In den Modellen von 2014 las ein Long Short-Term Memory (LSTM)-Netz als Encoder den Quellsatz Wort für Wort und komprimierte ihn in einen Vektor fester Länge. Ein LSTM-Decoder entrollte diesen Vektor anschließend zur Übersetzung. Sutskever et al. verwendeten LSTMs mit vier Schichten, stellten fest, dass sich das Training durch Umkehren der Wortreihenfolge im Quellsatz vereinfachte, und erzielten beim englisch-französischen WMT'14-Testsatz einen BLEU-Wert von 34,8. Das Zusammenfassen jedes Satzes in einem einzigen Vektor beeinträchtigte lange Eingaben. Deshalb fügten Bahdanau, Cho und Bengio in Neural Machine Translation by Jointly Learning to Align and Translate einen Aufmerksamkeitsmechanismus hinzu. Dadurch kann der Decoder bei jedem Schritt auf jeden Zustand des Encoders zurückblicken. Der Transformer behielt diesen Encoder-Decoder-Aufbau bei, ersetzte die Rekurrenz durch Self-Attention und verband die beiden Teile mit Cross-Attention. Bei der Inferenz läuft der Decoder in einer Schleife:
Die Schleife endet, sobald der Decoder ein End-Token ausgibt. Daher wird die Ausgabelänge für jedes Beispiel individuell gelernt. Beim Decodieren werden üblicherweise mit Beam Search mehrere mögliche Ausgaben beibehalten – das Standardverfahren für Übersetzung und Spracherkennung.
Training mit Teacher Forcing#
Beim Training muss der Decoder nicht in einer Schleife laufen. Beim Teacher Forcing erhält er die korrekte Zielsequenz, um eine Position nach rechts verschoben, und sagt in einem einzigen parallelen Durchlauf alle nächsten Tokens voraus. Eine Kausalmaske stellt sicher, dass jede Position nur frühere Zielwerte sieht. Der Verlust ist die Kreuzentropie zwischen diesen Vorhersagen und den tatsächlichen nächsten Tokens. nn.Transformer von PyTorch implementiert den ursprünglichen Encoder-Decoder:
import torch
from torch import nn
torch.manual_seed(0)
src_vocab, tgt_vocab, d_model = 1000, 800, 64
embed_src, embed_tgt = nn.Embedding(src_vocab, d_model), nn.Embedding(tgt_vocab, d_model)
model = nn.Transformer(d_model, nhead=4, num_encoder_layers=2, num_decoder_layers=2, batch_first=True)
to_logits = nn.Linear(d_model, tgt_vocab)
source = torch.randint(0, src_vocab, (1, 9)) # a 9-token source sentence
target = torch.randint(0, tgt_vocab, (1, 7)) # start token + a 6-token translation
# Teacher forcing: the decoder reads the correct previous tokens and predicts every next token in parallel
decoder_input, labels = target[:, :-1], target[:, 1:]
causal_mask = nn.Transformer.generate_square_subsequent_mask(decoder_input.size(1))
logits = to_logits(model(embed_src(source), embed_tgt(decoder_input), tgt_mask=causal_mask))
loss = nn.functional.cross_entropy(logits.flatten(0, 1), labels.flatten())
print(f"Source tokens: {source.shape[1]} -> decoder logits: {tuple(logits.shape)}")
print(f"Training loss: {loss.item():.2f}")Es gibt Source tokens: 9 -> decoder logits: (1, 6, 800) aus: für jede der 6 Zielpositionen eine Vorhersage aus dem Zielwortschatz mit 800 Tokens, berechnet in einem einzigen Durchlauf anhand einer Quelle mit 9 Tokens. Der Verlust des untrainierten Modells von 6,73 liegt nahe bei ln(800) ≈ 6,68, dem Verlust einer gleichverteilten Zufallsvorhersage. Da beim Training immer die korrekten vorherigen Tokens eingegeben werden, bei der Inferenz jedoch die eigenen Vermutungen des Modells, können sich Fehler bei der Inferenz summieren. Dieser Effekt heißt Expositionsverzerrung.
seq2seq im Vergleich zu verwandten Architekturen#
- Modelle nur mit Encoder, etwa BERT: Diese Modelle verarbeiten die Eingabe in beide Richtungen und geben für jedes Token eine Repräsentation aus. Das eignet sich für Klassifizierung und Markierung.
- Nur-Decoder-große Sprachmodelle (LLMs): Modelle wie GPT fügen Eingabe und Ausgabe zu einer Sequenz zusammen und bearbeiten seq2seq-Aufgaben, indem sie den Prompt fortsetzen. So funktioniert heute die meiste Textgenerierung.
- Rekurrente neuronale Netze (RNNs) und GRUs: Die rekurrenten Schichten in den ursprünglichen Encodern und Decodern von 2014. Cho et al. führten die Gated Recurrent Unit im selben Paper wie ihren Encoder-Decoder ein.
Anwendungen#
Google stellte Google Translate 2016 auf das System GNMT um, einen Encoder-Decoder mit acht LSTM-Schichten und Attention. Übersetzung bleibt die zentrale Aufgabe für Seq2Seq-Modelle. Googles T5 fasste jede Aufgabe der Verarbeitung natürlicher Sprache (NLP) als Text-zu-Text-Aufgabe auf, darunter Textzusammenfassung und Fragebeantwortung. OpenAIs Whisper ist ein Encoder-Decoder-Transformer für Spracherkennung, der mit 680.000 Stunden Audio trainiert wurde. Bildverarbeitungsmodelle nutzen dasselbe Muster für Bildbeschreibungen und optische Zeichenerkennung (OCR). Microsofts Florence-2 verarbeitet Bildbeschreibungen, Grounding und Erkennung als Textausgaben eines einzigen Seq2Seq-Modells. Seine Large-Version läuft zur automatischen Annotation auf der Ultralytics Platform. Googles Pix2Seq formuliert Objekterkennung als Seq2Seq-Aufgabe, indem es jedes Objekt mit fünf diskreten Tokens beschreibt: vier quantisierte Koordinaten und eine Klasse. RT-DETR, der Echtzeitdetektor von Baidu, der im Ultralytics-Paket läuft, behält Encoder und Decoder mit Cross-Attention bei. Sein Decoder verfeinert jedoch 300 Objektabfragen parallel, sodass alle Boxen in einem Durchlauf ausgegeben werden.










