Attention-Mechanismus

Wenn ein Sprachmodell einen Satz verarbeitet, muss es entscheiden, welche Wörter für die Bedeutung eines bestimmten Wortes relevant sind. Der Attention-Mechanismus ist das Rechenverfahren, das diese Relevanz als Zahlenwerte berechnet.

Jedes Wort in einem Satz steht in Beziehung zu anderen Wörtern. Manche Beziehungen sind eng (Subjekt und Verb), andere lose (zwei Adjektive in verschiedenen Nebensätzen). Der Attention-Mechanismus quantifiziert diese Beziehungen. Er erzeugt für jedes Wortpaar einen numerischen Wert, der angibt, wie stark ein Wort bei der Verarbeitung eines anderen Wortes berücksichtigt werden soll. Diese Werte steuern den Informationsfluss innerhalb eines Transformer-Modells.

Die Grundidee: Relevanz als Rechenoperation

Klassische Sprachverarbeitungssysteme behandelten jedes Wort nacheinander. Das bedeutete, dass ein Wort am Anfang eines langen Satzes seine Information durch viele Verarbeitungsschritte weitergeben musste, bis es am Ende ankam. Dabei ging Information verloren. Der Attention-Mechanismus löst dieses Problem, indem er jedes Wort direkt mit jedem anderen Wort vergleicht.

Beispiel: Im Satz "Die Katze, die auf der Matte saß, war müde" muss das Modell erkennen, dass "müde" sich auf "Katze" bezieht und nicht auf "Matte". Der Attention-Mechanismus berechnet dafür einen hohen Wert zwischen "müde" und "Katze" und einen niedrigen Wert zwischen "müde" und "Matte".

Das Prinzip ähnelt einem selektiven Filter: Aus allen verfügbaren Informationen wird die relevante herausgefiltert, während irrelevante Informationen abgeschwächt werden. Die Stärke des Filters wird nicht manuell festgelegt, sondern aus den Daten gelernt.

Beispiel: Bei der maschinellen Übersetzung von "The bank of the river" ins Deutsche muss das Modell entscheiden, ob "bank" als "Ufer" oder "Bank" zu übersetzen ist. Der Attention-Mechanismus weist dem Wort "river" einen hohen Attention-Wert zu und liefert damit den Kontext für die korrekte Übersetzung.

Query, Key und Value: Drei Rollen pro Wort

Der Attention-Mechanismus ordnet jedem Token drei verschiedene Vektoren zu. Diese Vektoren entstehen durch Multiplikation des Embedding-Vektors mit drei gelernten Gewichtsmatrizen.

Beispiel: Beim Verarbeiten des Wortes "programmiert" in "Sie programmiert den Algorithmus" sendet "programmiert" seinen Query-Vektor aus. Dieser wird mit den Key-Vektoren aller anderen Wörter verglichen. Der Key-Vektor von "Sie" erzeugt einen hohen Übereinstimmungswert (weil Subjekt und Verb stark zusammenhängen). Daraufhin fließt der Value-Vektor von "Sie" verstärkt in die neue Repräsentation von "programmiert" ein.

Die drei Matrizen (W_Q, W_K, W_V) sind Parameter, die während des Trainings angepasst werden. Sie bestimmen, welche Aspekte eines Tokens als Query, Key oder Value dienen. Ein Modell mit 768-dimensionalen Embeddings und 64-dimensionalen Attention-Vektoren hat pro Attention-Kopf drei Matrizen der Größe 768 × 64.

Beispiel: In einem Frage-Antwort-System verarbeitet das Modell die Frage "Wann wurde Python veröffentlicht?" zusammen mit einem Textabschnitt. Die Query-Vektoren der Frage-Tokens suchen nach passenden Key-Vektoren im Text. Tokens wie "1991" und "veröffentlicht" im Textabschnitt erzeugen hohe Übereinstimmungswerte mit den Query-Vektoren der Frage.

Scaled Dot-Product Attention: Die Kernberechnung

Die konkrete Berechnung folgt einer präzisen Formel. Für eine Sequenz von n Tokens mit Key-Dimension d_k gilt:

