Transformer-XL składa się z dwóch fundamentalnych mechanizmów: (1) Segment-level recurrence — podczas przetwarzania segmentu τ+1 model dostaje na wejście oryginalne tokeny segmentu τ+1 ORAZ hidden states z każdej warstwy poprzedniego segmentu τ (zamrożone, ze stop-gradientem). Hidden states segmentu τ tworzą rozszerzony „pamięciowy" zbiór keys/values, do którego nowe queries segmentu τ+1 mogą attentować. Efektywny kontekst rośnie z `T` (długość segmentu) do `T·N` (gdzie N to liczba zachowanych poprzednich segmentów) — przy koszcie O(T²) na obliczenie attention dla nowego segmentu (zamiast O((T·N)²)). (2) Relative positional encoding — autorzy wyprowadzają specjalną postać attention score: A_ij = Q_i·K_j + Q_i·R_{i-j} + u·K_j + v·R_{i-j}, gdzie R to uczone embeddingi RELATYWNYCH odległości i-j (sinusoidalne, ale dodawane jak embedingi a^K z RPR). Czteroskładnikowy rozkład izoluje wpływ pozycji od wpływu treści, a R nie zależy od absolutnej pozycji segmentu — co czyni rekurencję spójną. Implementacyjnie hidden states segmentu τ są trzymane w buforze pamięci w GPU; przy każdym nowym segmencie najstarsze są nadpisywane (FIFO).
Standardowy autoregresywny Transformer dzieli długi tekst na fixed-length segmenty (np. 512 tokenów) i każdy traktuje niezależnie — co prowadzi do dwóch problemów: (1) „context fragmentation" — pierwsze tokeny segmentu nie mają żadnego kontekstu z poprzedniego, (2) maksymalny effective context jest ograniczony do długości jednego segmentu. Naiwne rozszerzenie do dłuższych segmentów rośnie kwadratowo w pamięci attention. Transformer-XL rozwiązuje to: zamiast wydłużać segment, dodaje rekurencję między segmentami z cache'owanymi states. Drugą stroną medalu jest zepsute absolutne kodowanie pozycji — token na pozycji 0 nowego segmentu i token na pozycji 0 starego segmentu mają tę samą pozycję absolutną, co konfunduje attention. Dlatego praca wprowadza relatywne PE specjalnie dostosowane do rekurencji.
Bufor FIFO trzymający hidden states z N poprzednich segmentów dla każdej warstwy. Stop-gradient izoluje go od backpropu. Wczytywany jako keys/values dla nowego segmentu.
Oficjalna
Czteroskładnikowy rozkład score attention z dwoma uczonymi wektorami u, v i embeddingami relatywnej odległości R. Konieczny, aby segment recurrence była spójna pozycyjnie.
Oficjalna
Implementacja bez stop-gradientu na cache'owanych states'ach jest niestabilna — gradient propaguje się przez wiele segmentów wstecz, co eksploduje pamięciowo i może powodować rozbieżność treningu.
Łączenie standardowego absolutnego PE (sinusoidal/learned) z rekurencją segmentów konfunduje attention — token na pozycji 0 nowego i starego segmentu mają identyczne PE. Konieczne jest relatywne PE.
Dla M ≪ T cache nie wnosi istotnego rozszerzenia kontekstu — efekt jest porównywalny z baseline'em. Optymalnie M ≈ T do M ≈ 5·T.
Oryginalny Transformer dzieli teksty na fixed-length segmenty i traktuje je niezależnie, co stwarza problem context fragmentation.
RPR pokazuje, że można modelować pozycję jako odległość zamiast jako absolutny indeks. Bezpośredni prekursor relatywnego PE w Transformer-XL.
Dai, Yang, Yang, Carbonell, Le, Salakhutdinov publikują Transformer-XL na ACL 2019. Wprowadzają segment-level recurrence i nową, czteroskładnikową postać relatywnego PE. SOTA na enwik8, text8, WikiText-103, One Billion Word.
XLNet (autorstwa znacząco pokrywającego się zespołu) używa Transformer-XL jako backbone'u i dodaje permutation language modeling. Jeden z najgłośniejszych przełomów po BERT.
DeepMind rozszerza Transformer-XL o KOMPRESOWALNĄ pamięć — starsze hidden states są kompresowane (a nie odrzucane), wydłużając efektywny kontekst kilkukrotnie. Bezpośredni następca.
Po pojawieniu się Sparse Transformer (2019), Longformer/BigBird (2020) i RoPE (2021) podejście rekurencyjne Transformer-XL stało się rzadsze w nowych dużych LLM — większość modeli wybiera dłuższe okno + sparse/RoPE niż recurrence + relative PE.
Idea ukrytych „pamięciowych" stanów przekazywanych między krokami sekwencji wraca w architekturach SSM (Mamba) i RWKV — choć implementacyjnie różnią się od cache'owanych hidden states Transformer-XL, intuicja „rekurencyjna pamięć obok attention" jest prosto z 2019 roku.
Złożoność czasowa: O(T · (T + M) · d) per segment. Złożoność przestrzenna: O(M · d · L) cache + O(T · d · L) bieżąca aktywacja.
Główne wąskie gardło to sekwencyjne przetwarzanie segmentów — segment τ+1 wymaga ukończenia segmentu τ. To uniemożliwia trywialną paralelizację po wymiarze sekwencji w treningu.
Liczba tokenów przetwarzanych w pojedynczym kroku forward. Praca testuje T=64–640 dla różnych benchmarków.
Liczba poprzednich tokenów (z poprzednich segmentów) przechowywanych w cache'u i widocznych dla bieżącego segmentu. M=T·N gdzie N to liczba zachowanych segmentów.
Czteroskładnikowy rozkład score = (Q_i + u)·K_j + (Q_i + v)·R_{i-j} z dwoma uczonymi wektorami u, v. Wybór sinusoidalnego R kontra learned R wpływa na ekstrapolację.
Czy backprop propaguje się przez hidden states poprzedniego segmentu. Praca zawsze używa stop-gradientu — pełen backprop przez cache jest niestabilny i drogi.
Attention w obrębie pojedynczego segmentu jest gęste (każdy token vs każdy z bieżącego + cache). Rekurencyjność wprowadza warunkowość na poziomie segmentu, nie na poziomie pojedynczego tokenu.
Brak routingu uczonego — segment recurrence to deterministyczna polityka FIFO bufora pamięci.
Świadomy trade-off: rezygnujemy z perfekcyjnej równoległości w obrębie strumienia segmentów na rzecz długiego efektywnego kontekstu przy stałym budżecie pamięci attention.
Standardowe dense attention w obrębie segmentu mapuje się dobrze na GPU. Cache hidden states wymaga dodatkowego VRAM proporcjonalnego do M·d·layers.
Oryginalny eksperyment One Billion Word trenowany na TPU — segment recurrence dobrze współgra z TPU pipelining.
Algorytm jest standardowym attention + buforem pamięci — działa na każdym hardware. Realna efektywność wymaga jednak GPU/TPU z odpowiednim VRAM.