← Tous les exercices
Le masque causal
Partie 7 · ★★
Un modèle qui écrit ne doit voir que ce qui est avant : la suite n'existe pas encore. Dans l'attention, un masque causal met à −∞ les scores des tokens qui suivent : leur poids devient nul. Le token i voit les positions 0..i, lui compris : la matrice du masque est triangulaire inférieure.
Complète masque_causal(n) (1 = visible) puis poids_causaux(scores) qui masque chaque ligne avant la softmax (fournie).
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 masque_causal(n): return [[1 if j ___ i else 0 for j in range(n)] for i in range(n)] def poids_causaux(scores): masque = masque_causal(len(scores)) return [softmax([s if m == 1 else ___ for s, m in zip(ligne, masque[i])]) for i, ligne in enumerate(scores)]
Ctrl/⌘+Entrée