Attention(Q, K, V) = softmax(Q * K^T / sqrt(d_k)) * V

Der Ablauf besteht aus vier Schritten:

  1. Das Skalarprodukt zwischen Query- und Key-Vektoren berechnen (ergibt eine n × n-Matrix).
  2. Jeden Wert durch die Wurzel der Key-Dimension teilen (Skalierung).
  3. Die Softmax-Funktion zeilenweise anwenden (erzeugt Wahrscheinlichkeitsverteilungen).
  4. Die resultierenden Gewichte mit den Value-Vektoren multiplizieren.

Beispiel: Bei einer Sequenz von 10 Tokens mit d_k = 64 entsteht im ersten Schritt eine 10 × 10-Matrix mit 100 Rohwerten. Ohne Skalierung lägen diese Werte im Bereich von etwa -50 bis +50 (da Skalarprodukte mit der Dimension wachsen). Die Division durch sqrt(64) = 8 bringt sie in den Bereich von -6 bis +6, wo die Softmax-Funktion noch differenzierte Gradienten liefert.

Die Skalierung ist kein optionaler Schritt. Ohne sie konzentriert die Softmax-Funktion fast das gesamte Gewicht auf den höchsten Wert. Die Gradienten werden extrem klein, das Training stagniert.

Fachliche Einordnung: Die Skalierung durch sqrt(d_k) geht auf Vaswani et al. (2017) zurück. Sie kompensiert den Effekt, dass das Skalarprodukt zweier Zufallsvektoren der Dimension d eine Varianz proportional zu d hat. Durch die Division wird die Varianz auf 1 normalisiert, unabhängig von der gewählten Dimension.

Query-Matrixn × d_k
Key-Matrixn × d_k
Value-Matrixn × d_v
SkalarproduktQ * K^T → n × n
Skalierung/ sqrt(d_k)
SoftmaxZeilenweise Normalisierung
AusgabeGewichtete Summe

Wenn ein Wort sich selbst im Kontext betrachtet

Bei Self-Attention stammen Query, Key und Value aus derselben Sequenz. Jedes Token vergleicht sich mit allen anderen Tokens der gleichen Eingabe. Das Ergebnis ist eine kontextabhängige Repräsentation: Dasselbe Wort erhält unterschiedliche Repräsentationen je nach umgebendem Text.

Beispiel: Das Wort "Bank" in "Ich sitze auf der Bank" erhält durch Self-Attention eine andere Repräsentation als in "Die Bank erhöht den Zinssatz". Im ersten Fall fließen die Value-Vektoren von "sitze" und "auf" verstärkt ein, im zweiten Fall die von "Zinssatz" und "erhöht".

Self-Attention ist der zentrale Mechanismus in Encoder-Modellen wie BERT. Dort verarbeitet jede Schicht die gesamte Sequenz parallel. Die Berechnung erfordert keinen sequentiellen Durchlauf, was die Parallelisierung auf GPUs ermöglicht.

Beispiel: Ein Textklassifikations-Modell analysiert die Produktbewertung "Schnelle Lieferung, aber das Produkt war defekt". Self-Attention erkennt, dass "defekt" das semantische Gewicht der gesamten Bewertung dominiert, obwohl "Schnelle Lieferung" positiv ist. Die Attention-Gewichte von "defekt" auf "Produkt" und "war" sind hoch, während "Lieferung" niedrige Gewichte erhält.

Mehrere Attention-Köpfe: Parallele Perspektiven

Ein einzelner Attention-Kopf kann nur eine Art von Beziehung gleichzeitig modellieren. Multi-Head Attention löst diese Einschränkung, indem mehrere Attention-Köpfe parallel arbeiten. Jeder Kopf hat eigene Q-, K- und V-Matrizen und kann sich auf unterschiedliche Beziehungstypen spezialisieren.

Beispiel: In dem Satz "Der Entwickler, der das Framework geschrieben hat, testet die API" könnte ein Attention-Kopf die syntaktische Beziehung zwischen "Entwickler" und "testet" erfassen (Subjekt-Verb). Ein anderer Kopf könnte die Beziehung zwischen "Entwickler" und "geschrieben" modellieren (Relativsatz). Ein dritter Kopf könnte die Beziehung zwischen "testet" und "API" fokussieren (Verb-Objekt).

