Épisode 2 : Q, K, V — Pourquoi 3 matrices et pas une seule ?
Table des matières
La question qui tue
Dans l'épisode précédent, on a dit qu'on "copie 3 fois les embeddings". Mais est-ce toujours le cas ? Et pourquoi 3 copies ?
La réponse courte
Non. Dans les vrais modèles, on utilise 3 matrices de projection différentes (Wq, Wk, Wv) apprises pendant l'entraînement.
Les 3 rôles
Q (Query) = La question
Le modèle projette chaque mot dans un espace où il formule sa "requête". "Banque" génère un Q qui signifie "je cherche des infos sur l'argent".
K (Key) = L'étiquette
Le même mot est projeté dans un AUTRE espace pour créer son étiquette. Cette étiquette répond : "Je suis un mot qui parle d'argent".
V (Value) = La connaissance
C'est ce qu'on transporte réellement. Une 3ème projection indépendante où le réseau stocke ce qui est utile à transmettre.
Pourquoi cette séparation permet d'apprendre ?
Si Q et K étaient identiques, le mot ne saurait pas faire la différence entre chercher et être cherché. Concrètement, la matrice des scores deviendrait symétrique : "volé" donnerait exactement le même score à "pomme" que "pomme" à "volé". Et chaque mot obtiendrait souvent son meilleur score avec lui-même, puisque le produit scalaire d'un vecteur avec lui-même est grand : il se regarderait lui-même plutôt que les autres. En les séparant, le modèle peut ajuster finement ces espaces via la rétropropagation.
Exemple : "Le banquier a volé une pomme"
- "volé" (Q) interroge "pomme" (K) → fort pourcentage d'attention
- Dans V de "pomme", le réseau a stocké "fruit, rouge, comestible"
- Résultat : "volé" comprend qu'il a volé un objet comestible
Un peu de Rust
// Version pédagogique : Q = K = V
let q = embeddings.clone();
let k = embeddings.clone();
let v = embeddings.clone();
// Version réelle : 3 projections
// let q = mat_mul(&embeddings, &w_q);
// let k = mat_mul(&embeddings, &w_k);
// let v = mat_mul(&embeddings, &w_v);
Ce qu'il faut retenir
- Q = cherche, K = répond, V = transporte
- Les vecteurs capturent plusieurs nuances simultanément
À lire ensuite
- Étape 4 sur 7•3 minÉpisode 3 : Embeddings — Absolus au départ, contextuels à l'arrivée
Un embedding, c'est le mot dans l'absolu ou dans son contexte ? Les deux, à des moments différents. Plus les trois détails d'ingénierie autour de l'attention : multi-head, masking et position encoding.
- Étape 5 sur 7•2 minÉpisode 4 : Le Transfer Learning — Réutiliser un savoir existant
- Étape 6 sur 7•2 minÉpisode 5 : Les concepts clés autour du Transfer Learning