Eine gewichtete Kombination von Vektoren
Self-Attention bildet jede Eingangsrepräsentation mit gelernten Projektionen auf Query, Key und Value ab. Für eine Position wird ihre Query mit den Keys verglichen. Die Scores werden skaliert, gegebenenfalls maskiert und mit Softmax normiert. Diese Gewichte kombinieren die Values zu einem kontextuellen Vektor dieser Position.
Query (Q)
Der projizierte Vektor, der für die gewählte Position die Keys bewertet.
Key (K)
Der projizierte Vektor jeder möglichen Bezugsposition. Ein Skalarprodukt vergleicht ihn mit der Query.
Value (V)
Die projizierte Information, die entsprechend dem Attention-Gewicht kombiniert wird. Der Key bestimmt ein Gewicht; der Value trägt zur Ausgabe bei.
Einen Attention-Head ausrechnen
Das Beispiel enthält drei Wörter. Jedes Wort wird hier als ein Token behandelt. Eingangsvektoren und Projektionsgewichte sind für einfache Rechnungen gewählt und nicht aus Sprache gelernt. Die Attention-Gewichte und die Ausgabe werden daraus berechnet.
Feste Projektionen (Zeilenvektoren: Q = XWQ, K = XWK, V = XWV)
WQ
[1.00, 0.50]
[0.00, 1.00]
WK
[0.50, 1.00]
[1.00, 0.00]
WV
[1.00, -1.00]
[0.50, 1.00]
3. Alle Token-Vektoren ansehen
| Token | x | Q | K | V |
|---|---|---|---|---|
| Die | [1.00, 0.00] | [1.00, 0.50] | [0.50, 1.00] | [1.00, -1.00] |
| Katze | [0.00, 1.00] | [0.00, 1.00] | [1.00, 0.00] | [0.50, 1.00] |
| schläft | [1.00, 1.00] | [1.00, 1.50] | [1.50, 1.00] | [1.50, 0.00] |
4. Skalarprodukt → Skalierung → Maske → Softmax
Die ausgewählte Query bewertet jeden Key. Danach wird durch √dₖ geteilt, verbotene Positionen werden auf −∞ gesetzt und Softmax wird auf die Zeile angewendet. Die Gewichte summieren sich zu 1; maskierte Positionen tragen null bei.
| Token | Q · K | ÷ √2 | Attention-Gewicht | Gewicht × V |
|---|---|---|---|---|
| Die | 1.000 | 0.707 | 0.670 | [0.67, -0.67] |
| Katze | 0.000 | 0.000 | 0.330 | [0.17, 0.33] |
| schläft | 1.000 | −∞ | 0.000 | [0.00, 0.00] |
5. Gewichtete Values summieren
Σⱼ aⱼVⱼ = [0.83, -0.34]
Die Ausgabe ist ein kontextueller Vektor dieser Position, keine Next-Token-Wahrscheinlichkeit. Weitere Projektionen und Layer verarbeiten ihn. Ein großes Attention-Gewicht allein belegt weder Grammatik noch Wichtigkeit oder eine kausale Erklärung der Modellantwort.
Ein Head in Matrixschreibweise
Attention(Q,K,V) = softmax(QKᵀ / √dₖ + M) V
Q und K haben die Breite dₖ. Ihre Skalarprodukte ergeben einen Score pro Query-Key-Paar. Die Skalierung mit √dₖ kontrolliert die Scoregröße. Softmax wird zeilenweise über erlaubte Keys berechnet. M enthält 0 für erlaubte und −∞ für maskierte Positionen.
Die Sichtbarkeit hängt von der Aufgabe ab
Ein kausaler Decoder maskiert zukünftige Tokens, damit das Training die vorherzusagende Antwort nicht vorab verrät. Ein bidirektionaler Encoder kann Positionen auf beiden Seiten nutzen. Padding-Masken und andere Attention-Muster schränken die Sicht zusätzlich ein. Die Maske entscheidet über verfügbare Positionen; sie weist Heads keine sprachlichen Aufgaben zu.
Was wächst quadratisch?
Vollständige dichte Attention berechnet beim Prefill n² Query-Key-Scores pro Head. Die Tabelle zählt Scores, keine gesamten Rechenoperationen. Skalarprodukte hängen zusätzlich von der Head-Breite ab; Modelle besitzen mehrere Heads und Layer. Der gezeigte Speicher betrifft nur eine vollständig gespeicherte Scorematrix mit zwei Bytes pro Element.
| Sequenzlänge | Score-Einträge pro Head | Naiver Score-Speicher |
|---|---|---|
| 4.096 Tokens | 16.777.216 | 32 MiB |
| 8.192 Tokens | 67.108.864 | 128 MiB |
| 16.384 Tokens | 268.435.456 | 512 MiB |
Speichereffiziente Attention
FlashAttention organisiert exakte Attention in Blöcken. Dadurch sinken Transfers zwischen GPU-Speicherebenen, und die vollständige n × n-Scorematrix muss nicht gespeichert werden. Die dichte Attention-Rechnung wird dadurch nicht linear. Geschwindigkeits- und Speichergewinne hängen von Dimensionen, Präzision, Kernels und Hardware ab. Decoding eines einzelnen Tokens mit Cache hat eine andere Arbeitslast: Eine Query liest die vorhandenen Keys und Values.
Attention-Gewichte allein erklären keine Antwort
Die Gewichte beschreiben eine Operation in einem Head und Layer. Andere Heads, Value-Vektoren, Residualpfade und spätere Rechnungen beeinflussen die Antwort ebenfalls. Eine auffällige Verbindung belegt nicht, dass ein Wort die finale Entscheidung verursacht. Heads haben auch keine dauerhaft festgelegten Grammatik- oder Faktenaufgaben.