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.
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.
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.
Oficjalna
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.
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.
Jeśli inicjalizacja PE jest istotnie różna w skali od token embeddings, jeden sygnał dominuje drugi we wczesnym treningu, co zaburza stabilność.
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.
Vaswani et al. eksperymentują z learned PE jako alternatywą dla sinusoidalnego. Wyniki niemal identyczne — wybierają sinusoidal jako prostsze i lepsze w ekstrapolacji.
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.
ViT używa learned 1D PE dla patchy obrazu, pokazując że metoda dobrze przenosi się z NLP na widzenie maszynowe.
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.
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.
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.
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.
Maksymalna długość kontekstu, na jaką model jest wytrenowany. Twarde ograniczenie — pozycje powyżej tej wartości nie mają zdefiniowanego embeddingu.
Szerokość embeddingu pozycji — musi być równa szerokości embeddingu tokenu, bo PE jest dodawane.
Schemat inicjalizacji tabeli pozycji (np. normalna N(0, 0.02) jak w BERT/GPT). Wpływa na stabilność wczesnego treningu.
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).
Learned PE jest dodawane do każdego embeddingu wejściowego — operacja gęsta, deterministyczna w runtime po treningu, bez routingu.
Lookup w tabeli embeddingów jest natywnie równoległy i niezwykle szybki. Brak zależności sekwencyjnych w samym mechanizmie kodowania pozycji.
Lookup w tabeli embeddingów to standardowa, dobrze wspierana operacja na każdym akceleratorze i CPU.