Robocikowo>ROBOCIKOWO
Architektura

Learned PE

2017HistorycznyOpublikowano: 9 czerwca 2026Aktualizacja: 9 czerwca 2026Opublikowany
Learned Positional Encoding to alternatywa dla sinusoidalnego PE, w której wektor pozycji jest standardowym, uczonym embeddingiem — jedna tabela o rozmiarze (max_seq_len, d_model). Stosowane m.in. w BERT, GPT-1/2 i wczesnych Vision Transformers.
Kluczowa innowacja
Zastępuje deterministyczne sinusoidalne kodowanie pozycji uczonymi embeddingami — model sam optymalizuje wektor pozycji dla każdej pozycji w oknie kontekstu, traktując pozycję analogicznie jak token w słowniku.
Kategoria
Architektura
Poziom abstrakcji
Primitive
Poziom operacji
ModelTreningInferencja
Zastosowania
BERT (Devlin et al. 2018) — uczone PE o max długości 512GPT-1 i GPT-2 — uczone PE jako kanoniczny wybór wczesnej rodziny GPTVision Transformer (ViT) — uczone PE dla patchy obrazuWczesne modele tłumaczeniowe i klasyfikatory tekstu

Jak działa

Tworzy się parametryczną tabelę embeddingów pozycji o kształcie (max_seq_len, d_model). Dla pozycji pos pobierany jest wiersz P[pos], a następnie dodawany do embeddingu tokenu na wejściu modelu (x_in = token_emb + P[pos]) — identyczna integracja jak w sinusoidal PE, różnica leży wyłącznie w źródle wektora. Tabela P jest losowo inicjalizowana i uczona razem z resztą modelu przez backprop. Wszystkie pozycje od 0 do max_seq_len-1 dostają niezależne, uczone wektory. Pozycje pos >= max_seq_len są UNDEFINED — model fizycznie nie ma embeddingu dla takich pozycji, więc kontekst musi być twardo obcięty lub przesunięty.

Rozwiązany problem

Sinusoidal PE jest deterministyczne i zakłada konkretną geometrię (geometryczna dekompozycja częstotliwości, podstawa 10000), która niekoniecznie jest optymalna dla konkretnej domeny i rozmiaru modelu. Learned PE pozwala modelowi samemu znaleźć reprezentację pozycji najbardziej użyteczną dla zadania — kosztem dodatkowych parametrów i utraty zdolności do ekstrapolacji poza długość treningu.

Komponenty

Position Embedding TableŹródło wektora pozycji dla operacji dodawania PE do embeddingu tokenu

Parametryczna tabela P o kształcie (max_seq_len, d_model). Każdy wiersz to uczony wektor reprezentujący jedną pozycję absolutną w oknie kontekstu. Inicjalizowana losowo (typowo N(0, 0.02)) i aktualizowana standardowym backpropem razem z resztą modelu.

INTensor indeksów pozycji per token w batchu o rozmiarze B i długości sekwencji T.
OUTWektory embeddingów pozycji pobrane przez lookup z tabeli P.
1D Learned PEKlasyczna tabela dla sekwencji 1D (tekst). Używana w BERT, GPT-1/2.
2D Learned PE (ViT)Wariant dla widzenia: jedna tabela dla wszystkich patchy traktowanych jako 1D sekwencja w raster order (oryginalny ViT) lub osobne tabele row/col (niektóre warianty).
Segment-aware Learned PEBERT dodatkowo uczy tabelę „segment embeddings" (0/1), kodującą przynależność tokenu do zdania A lub B — kombinowana addytywnie z PE pozycji.

Oficjalna

Implementacja

Pułapki implementacyjne
Przekroczenie max_seq_len w inferencjiKrytyczna

Learned PE jest fizycznie zdefiniowane tylko dla pozycji 0..max_seq_len-1. Próba inferencji na dłuższej sekwencji powoduje błąd indeksowania (out-of-range) albo, jeśli zaimplementowano modulo, korupcję semantyki pozycji.

Rozwiązanie:Twardo obciąć kontekst do max_seq_len lub przejść na RoPE/ALiBi/YaRN, jeśli wymagana jest dłuższa sekwencja.
Brak ekstrapolacji długościWysoka

W przeciwieństwie do sinusoidal/ALiBi, learned PE nie ekstrapoluje — model trenowany na 512 tokenach nie działa dobrze na 1024, nawet jeśli technicznie powiększymy tabelę i zainicjalizujemy ją losowo.

Rozwiązanie:Dla long-context używać RoPE + YaRN/LongRoPE lub ALiBi. Rozszerzanie tabeli learned PE wymaga osobnego, długiego fine-tuningu i daje gorsze wyniki.
Niespójna inicjalizacja pomiędzy learned PE a token embeddingsŚrednia

