Transformer
Ein Transformer ist ein neuronales Netzwerk auf Basis von Self-Attention, das eine ganze Sequenz parallel verarbeitet. Erfahre, wie Transformer funktionieren, welche Varianten es gibt und wie sie in der Bildverarbeitung eingesetzt werden.
Ein Transformer ist eine Architektur für neuronale Netze, die Sequenzen aus Token verarbeitet, etwa Wörter oder Bildausschnitte. Dabei kann jedes Token über Self-Attention Informationen von jedem anderen Token beziehen. Google-Forscher stellten die Architektur 2017 in Attention Is All You Need für die maschinelle Übersetzung vor. Frühere rekurrente neuronale Netze (RNNs) verarbeiteten Sätze Wort für Wort, sodass das Training nicht parallel über die Positionen hinweg ausgeführt werden konnte. Der Transformer verarbeitet alle Positionen gleichzeitig. Sein Basismodell erreichte nach zwölf Stunden Training auf acht GPUs eine Spitzenleistung bei der Übersetzung vom Englischen ins Deutsche. Transformer bilden heute die Grundlage für große Sprachmodelle (LLMs), Vision Transformer, Spracherkennung sowie viele Modelle zur Objekterkennung und Bildgenerierung.
So funktionieren Transformer#
Eingabe-Token werden zunächst in Einbettungen umgewandelt, also Vektoren fester Breite (512 im ursprünglichen Modell). Anschließend wendet ein Transformer mehrere identische Schichten an, die jeweils aus zwei Unterschichten bestehen:
- Multi-Head-Self-Attention: Jedes Token erzeugt einen Query-, einen Key- und einen Value-Vektor. Die Ausgabe eines Tokens ist ein gewichteter Durchschnitt aller Value-Vektoren. Die Gewichtung hängt davon ab, wie gut sein Query zu jedem Key passt, wie im Attention-Mechanismus beschrieben. Mehrere Köpfe arbeiten parallel – im ursprünglichen Modell waren es acht –, sodass sie unterschiedliche Beziehungen erfassen können.
- Feedforward-Netz: Ein zweischichtiges Netz, das separat auf jedes Token angewendet wird und die von der Attention gesammelten Informationen transformiert.
Eine Residualverbindung umschließt jede Unterschicht, und die Schichtnormalisierung stabilisiert die Aktivierungen. Das ursprüngliche Modell stapelte sechs solcher Schichten in einem Encoder, der den Ausgangssatz einliest, und sechs in einem Decoder, der die Übersetzung Token für Token erzeugt. Jede Decoderschicht ergänzt einen maskierten Self-Attention-Schritt, der zukünftige Token ausblendet, sowie einen Cross-Attention-Schritt, der die Ausgabe des Encoders einliest:
Attention vergleicht Token ausschließlich anhand ihres Inhalts. Daher hat eine Transfomerschicht kein eingebautes Verständnis für die Reihenfolge: Werden die Eingabe-Token vertauscht, werden lediglich die Ausgaben entsprechend umsortiert. Positionsinformationen werden deshalb zu den Token-Einbettungen hinzugefügt: durch feste Sinus- und Kosinusmuster im Originalartikel, gelernte Positionsvektoren in BERT und ViT oder durch rotierende Positionseinbettungen (RoPE) in den meisten aktuellen LLMs. Dieser PyTorch-Code veranschaulicht den Effekt mit einer Encoderschicht:
import torch
from torch import nn
# Eine Transformer-Encoderschicht und eine Sequenz aus 5 Token-Einbettungen
torch.manual_seed(0)
layer = nn.TransformerEncoderLayer(d_model=32, nhead=4, batch_first=True).eval()
tokens = torch.randn(1, 5, 32)
reverse = torch.arange(4, -1, -1)
# Self-Attention allein berücksichtigt die Reihenfolge nicht: Durch Umkehren der Eingabe wird nur die Ausgabe umgekehrt
print(torch.allclose(layer(tokens[:, reverse])[:, reverse], layer(tokens), atol=1e-5))
# Ein gelernter Vektor pro Position sorgt dafür, dass jede Ausgabe davon abhängt, an welcher Stelle sich ihr Token befindet
positions = nn.Embedding(5, 32).weight
reordered = layer(tokens[:, reverse] + positions)[:, reverse]
print(torch.allclose(reordered, layer(tokens + positions), atol=1e-5))Es gibt True und anschließend False aus: Solange keine Positionsvektoren hinzugefügt werden, kehrt das Umkehren der Token lediglich die Ausgaben um. Danach verändert die Reihenfolge der Token die Ausgabe jedes Tokens.
Encoder-, Decoder- und Encoder-Decoder-Modelle#
Die drei Arten, den ursprünglichen Aufbau zu nutzen, dienen unterschiedlichen Zwecken:
- Nur Encoder: Jedes Token berücksichtigt die gesamte Eingabe in beide Richtungen. Das eignet sich für Aufgaben zum Sprachverständnis. BERT für Text und ViT für Bilder verwenden nur einen Encoder.
- Nur Decoder: Jedes Token berücksichtigt nur die vorhergehenden Token, sodass das Modell Text Token für Token erzeugt. GPT-Modelle und die meisten aktuellen LLMs verwenden diesen Aufbau.
- Encoder-Decoder: Ein Encoder liest eine Sequenz ein, und ein Decoder erzeugt eine andere, während er die erste berücksichtigt – wie bei Übersetzungsmodellen, T5 und dem Spracherkennungssystem Whisper.
Transformer in der Bildverarbeitung#
Der Vision Transformer (ViT) behandelt ein Bild als Sequenz aus Bildausschnitten von 16×16 Pixeln und verwendet einen unveränderten Transformer-Encoder. Der Swin Transformer beschränkt die Attention auf lokale Fenster, damit sich hochauflösende Bilder verarbeiten lassen. DETR formulierte die Objekterkennung als Mengenvorhersage neu: Ein Transformer-Decoder wandelt eine feste Menge gelernter Objektabfragen in Boxen um, wobei jede Abfrage einem Objekt entspricht. Dadurch entfallen Non-Maximum-Suppression (NMS) und von Hand entworfene Anker. Das Ultralytics-Paket führt Baidus RT-DETR aus, eine Echtzeitvariante dieses Aufbaus. Deren hybrider Encoder wendet eine Transformer-Encoderschicht nur auf die Merkmalskarte mit Stride 32 an – das sind 400 Token bei einem Bild mit 640×640 Pixeln. Der sechsschichtige Decoder verfeinert 300 Objektabfragen zu endgültigen Erkennungen, ohne NMS zu verwenden. Transformer generieren auch Bilder: Diffusion-Transformer haben das U-Net in neueren Text-zu-Bild- und Videomodellen ersetzt. Vision-Language-Modelle speisen Bild-Token in ein LLM ein, das nur einen Decoder verwendet.
Transformer und verwandte Architekturen im Vergleich#
- Faltungsneuronale Netze (CNNs): Eine Faltung betrachtet eine kleine Nachbarschaft und verwendet an jeder Position denselben Filter – eine eingebaute Annahme, die bei kleinen Datensätzen hilft. Attention kann innerhalb einer Schicht beliebige Positionen miteinander verknüpfen, muss räumliche Strukturen jedoch aus Daten lernen. Daher benötigen Transformer meist mehr Trainingsdaten oder ein Vortraining, um CNNs zu übertreffen.
- RNNs und LSTMs: Sie führen einen Zustand fester Größe von Schritt zu Schritt fort. Der Speicherbedarf pro Token bleibt daher konstant, das Training erfolgt jedoch sequenziell. Ein Transformer behält jedes vorherige Token verfügbar und trainiert parallel.
- Zustandsraummodelle: Architekturen wie Mamba verarbeiten Sequenzen mit einem rekurrenten Zustand, dessen Aufwand linear mit der Sequenzlänge wächst. Hybride Modelle kombinieren sie abwechselnd mit Attention-Schichten.
Self-Attention vergleicht jedes Token mit jedem anderen Token, daher wächst ihr Aufwand quadratisch mit der Sequenzlänge. Bei einer Sequenz aus 4.096 Token gibt es in jedem Kopf jeder Schicht etwa 16,8 Millionen Query-Key-Paare. Verdoppelt sich die Länge auf 8.192 Token, vervierfacht sich die Zahl auf etwa 67 Millionen. FlashAttention reduziert den Speicherverkehr bei dieser Berechnung. Der KV-Cache speichert Keys und Values früherer Token, damit der Decoder sie während der Generierung nur einmal berechnen muss.










