PE(pos, 2i) = sin(pos / 100002i/d) PE(pos, 2i+1) = cos(pos / 100002i/d)
Gerade Dimensionen (2i) nutzen Sinus, ungerade (2i+1) nutzen Cosinus.
Verschiedene Dimensionen haben verschiedene Frequenzen (100002i/d).
Position im Text
0
Embedding-Dimension (d)
64
Angezeigte Dimensionen
d₀ d₂ d₄ d₈ d₁₆ d₃₂
Sinuswellen für verschiedene Dimensionen
Position Encoding Vektor
pos = 0
Position Encoding Matrix
64 Positionen × 64 Dimensionen – jede Zeile ist ein eindeutiger Positionsvektor
Dimension 0 Dimension 63
← Hohe Frequenz | Niedrige Frequenz →
-1 0 +1
💡 Warum Sinus und Cosinus?

Eindeutige Positionen: Jede Position erhält einen einzigartigen Vektor. Die Kombination verschiedener Frequenzen funktioniert wie ein "Binärzähler" – niedrige Dimensionen oszillieren schnell (Einer-Stelle), hohe langsam (Tausender-Stelle).

Relative Positionen: Für jede feste Distanz k existiert eine lineare Transformation, die PE(pos) auf PE(pos+k) abbildet. Das Modell kann so lernen, relative Abstände zu nutzen.

Generalisierung: Die Funktionen sind für beliebige Positionen definiert – theoretisch auch für längere Sequenzen als im Training gesehen.

Sinusoidal (Original) 2017
  • Keine trainierbaren Parameter
  • Theoretisch unbegrenzte Länge
  • Feste, deterministische Werte
  • Verwendet in: Original Transformer
RoPE (Rotary) Modern
  • Rotation statt Addition
  • Bessere Extrapolation
  • Relative Positionen natürlich
  • Verwendet in: Llama, Mistral, PaLM
ALiBi (Linear Bias) Modern
  • Kein separates Encoding
  • Bias direkt auf Attention-Scores
  • Zero-Shot Längenextrapolation
  • Verwendet in: BLOOM, MPT