Attention
Kunna förklara attention som "viktad summa styrd av likhet", räkna ut attention-vikter för ett litet exempel med Q, K, V, och implementera scaled dot-product attention.
Förkunskaper
Intuition
"Banken låg vid floden." För att förstå banken måste modellen titta på floden. Attention låter varje ord titta på alla andra ord och vikta dem: mycket vikt på det som är relevant, lite på resten. Resultatet är en ny vektor för ordet — en blandning av alla ords information, viktad efter relevans.
Tre roller per ord: Query (vad jag letar efter), Key (vad jag erbjuder), Value (informationen jag skickar vidare). Likhet mellan min query och andras keys ger vikterna; vikterna blandar deras values.
Formellt
Med Q, K, V som matriser (en rad per token, d kolumner):
Attention(Q, K, V) = softmax(QKᵀ / √d) · V
- QKᵀ: skalärprodukt mellan varje query och varje key — en n×n likhetsmatris.
- /√d: skalning så softmax inte blir för spetsig när d är stort.
- softmax radvis: varje rad blir vikter som summerar till 1.
- · V: viktad summa av values.
Q, K, V fås från samma indata X genom tre inlärda matriser: Q = XW_Q, K = XW_K, V = XW_V. Det är self-attention när samma sekvens ger alla tre.
Litet exempel, d = 1: q = 1, keys = (1, 3), values = (10, 20). Poäng = (1, 3); softmax ≈ (0,12, 0,88); utdata ≈ 0,12·10 + 0,88·20 = 18,8.
Kod
import numpy as np
def softmax(z):
e = np.exp(z - z.max(axis=-1, keepdims=True))
return e / e.sum(axis=-1, keepdims=True)
def attention(Q, K, V):
d = Q.shape[-1]
scores = Q @ K.T / np.sqrt(d)
weights = softmax(scores) # (n, n), varje rad summerar till 1
return weights @ V, weights
rng = np.random.default_rng(0)
X = rng.normal(size=(4, 8)) # 4 tokens, 8 dimensioner
WQ, WK, WV = (rng.normal(size=(8, 8)) for _ in range(3))
out, w = attention(X @ WQ, X @ WK, X @ WV)
print(w.sum(axis=1)) # [1. 1. 1. 1.]
Behärskning innebär
- Beräknar attention-vikter med softmax över QKᵀ/√d för ett litet exempel
- Implementerar attention i NumPy/PyTorch och verifierar att vikterna summerar till 1
Logga in för att göra övningarna och bygga upp din behärskning.
Källor
Leder till
Del av målen (25)
- Förstå hur generativ AI fungerar
- Bygg en transformer från grunden
- Kör modeller billigare: kvantisering
- Tolka en språkmodell
- Bygg ett röstgränssnitt
- Frontier Lab — självständigt forskningsprojekt
- Språkmodeller i praktiken
- Bygg ett RAG-system som går att lita på
- Reproducera ett paper
- Evals i praktiken
- Multimodala system
- Finjustera och driva egna modeller
- Generativa modeller i djupet
- Bygg ett NLP-system end-to-end
- Bygg en agent som går att lita på
- Bygg ett minnessystem för en agent
- AI-säkerhet i praktiken
- Finjustera en modell med LoRA
- Ansvarsfull AI i praktiken
- AI i produktion
- AI-tjänst i drift
- Bygg en AI-tjänst som håller i drift
- Djup reinforcement learning
- AI, etik och samhälle
- Statistik för experiment