← Tous les exercices
Le masque de remplissage dans l'attention
Partie 5 · ★★★
Un <rempl> a un embedding [0 ; 0] : son score vaut 0, pas « très bas », donc la softmax lui donnerait un poids à tort. Avant la softmax, on remplace le score des remplissages par −∞ : exp(−∞) = 0, leur poids est exactement nul et les autres poids refont 1.
Cours : phrase « fièvre sans » + un remplissage, masque [1, 1, 0], pour « fièvre » : poids 0,73 ; 0,27 ; 0. Complète attention_masquee (qui renvoie les poids).
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] xr = [[1, 0], [0, 1], [0, 0]] def attention_masquee(i, x, masque): scores = [produit_scalaire(x[i], v) for v in x] scores = [s if m == 1 else ___ for s, m in zip(scores, masque)] return softmax(scores)
Ctrl/⌘+Entrée