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.

Kodowanie pozycyjne (sin/cos) dla sekwencji „Ala ma kota"
Kodowanie pozycyjne (sin/cos) dla sekwencji „Ala ma kota"

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ą.

Ucz się tej jednostki z asystentem