Wprowadzenie
Positional Encoding (kodowanie pozycji) to technika dodawania informacji o kolejności tokenów w sekwencji do ich embeddingów. Jest niezbędna w architekturze Transformer, ponieważ mechanizm Self-Attention sam w sobie nie ma pojęcia o pozycji – traktuje wszystkie tokeny równocześnie i permutacyjnie.
Dlaczego pozycja jest ważna?
W zdaniu „Kot goni psa” a „Pies goni kota” znaczenie jest zupełnie inne, choć zbiór tokenów jest identyczny. Model musi wiedzieć, który token znajduje się na której pozycji, aby prawidłowo rozumieć kolejność i zależności.
Oryginalne Sinusoidal Positional Encoding
Zaproponowane w przełomowej pracy „Attention Is All You Need” (Vaswani et al., 2017):
PE(pos,2i) = sin(pos / 100002i/dmodel)
PE(pos,2i+1) = cos(pos / 100002i/dmodel)
Gdzie pos to pozycja tokenu, i to wymiar, a d_model to wymiar embeddingów.
Typy Positional Encoding
- Absolute Positional Encoding – sinusoidal (klasyczny) lub learned (uczone)
- Relative Positional Encoding – T5, Transformer-XL
- Rotary Positional Embeddings (RoPE) – obecnie najpopularniejsze (Llama, Mistral, Phi, Gemma, Qwen)
- ALiBi (Attention with Linear Biases) – bardzo dobre ekstrapolowanie na dłuższe sekwencje
- xPos, YaRN, NTK-aware – nowoczesne metody poprawiające ekstrapolację kontekstu
RoPE (Rotary Positional Embeddings)
Zamiast dodawać wektor pozycji do embeddingów, RoPE obraca wektory Query i Key w przestrzeni za pomocą macierzy rotacji zależnej od pozycji. Dzięki temu model zachowuje informacje względne między tokenami i świetnie radzi sobie z ekstrapolacją na dłuższe sekwencje.
Zalety i wady różnych podejść
- Sinusoidal: deterministyczne, dobre ekstrapolowanie, ale słabsze na bardzo długich kontekstach
- Learned: elastyczne, ale ograniczone do długości widzianej podczas treningu
- RoPE: świetna wydajność, doskonała ekstrapolacja, obecnie dominuje
Aktualny status (2026)
Positional Encoding ewoluował od prostych sinusoid do wyrafinowanych metod rotacyjnych. Prawie wszystkie najnowsze modele (Llama 3/4, Mistral, Grok, Claude 3/4, Gemini) używają RoPE lub jego ulepszonych wariantów. Dzięki RoPE + YaRN/NTK modele potrafią efektywnie obsługiwać kontekst nawet 128k–1M tokenów, co było niemożliwe przy klasycznym sinusoidal encoding.
Mechanizm ten pozostaje jednym z kluczowych wynalazków, który umożliwił sukces architektury Transformer.