Die Ausgaben aller Köpfe werden konkateniert und durch eine weitere lineare Transformation auf die ursprüngliche Dimension projiziert. Bei BERT-base gibt es 12 Attention-Köpfe pro Schicht, bei BERT-large 16. Die Dimension pro Kopf ist die Gesamtdimension geteilt durch die Anzahl der Köpfe: Bei BERT-base mit 768 Dimensionen hat jeder Kopf 64 Dimensionen.

Beispiel: Bei der Analyse von Quellcode verarbeitet ein Modell die Zeile result = calculate_sum(data, weights). Ein Attention-Kopf kann sich auf die Beziehung zwischen Variablenname und Funktionsaufruf konzentrieren ("result" und "calculate_sum"). Ein anderer Kopf erfasst die Parameter-Beziehung ("calculate_sum" und "data", "weights").

Fachliche Einordnung: Die Spezialisierung der Köpfe entsteht emergent während des Trainings. Analysen zeigen, dass bestimmte Köpfe konsistent syntaktische Beziehungen abbilden, während andere semantische oder positionelle Muster erfassen. Nicht alle Köpfe sind gleich wichtig: Pruning-Studien belegen, dass einzelne Köpfe ohne signifikanten Leistungsverlust entfernt werden können.

Attention zwischen zwei Sequenzen

Cross-Attention verbindet zwei unterschiedliche Sequenzen. Die Queries stammen aus einer Sequenz, die Keys und Values aus einer anderen. Dieses Verfahren ist zentral für Aufgaben, bei denen ein Modell eine Eingabe in eine Ausgabe transformiert.

Beispiel: Bei der maschinellen Übersetzung eines englischen Satzes ins Deutsche erzeugt der Encoder Repräsentationen des englischen Satzes (Keys und Values). Der Decoder generiert Wörter des deutschen Satzes und nutzt seine Queries, um auf die relevanten Teile des englischen Satzes zuzugreifen. Beim Erzeugen des deutschen Wortes "Programmiersprache" zeigt die Cross-Attention hohe Gewichte auf die englischen Tokens "programming" und "language".

In Encoder-Decoder-Architekturen enthält jede Decoder-Schicht typischerweise drei Blöcke: maskierte Self-Attention (über die bisherige Ausgabe), Cross-Attention (auf die Encoder-Ausgabe) und ein Feed-Forward-Netzwerk.

Beispiel: Ein Textzusammenfassungs-Modell komprimiert einen 500-Wörter-Artikel auf 50 Wörter. Während der Zusammenfassung greift der Decoder über Cross-Attention gezielt auf die informativsten Sätze des Originals zu. Die Attention-Verteilung zeigt, welche Abschnitte des Originals in die Zusammenfassung eingeflossen sind.

Rechenaufwand und Skalierung

Der Attention-Mechanismus hat einen Rechenaufwand von O(n² * d), wobei n die Sequenzlänge und d die Dimension ist. Das quadratische Wachstum mit der Sequenzlänge ist der zentrale Engpass für lange Texte.

Beispiel: Eine Sequenz von 512 Tokens erzeugt eine Attention-Matrix mit 262.144 Einträgen. Bei 2.048 Tokens sind es bereits 4.194.304 Einträge. Bei 32.768 Tokens (ein mittellanges Dokument) ergibt das über eine Milliarde Einträge pro Attention-Kopf und Schicht.

Jeder Eintrag in der Attention-Matrix belegt Speicher auf der GPU. Bei Modellen mit 32 Schichten und 32 Köpfen pro Schicht wird die Attention-Matrix zum dominierenden Speicherverbraucher. Das begrenzt die maximale Sequenzlänge, die ein Modell verarbeiten kann.

Verschiedene Ansätze reduzieren diesen Aufwand:

