Positional Encoding

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.