← Tous les exercices
Diviser les scores par √d
Partie 5 · ★★★
Quand les vecteurs ont d composantes, le produit scalaire grandit avec d : les scores deviennent grands, la softmax devient presque un « tout ou rien » et ses pentes s'écrasent. La formule des vrais modèles est softmax(Q Kᵀ / √d) V : on divise les scores par la racine carrée de d (pas par d).
Complète poids_scaled(q, cles) : les poids d'un token de requête q sur une liste de clés, avec d = len(q). Les fonctions produit_scalaire et softmax sont fournies.
def produit_scalaire(u, x): return sum(a * b for a, b in zip(u, x)) def softmax(scores): m = max(scores) exps = [math.exp(s - m) for s in scores] total = sum(exps) return [e / total for e in exps] def poids_scaled(q, cles): d = len(q) scores = [produit_scalaire(q, k) / ___ for k in cles] return softmax(scores) q = [1, 1, 1, 1] cles = [[1, 0, 0, 0], [1, 1, 0, 0], [1, 1, 1, 1]]
Ctrl/⌘+Entrée