Beispiel: Flash Attention von Dao et al. (2022) nutzt die Hierarchie des GPU-Speichers (SRAM vs. HBM) aus. Statt die gesamte n × n-Matrix zu materialisieren, berechnet es Attention blockweise. Bei einer Sequenzlänge von 4.096 Tokens reduziert das den Speicherbedarf um den Faktor 5 bis 20 gegenüber der Standardimplementierung.

Was Attention-Muster sichtbar machen

Die Attention-Gewichte können als Matrix visualisiert werden. Jede Zeile entspricht einem Query-Token, jede Spalte einem Key-Token. Hohe Werte erscheinen als helle Felder, niedrige als dunkle.

Beispiel: Bei der Analyse des Satzes "Der Server, der in Frankfurt steht, verarbeitet die Anfragen" zeigt die Attention-Matrix hohe Werte entlang der Diagonale (jedes Wort beachtet sich selbst) und zusätzlich hohe Werte zwischen "Server" und "verarbeitet" (Subjekt-Verb über den Relativsatz hinweg).

Solche Visualisierungen dienen der Forschung und dem Debugging, haben aber Grenzen als Erklärungswerkzeug. Die Attention-Gewichte zeigen, welche Tokens mathematisch gewichtet wurden. Sie zeigen nicht, warum das Modell eine bestimmte Entscheidung getroffen hat. Die Gewichte einer einzelnen Schicht und eines einzelnen Kopfes bilden nur einen Bruchteil des gesamten Entscheidungsprozesses ab.

Beispiel: Ein Modell klassifiziert die E-Mail "Herzlichen Glückwunsch, Sie haben gewonnen! Klicken Sie hier" korrekt als Spam. Die Attention-Muster zeigen hohe Gewichte auf "gewonnen" und "Klicken". Das bedeutet allerdings nicht, dass das Modell diese Wörter als Spam-Indikatoren "verstanden" hat. Die eigentliche Entscheidungslogik verteilt sich über alle Schichten, Attention-Köpfe und Feed-Forward-Schichten.

Grenzen und offene Probleme

Der Attention-Mechanismus hat strukturelle Einschränkungen, die aktive Forschungsgebiete definieren.

Die quadratische Komplexität bleibt trotz Optimierungen ein Problem. Sparse- und Linear-Attention-Varianten erreichen in der Praxis oft nicht die gleiche Qualität wie volle Attention. Flash Attention beschleunigt die Berechnung, ändert aber die O(n²)-Komplexität nicht.

Beispiel: Ein Modell soll ein 200-seitiges Vertragsdokument analysieren. Bei 100.000 Tokens würde die volle Attention-Matrix 10 Milliarden Einträge erfordern. Praktisch werden solche Dokumente daher in überlappende Segmente unterteilt, was den Informationsfluss zwischen entfernten Abschnitten einschränkt.

Die Interpretierbarkeit der Attention-Gewichte ist begrenzt. Studien von Jain und Wallace (2019) zeigen, dass alternative Attention-Verteilungen zu identischen Vorhersagen führen können. Die Gewichte sind somit keine zuverlässige Erklärung für das Modellverhalten.

Attention-Mechanismen haben keine eingebaute Repräsentation der Wortposition. Ohne zusätzliche Positionskodierung (z.B. sinusförmige oder rotarische Embeddings) behandelt der Mechanismus die Eingabe als ungeordnete Menge. Die Qualität der Positionskodierung beeinflusst direkt die Fähigkeit, positionsabhängige Muster zu erkennen.

Fachliche Einordnung: Aktuelle Forschung untersucht Alternativen zum Standard-Attention-Mechanismus. State-Space-Modelle wie Mamba (Gu und Dao, 2023) erreichen lineare Komplexität bei vergleichbarer Leistung auf bestimmten Benchmarks. Hybridarchitekturen kombinieren Attention-Schichten mit State-Space-Schichten. Ob Attention als dominierender Mechanismus bestehen bleibt oder durch effizientere Verfahren abgelöst wird, ist Gegenstand laufender Forschung.


Karl Kratz · 15.05.2025 (aktualisiert 03.04.2026)

Technologie Künstliche Intelligenz Deep Learning