Transformer-XL
Transformer-XL speichert verborgene Zustände des vorherigen Textabschnitts zwischen und verwendet relative Positionen, damit ein Sprachmodell den Kontext über mehrere Abschnitte hinweg beibehält.
Transformer-XL ist ein Transformer-Sprachmodell, das den Kontext über Textabschnitte fester Länge hinweg erhält. Dazu speichert es die verborgenen Zustände des vorherigen Abschnitts zwischen und lässt den nächsten Abschnitt darauf achten. Zihang Dai, Zhilin Yang und Kollegen an der Carnegie Mellon University und bei Google Brain stellten das Modell auf der ACL 2019 in der Arbeit Transformer-XL: Attentive Language Models Beyond a Fixed-Length Context vor. Ein gewöhnlicher Transformer, der mit Abschnitten fester Länge trainiert wird, von denen jeder ein eigenes Kontextfenster darstellt, kann nichts vor dem Anfang seines aktuellen Abschnitts sehen. Dieses Problem bezeichneten die Autoren als Kontextfragmentierung. Transformer-XL lernte Abhängigkeiten, die 80 % länger waren als bei rekurrenten neuronalen Netzen (RNNs) und 450 % länger als bei gewöhnlichen Transformern.
Rekurrenz auf Abschnittsebene#
Bei der Verarbeitung eines Abschnitts fügt jede Schicht die zwischengespeicherten verborgenen Zustände des vorherigen Abschnitts mit denen des aktuellen Abschnitts zusammen. Die Abfragen stammen nur aus dem aktuellen Abschnitt, während sich Schlüssel und Werte auf beide Abschnitte erstrecken. Gradienten werden am Cache angehalten, sodass der Rechenaufwand pro Abschnitt beim Training konstant bleibt. Eine einzelne Attention-Schicht in PyTorch veranschaulicht das Muster:
import torch
from torch import nn
torch.manual_seed(0)
seg_len, dim = 4, 16
attn = nn.MultiheadAttention(dim, num_heads=2, batch_first=True)
hidden = torch.randn(1, 3 * seg_len, dim) # hidden states for three consecutive segments
memory = torch.empty(1, 0, dim) # nothing is cached before the first segment
for i, segment in enumerate(hidden.split(seg_len, dim=1), start=1):
# Queries come from the current segment; keys and values also cover the cached one
context = torch.cat([memory, segment], dim=1)
out, weights = attn(segment, context, context)
print(f"Segment {i}: {weights.shape[1]} queries attend over {weights.shape[2]} positions")
# Cache this segment for the next one; detach() stops gradients as in Transformer-XL
memory = segment.detach()Die vier Abfragen des ersten Abschnitts sehen nur die vier Token dieses Abschnitts. Die Abfragen aller späteren Abschnitte sehen acht Token: ihre eigenen vier und die vier zwischengespeicherten. Da Schicht n eines Abschnitts die zwischengespeicherten Zustände der Schicht n − 1 aus dem vorherigen Abschnitt liest, erweitert sich die Reichweite mit jeder Schicht um einen weiteren Abschnitt – auf etwa N × L Token bei einer Abschnittslänge N und L Schichten:
Der Cache beschleunigt auch die Auswertung. Ein herkömmlicher Transformer, der Token für Token vorhersagt, muss für jedes neue Token ein vollständiges Fenster neu berechnen, während Transformer-XL die zwischengespeicherten Zustände wiederverwendet, wodurch die Auswertung bis zu 1.800+ Mal schneller ablief. Beim Tracking mit Ultralytics YOLO26 tritt dasselbe Fragmentierungsproblem auf, wenn ein Skript ein Video Bild für Bild an model.track() übergibt: persist=True behält den Zustand des Trackers zwischen den Aufrufen bei, sodass jedes Objekt von Bild zu Bild dieselbe ID behält.
Relative Positionskodierung#
Die Wiederverwendung zwischengespeicherter Zustände macht absolute Positionen unbrauchbar: Das erste Token des zwischengespeicherten Abschnitts und das erste Token des aktuellen Abschnitts hätten dieselbe Positions-Einbettung. Transformer-XL berechnet stattdessen jeden Attention-Wert aus dem Inhalt von Abfrage und Schlüssel sowie einer sinusförmigen Kodierung des Abstands zwischen ihnen. Hinzu kommen zwei gelernte Bias-Vektoren, die für alle Positionen gelten: einer für den Inhalt und einer für die Position. Da die Werte nur von den Abständen abhängen, kann das Modell bei der Auswertung auf einen längeren Cache achten, als es beim Training gesehen hat. Auch Rotary Position Embeddings (RoPE), die in den meisten aktuellen großen Sprachmodellen (LLMs) zum Einsatz kommen, machen die Attention-Werte von der relativen Position abhängig.
Ergebnisse und Einfluss#
Transformer-XL erzielte bei fünf Benchmarks neue Spitzenwerte: 0,99 Bit pro Zeichen auf enwik8, 1,08 auf text8 und eine Perplexität von 18,3 auf WikiText-103, 21,8 auf One Billion Word und 54,5 auf Penn Treebank – ohne Feinabstimmung. Ausschließlich mit WikiText-103 trainiert, generierte das Modell recht zusammenhängende neue Artikel mit Tausenden von Token. XLNet, das von mehreren derselben Autoren entwickelt wurde, nutzte die Transformer-XL-Architektur für das Vortraining zum Verstehen natürlicher Sprache. Der Compressive Transformer von DeepMind erweiterte den Cache, indem er ältere Speicher komprimierte, statt sie zu verwerfen.
Transformer-XL im Vergleich zu verwandten Modellen#
- Long Short-Term Memory (LSTM): Aktualisiert Token für Token einen verborgenen Zustand. Informationen aus der ferneren Vergangenheit müssen daher alle dazwischenliegenden Schritte durchlaufen.
- Longformer: Liest ein ganzes Dokument mit 4.096 Token auf einmal mithilfe von Attention mit lokalen Fenstern und globaler Attention, ohne Rekurrenz.
- KV-Cache: Speichert Schlüssel und Werte früherer Token während der Generierung, damit diese nicht erneut berechnet werden müssen. Transformer-XL verwendet seinen Speicher auch beim Training und hält Gradienten an der Abschnittsgrenze an.
- Zustandsraummodelle (SSMs): Komprimieren den gesamten Verlauf in einen Zustand fester Größe.










