Attention Is All You Need (paper)

02.05.2026 08:07

"Attention Is All You Need" – Erklärung

Überblick

Das Paper "Attention Is All You Need" (Vaswani et al., 2017) führt den Transformer ein – eine Architektur für Sequenz-zu-Sequenz-Aufgaben (ursprünglich maschinelle Übersetzung), die komplett ohne Rekurrenz (RNN/LSTM) und ohne Konvolutionen auskommt. Stattdessen baut sie ausschließlich auf Attention-Mechanismen.

Der entscheidende Vorteil: weil keine sequenzielle Berechnung über Zeitschritte mehr nötig ist, lässt sich das Training massiv parallelisieren. Auf den damaligen WMT-2014-Benchmarks erreichte das Modell neue State-of-the-Art-Werte (28,4 BLEU EN→DE, 41,8 BLEU EN→FR) bei einem Bruchteil der Trainingskosten. Diese Architektur ist die Grundlage praktisch aller modernen LLMs (GPT, Claude, Llama, Nemotron etc.) – wobei die meisten heute nur noch den Decoder-Teil verwenden.


Die Gesamtarchitektur (Figure 1)

Das Diagramm zeigt eine klassische Encoder-Decoder-Struktur:

  • Links: der Encoder verarbeitet die Eingabesequenz (z. B. einen englischen Satz) und erzeugt eine kontextualisierte Repräsentation jedes Tokens.
  • Rechts: der Decoder erzeugt autoregressiv die Ausgabesequenz (z. B. die deutsche Übersetzung), Token für Token, und greift dabei sowohl auf bereits generierte Tokens als auch auf die Encoder-Ausgabe zurück.

Das Nx an beiden Stacks bedeutet, dass die jeweilige Block-Struktur N-mal gestapelt wird (im Paper N=6).

Lass uns das Diagramm jetzt von unten nach oben durchgehen.


1. Inputs / Outputs (ganz unten)

  • Inputs (links): die tokenisierte Eingabesequenz, z. B. die Wort-IDs eines englischen Satzes.
  • Outputs (shifted right) (rechts): die bisher generierte Zielsequenz, um eine Position nach rechts verschoben. Während des Trainings ist das die korrekte Übersetzung mit einem <start>-Token vorne dran. Diese Verschiebung sorgt dafür, dass das Modell an Position i nur Tokens < i sieht und nicht das Token "spickt", das es vorhersagen soll.

2. Input Embedding / Output Embedding

Jedes Token-ID wird in einen lernbaren Vektor der Dimension d_model = 512 umgewandelt – das übliche Embedding-Lookup. Die Gewichtsmatrix wird übrigens zwischen Input-Embedding, Output-Embedding und der finalen Linear-Schicht geteilt (Tied Embeddings).

3. Positional Encoding (das ⊕-Symbol)

Hier kommt ein zentraler Trick: Da es keine Rekurrenz und keine Konvolutionen gibt, hat das Modell keine eingebaute Information über Wortreihenfolge. Für den Self-Attention-Mechanismus sieht ein Satz erstmal aus wie eine Menge (Set), nicht wie eine Sequenz.

Die Lösung: man addiert auf jedes Embedding einen Positional-Encoding-Vektor gleicher Dimension. Im Paper sind das Sinus- und Cosinus-Funktionen unterschiedlicher Frequenzen:

PE(pos, 2i)   = sin(pos / 10000^(2i/d_model))
PE(pos, 2i+1) = cos(pos / 10000^(2i/d_model))

Die Wellenlängen bilden eine geometrische Progression von 2π bis 10000·2π. Dadurch kann das Modell relative Positionen über lineare Transformationen leicht lernen, und es kann theoretisch auch auf längere Sequenzen extrapolieren als im Training gesehen.

(Heutige Modelle nutzen oft RoPE oder ALiBi statt dieser sinusoidalen Variante, aber das Prinzip "Positionsinfo additiv/multiplikativ einspeisen" bleibt.)


4. Der Encoder-Block (links, Nx)

Jeder der 6 Encoder-Layer enthält zwei Sub-Layer:

4a. Multi-Head Attention (Self-Attention)

Hier passiert das Herzstück. Jedes Token "schaut" auf alle anderen Tokens im Satz und entscheidet, welche für seine eigene Repräsentation relevant sind.

Mechanisch: Aus jedem Eingabe-Vektor werden drei Vektoren erzeugt – Query (Q), Key (K), Value (V) – jeweils durch Multiplikation mit gelernten Matrizen W_Q, W_K, W_V. Dann:

Attention(Q, K, V) = softmax(QKᵀ / √d_k) · V

Schritt für Schritt:

  1. QKᵀ: für jedes Query-Token wird die Ähnlichkeit (Skalarprodukt) zu jedem Key-Token berechnet → eine n×n-Matrix von "Aufmerksamkeits-Scores".
  2. / √d_k: Skalierung, um zu verhindern, dass die Skalarprodukte bei großem d_k so groß werden, dass die Softmax in Sättigung läuft (Gradienten verschwinden dann).
  3. softmax: pro Zeile normalisiert → Wahrscheinlichkeitsverteilung über alle Positionen.
  4. · V: gewichtete Summe der Value-Vektoren.

