Positionscodierung und RoPE
Kurz: Attention kennt von sich aus keine Reihenfolge. Positionscodierung gibt jedem Token Information darüber, wo es steht. Heute verbreitet ist RoPE, das Vektoren abhängig von der Position dreht.
Genauer: Ohne Position wären „Hund beißt Mann“ und „Mann beißt Hund“ für Attention dieselbe Menge von Wörtern.
Im Detail
- Sinus-Codierung: Das Original (2017) addiert Sinus- und Kosinuswellen unterschiedlicher Frequenz zum Embedding.
- Gelernte Positionen: Ein Vektor je Position (GPT-2). Begrenzt auf die Trainingslänge.
- RoPE (Rotary Position Embedding): Dreht Q und K paarweise um einen positionsabhängigen Winkel. Das Skalarprodukt hängt dann nur vom Abstand der Tokens ab. Standard bei Llama, Qwen, Mistral u. a.
- ALiBi: Zieht einen Strafwert proportional zum Abstand von den Attention-Werten ab.
- Längenerweiterung: Modelle sind auf eine Länge trainiert. Mit Tricks (Position Interpolation, NTK, YaRN) streckt man RoPE auf längere Kontexte, oft mit kurzem Nachtraining.
- Folge: Die nutzbare Kontextlänge ist nicht nur Speicherfrage, sondern hängt vom Training ab, siehe kontextfenster.
Siehe auch: Self-Attention im Detail, kontextfenster