Jeśli inicjalizacja PE jest istotnie różna w skali od token embeddings, jeden sygnał dominuje drugi we wczesnym treningu, co zaburza stabilność.

Rozwiązanie:Stosować tę samą skalę inicjalizacji co dla token embeddings (zwykle N(0, 0.02)).

Ewolucja

Oryginalny paper · 2017 · ICML 2017 · Jonas Gehring
Convolutional Sequence to Sequence Learning
Jonas Gehring, Michael Auli, David Grangier, Denis Yarats, Yann N. Dauphin
2017
Uczone embeddingi pozycji w ConvS2S (Gehring et al.)

Facebook AI Research wprowadza uczone embeddingi pozycji w architekturze konwolucyjnej do tłumaczenia maszynowego — jedna z pierwszych prac używających learned PE jako rozwiązania problemu pozycji w bezsekwencyjnych modelach.

2017
Sinusoidal PE w Transformerze (Vaswani et al.)

Vaswani et al. eksperymentują z learned PE jako alternatywą dla sinusoidalnego. Wyniki niemal identyczne — wybierają sinusoidal jako prostsze i lepsze w ekstrapolacji.

2018
BERT i GPT przyjmują learned PE
Punkt przełomowy

BERT (Devlin et al.) oraz GPT (Radford) wybierają learned PE jako swój kanon — od tego momentu jest to standardowy wybór w modelach pretrenowanych encoder/decoder przez kilka kolejnych lat.

2020
Vision Transformer (Dosovitskiy et al.) — learned PE dla patchy

ViT używa learned 1D PE dla patchy obrazu, pokazując że metoda dobrze przenosi się z NLP na widzenie maszynowe.

2021
RoPE i ALiBi — odejście od dodawalnego PE

RoPE (Su et al.) i ALiBi (Press et al.) pokazują, że można uzyskać lepszą jakość i ekstrapolację bez uczonych embeddingów pozycji. Zaczyna się odwrót od learned PE w nowych dużych LLM.

2023
Schyłek learned PE w nowych LLM

Llama 2/3, Qwen, DeepSeek, Mistral i inne nowe duże LLM używają RoPE (+ YaRN/LongRoPE dla long-context). Learned PE pozostaje w użyciu głównie w starszych modelach BERT/GPT-2 oraz w klasycznym ViT.

Hiperparametry (konfigurowalne osie)

Max sequence lengthKrytyczna

Maksymalna długość kontekstu, na jaką model jest wytrenowany. Twarde ograniczenie — pozycje powyżej tej wartości nie mają zdefiniowanego embeddingu.

512BERT-base/large
1024GPT-2
2048GPT-3 (z PE pochodnym, nie czysto learned)
Embedding width (d_model)Wysoka

Szerokość embeddingu pozycji — musi być równa szerokości embeddingu tokenu, bo PE jest dodawane.

Initialization schemeŚrednia

Schemat inicjalizacji tabeli pozycji (np. normalna N(0, 0.02) jak w BERT/GPT). Wpływa na stabilność wczesnego treningu.

N(0, 0.02)Standardowo w BERT/GPT
Added parameter countNiska

Dodatkowe parametry wnoszone przez Learned PE: max_seq_len × d_model. Dla BERT-base: 512 × 768 ≈ 0.4M parametrów (znacząca pozycja dla małych modeli, marginalna dla LLM).

Złożoność obliczeniowa

Złożoność czasowa: O(1) per token (O(T) per sequence). Złożoność przestrzenna: O(max_seq_len · d_model) parametrów; O(T · d_model) aktywacji per batch.

Wąskie gardło obliczeniowe

Lookup pamięciowy (memory-bound)

Operacja jest niezwykle tania obliczeniowo (jeden lookup + dodawanie). Jeśli stanowi wąskie gardło, to wyłącznie z powodu szerokości pasma pamięci — tabela P musi być wczytana z VRAM/HBM. W praktyce nigdy nie jest realnym bottleneckiem na tle attention i MLP.

Zależy od
max_seq_lend_model

Paradygmat wykonania

Tryb główny
Gęsty

Learned PE jest dodawane do każdego embeddingu wejściowego — operacja gęsta, deterministyczna w runtime po treningu, bez routingu.

Wzorzec aktywacji
Wszystkie ścieżki aktywne

Równoległość

Poziom równoległości
W pełni równoległy

Lookup w tabeli embeddingów jest natywnie równoległy i niezwykle szybki. Brak zależności sekwencyjnych w samym mechanizmie kodowania pozycji.

Zakres
TreningInferencjaPomiędzy tokenami

Wymagania sprzętowe

Podstawowe

Lookup w tabeli embeddingów to standardowa, dobrze wspierana operacja na każdym akceleratorze i CPU.