Multi-Head: Statt einer großen Attention werden h=8 parallele "Köpfe" benutzt, jeder mit seinen eigenen W_Q, W_K, W_V, die in einen niedrigerdimensionalen Raum (d_k = d_v = 64) projizieren. Die Ergebnisse aller Köpfe werden konkateniert und mit W_O zurück auf d_model projiziert. Idee: jeder Kopf kann sich auf andere Aspekte spezialisieren (Syntax, Koreferenz, lokale vs. weite Beziehungen). Die Anhang-Visualisierungen (Figures 3–5) zeigen das schön.

4b. Add & Norm

Das ist eine Residualverbindung (x + Sublayer(x)) gefolgt von Layer Normalization. Die Residuals helfen Gradienten beim Backprop durch tiefe Stacks zu fließen (wie in ResNets), die LayerNorm stabilisiert die Aktivierungen. Damit Residual-Addition funktioniert, müssen alle Sub-Layer Outputs der Dimension d_model = 512 produzieren.

4c. Feed Forward

Ein einfaches positionsweises 2-Schicht-MLP mit ReLU dazwischen, das unabhängig auf jede Token-Position angewandt wird (gleiche Gewichte über Positionen, andere Gewichte über Layer):

FFN(x) = max(0, x·W₁ + b₁)·W₂ + b₂

Innen-Dimension d_ff = 2048, also: 512 → 2048 → 512. Dieser Block macht den Großteil der Parameter aus und wird oft als "wo Wissen gespeichert wird" interpretiert.

4d. Add & Norm (nochmal)

Wieder Residual + LayerNorm um den Feed-Forward.

→ Output dieses Encoder-Layers geht entweder in den nächsten Encoder-Layer oder, beim letzten Layer, in den Decoder als Keys und Values.


5. Der Decoder-Block (rechts, Nx)

Jeder Decoder-Layer hat drei Sub-Layer statt zwei. Wir gehen sie wieder von unten nach oben durch:

5a. Masked Multi-Head Attention

Self-Attention über die bisher generierten Output-Tokens – aber maskiert. Beim Berechnen der Attention für Position i werden alle Verbindungen zu Positionen > i auf −∞ gesetzt (vor der Softmax), damit sie nach Softmax exakt 0 ergeben. Das sichert die autoregressive Eigenschaft: Position i darf nur Tokens ≤ i sehen, sonst würde das Modell beim Training spicken.

5b. Add & Norm

Wie gehabt.

5c. Multi-Head Attention (Encoder-Decoder-Attention bzw. "Cross-Attention")

Das ist der spannende Brückenschlag:

  • Queries kommen aus dem vorherigen Decoder-Sub-Layer (also: was die Decoder-Repräsentation aktuell "wissen will").
  • Keys und Values kommen aus der Encoder-Ausgabe (also: was im Eingabe-Satz steht).

So kann jede Decoder-Position über alle Encoder-Positionen aufmerksam werden – das ersetzt das klassische Attention-Modul von Bahdanau/Luong-Stil seq2seq-Modellen.

5d. Add & Norm

5e. Feed Forward

Identisch zum Encoder-FFN.

5f. Add & Norm


6. Linear + Softmax (oben rechts)

Die finale Decoder-Ausgabe (ein Vektor pro Position der Dimension d_model) wird durch eine lineare Schicht auf die Vokabulargröße projiziert (Logits) und dann durch Softmax in eine Wahrscheinlichkeitsverteilung über das nächste Token verwandelt. Beim Inferieren nimmt man typischerweise Beam Search (im Paper Beam-Size 4, Length-Penalty α=0.6).


Warum das Ganze so wichtig wurde

Drei Dinge machen die Architektur zur Blaupause für alles, was später kam:

  1. Parallelisierbarkeit: Innerhalb eines Trainingsbeispiels gibt es keine sequenzielle Abhängigkeit mehr – alle Positionen werden gleichzeitig berechnet. Das passt perfekt zu GPUs/TPUs.
  2. Konstante Pfadlänge: Egal wie weit zwei Tokens auseinanderstehen, Self-Attention verbindet sie in O(1) Schritten (siehe Tabelle 1). Long-Range-Dependencies sind dadurch viel leichter zu lernen als bei RNNs.
  3. Skalierbarkeit: Die Architektur skaliert vorhersagbar mit Daten und Parametern – die Grundlage aller späteren Scaling-Law-Erkenntnisse.

Eine kleine Einordnung: moderne Modelle wie Nemotron oder Llama nutzen meist nur den Decoder-Stack (Decoder-only), da reines Sprachmodellieren keinen separaten Encoder braucht. Die Cross-Attention (5c) entfällt dann, und übrig bleiben Masked Self-Attention + FFN pro Layer. Das Grundprinzip von Figure 1 ist aber dasselbe geblieben.