Back to archive
#ai#llm#glossary#aigen

Positional Encoding

Czytasz zdania „BMW wyprzedziło Volvo” i „Volvo wyprzedziło BMW”. Zawierają dokładnie te same słowa, ale zmiana kolejności odwraca role samochodów. Jeżeli mechanizm modelu widzi wyłącznie opisy słów i porównuje je jak nieuporządkowany zbiór, brakuje mu sygnału określającego ich miejsca w zdaniu.

Positional Encoding dostarcza informacji o pozycji kawałka tekstu. W oryginalnym Transformerze do listy liczb opisujących token dodawano drugą listę, wyliczoną z numeru miejsca. Token to jednostka tekstu; jego opis liczbowy nazywa się embeddingiem.

Słowo „Volvo” na miejscu pierwszym i trzecim otrzymuje więc różny sygnał wejściowy. Model może uczyć się wykorzystywania tej różnicy przy interpretacji zdania. W pierwotnym rozwiązaniu wzorce pozycji przypominały fale o różnych częstotliwościach; wyliczano je za pomocą funkcji sinus i cosinus.

Sygnał pozycji nie blokuje zaglądania do przyszłych fragmentów. Tę funkcję pełni Causal Masking. Nie każdy model dodaje pozycję w ten sam sposób: Rotary Position Embedding wprowadza ją przez obracanie części opisów liczbowych.

Źródło mechanizmu: Wyjaśnienie: Dive into Deep Learning, §11.6.3.

Mechanizm i szczegóły

W oryginalnym Transformer do reprezentacji każdego tokena dodawano wektor zbudowany z sinusów i cosinusów o różnych częstotliwościach. Wektor miał ten sam wymiar co embedding, więc dodawanie odbywało się współrzędna po współrzędnej. Attention Is All You Need, §3.5.

Co dostaje model

Schemat dodawania można zapisać jako zp=ep+PE(p)z_p=e_p+PE(p): epe_p to embedding tokena na pozycji pp, a PE(p)PE(p) zależy od pozycji.

W dwuwymiarowej ilustracji wzoru sinusoidalnego PE(0)=[0;1]PE(0)=[0;1], a PE(1)≈[0,841;0,540]PE(1)\approx[0{,}841;0{,}540]. Ten sam token z tym samym embeddingiem otrzyma więc inny wektor wejściowy na tych dwóch pozycjach. Te liczby pokazują kodowanie miejsca, nie znaczenie tokena ani siłę jego związku z sąsiadem.

Positional Encoding nie zastępuje maski przyczynowej. Informacja o położeniu nie zabrania dostępu do przyszłej pozycji; robi to maska. Wariant sinusoidalny jest jednym ze sposobów reprezentowania pozycji, a nie wymaganym rozwiązaniem w każdym modelu.

Zobacz także: Rotary Position Embedding wprowadza pozycję przez obrót query i key zamiast dodawania wektora pozycji do embeddingu.