Kodowanie pozycyjne: skąd model wie, co było pierwsze
🎯 Po co Ci to?
Transformer bez pozycji traktowałby zdanie jak worek. „Ala ma kota" i „kota ma Ala" zlałyby się. Kodowanie pozycyjne to GPS dla tokenów.
✅ Czego się nauczysz
Po tej lekcji potrafisz:
- wyjaśnić, czemu samych osadzeń nie wystarczy do kolejności;
- opisać ideę wektorów pozycji z sinusem i cosinusem;
- powiedzieć, że wektor pozycji dodaje się do osadzenia;
- wskazać, czemu funkcje okresowe z zakresu [−1, 1] są wygodne dla sieci.
🔁 Przypomnij sobie
Osadzenie (14.3) mówi o znaczeniu / towarzystwie słowa. RNN nosiły porządek w kolejności kroków — tu tej kolejności nie ma.
📘 GPS dla słów
Dla „Ala ma kota" każde słowo ma wektor osadzenia — ale ten wektor nie mówi, czy token jest pierwszy, drugi czy trzeci. Kodowanie pozycyjne tworzy unikalny wektor dla każdej pozycji i dodaje go do osadzenia.

W oryginalnym transformerze używa się funkcji sinus i cosinus o różnych częstotliwościach. Przy osadzeniach wymiaru 2 przykładowe wektory pozycji mogłyby wyglądać tak (jak w książce):
| Token (pozycja) | Wektor pozycji (przykład) |
|---|---|
| „Ala" (1) | (0,000, 1,000) |
| „ma" (2) | (0,841, 0,540) |
| „kota" (3) | (0,909, −0,416) |
Wektory pozycji mają ten sam wymiar co osadzenia — inaczej nie da się ich dodać składowa do składowej.
Dlaczego sin/cos? Są okresowe i przyjmują wartości z [−1, 1] — zakres, który sieci lubią (por. reprezentacje numeryczne w 14.1). Da się generować wektory pozycji dla dowolnie długich sekwencji według stałej reguły.
📐 DEFINICJA — kodowanie pozycyjne (positional encoding): sygnał (zwykle wektor z sin/cos) informujący model o pozycji tokenu w sekwencji; dodawany do osadzenia.
Po ludzku: dokładasz do znaczenia słowa informację „jestem trzeci w zdaniu".
💭 Pomyśl
Co by się stało, gdybyśmy zamiast dodawać pozycję zastąpili nią osadzenie?
Podpowiedź
Stracilibyśmy znaczenie słowa — zostałyby same numery miejsc. Model wiedziałby „tu jest pozycja 2", nie „tu jest ma". Potrzebne są oba sygnały naraz.
⚠️ Częsty błąd
Częsty błąd: „Kodowanie pozycyjne to to samo co indeks tokenu w słowniku."
Elenchus: Indeks w słowniku mówi które słowo (Ala = 1 w słowniku). Pozycja mówi gdzie w tym zdaniu (pierwsze wystąpienie). To ortogonalne informacje.
🌍 Powiązania
- 14.1 — dlaczego sieci lubią [−1, 1].
- 15.2 — problem worka słów.
- 16.4 — pozycje dodawane równolegle przed uwagą.
📐 Definicje tej lekcji
- Positional encoding — wektor pozycji + operacja dodania do osadzenia.
- Sin/cos — typowa konstrukcja z papieru 2017.
📌 Najważniejsze w pigułce
- Bez pozycji transformer nie rozróżnia kolejności.
- Pozycja = osobny wektor, zwykle sin/cos, dodany do osadzenia.
- Ten sam wymiar co embedding; wartości w wygodnym zakresie.
- Liczy się dla wszystkich pozycji naraz (paralelizm).
🎒 Zadania
Zadanie 16.3.1. Dla „Ala ma kota" i „kota ma Ala" wyjaśnij, co jest wspólne w osadzeniach, a co muszą rozróżnić wektory pozycji.
Pokaż rozwiązanie
Te same trzy słowa → podobne / te same osadzenia typu word2vec-styl. Różnica: w pierwszym „Ala" ma pozycję 1, w drugim pozycję 3 (itd.). Po dodaniu pozycji reprezentacje wejścia do uwagi się różnią.
Zadanie 16.3.2. Dlaczego wektor pozycji musi mieć tę samą długość co osadzenie?
Pokaż rozwiązanie
Bo je dodajemy składowymi. Różne wymiary → dodawanie niezdefiniowane (albo wymagałoby innej, bardziej skomplikowanej fuzji).
🔍 Sprawdź, czy umiesz
- [ ] Wyjaśnić lukę po usunięciu RNN.
- [ ] Opisać sin/cos + dodawanie.
- [ ] Odróżnić indeks słownika od pozycji w zdaniu.
- [ ] Powiedzieć, czemu [−1, 1] i okresowość pomagają.