Attention Mechanism
Der Attention Mechanism ist ein zentrales Konzept moderner KI-Modelle, das es einem neuronalen Netz ermöglicht, beim Verarbeiten einer Eingabe selektiv auf relevante Teile zu fokussieren – ähnlich wie menschliche Aufmerksamkeit.
Was ist der Attention Mechanism?
Der Attention Mechanism wurde 2015 eingeführt und ist heute das Herzstück moderner Sprachmodelle. Er löst ein fundamentales Problem älterer Architekturen (z. B. RNNs): Lange Sequenzen konnten nicht effektiv verarbeitet werden, weil frühe Informationen "vergessen" wurden.
Mit Attention kann ein Modell bei der Verarbeitung jedes Tokens dynamisch gewichten, welche anderen Tokens in der Sequenz relevant sind – unabhängig von deren Position.
Wie funktioniert es?
Die Kernidee basiert auf drei Vektoren, die für jeden Token berechnet werden:
- Query (Q): „Was suche ich?" – Repräsentation des aktuellen Tokens
- Key (K): „Was biete ich an?" – Repräsentation aller anderen Tokens
- Value (V): „Was ist mein Inhalt?" – Der eigentliche Informationsgehalt
Die Aufmerksamkeitsgewichte werden durch das Skalarprodukt von Query und Keys berechnet:
Attention(Q, K, V) = softmax(QKᵀ / √dₖ) · V
Das Ergebnis: Ein gewichteter Durchschnitt der Value-Vektoren – Tokens, die für den aktuellen Kontext relevant sind, erhalten höheres Gewicht.
Self-Attention vs. Cross-Attention
| Typ | Beschreibung | Einsatz |
|---|---|---|
| Self-Attention | Tokens einer Sequenz beachten sich gegenseitig | Encoder & Decoder |
| Cross-Attention | Tokens beachten eine andere Sequenz | z. B. Encoder→Decoder in Übersetzungsmodellen |
Multi-Head Attention
In der Praxis werden mehrere Attention-Heads parallel verwendet. Jeder Head lernt unterschiedliche Beziehungen (Syntax, Semantik, Koreferenzen etc.):
import torch
import torch.nn as nn
# PyTorch Multi-Head Attention
mha = nn.MultiheadAttention(
embed_dim=512, # Embedding-Größe
num_heads=8, # 8 parallele Attention-Heads
dropout=0.1,
batch_first=True
)
# Eingabe: (batch_size, seq_len, embed_dim)
x = torch.randn(2, 10, 512) # 2 Sequenzen, je 10 Tokens
output, attn_weights = mha(x, x, x) # Query=Key=Value → Self-Attention
print(output.shape) # torch.Size([2, 10, 512])
print(attn_weights.shape) # torch.Size([2, 10, 10])
Warum ist das für Entwickler wichtig?
- Context Window: Die Attention-Berechnung skaliert quadratisch mit der Sequenzlänge (
O(n²)) – das ist der Grund, warum Context Windows begrenzt sind und längere Kontexte teurer in der Inferenz sind. - Interpretierbarkeit: Attention-Gewichte können (eingeschränkt) visualisiert werden, um zu verstehen, welche Tokens das Modell als relevant erachtet.
- Optimierungen: Techniken wie Flash Attention oder Sparse Attention reduzieren den Speicher- und Rechenaufwand für lange Sequenzen erheblich.
Praxisrelevanz
Als Entwickler begegnest du dem Attention Mechanism indirekt täglich: Er bestimmt, wie gut ein LLM lange Dokumente versteht, ob Anweisungen aus dem System Prompt über viele Tokens hinweg "erinnert" werden und wie präzise RAG-Ergebnisse in die Antwort integriert werden.
Verwandte Begriffe
Inhouse statt Nachschlagewerk
Für den Transfer ins Unternehmen sind die Inhouse-Schulungen der passende nächste Schritt.