# Exercices corrigés — Attention linéaire et mémoire matricielle fixe

**Consigne générale:** chaque réponse doit montrer les données, la transformation, le résultat, une vérification et une limite. Un nombre seul ou une définition recopiée ne suffit pas.

> **Données de départ:** Avec S nul, k=[1,0] et v=[2,3], l’écriture donne [[2,3],[0,0]]. Une requête q=[1,0] lit [2,3]. Tenter d’ajouter une clé [1,0,2] de dimension 3 révèle aussi pourquoi les contrôles de forme sont obligatoires.
>
> **Frontière à conserver:** Mémoire fixe ne signifie ni mémoire parfaite ni contexte infini : capacité et interférence restent bornées.

## Exercice 1 — Trace calculée — Fondations matricielles

Reproduisez puis commentez la chaîne `q·k=Σqᵢkᵢ`. Dans l’écriture k=[1,0], remplacez v=[2,3] par v=[2,4;3]. Recalculez S puis la lecture avec q=[1,0].

**Livrable:** un tableau données → opération → résultat → interprétation, plus deux phrases sur la valeur modifiée.

<details><summary>Solution guidée</summary>

Avec S nul, k=[1,0] et v=[2,3], l’écriture donne [[2,3],[0,0]]. Une requête q=[1,0] lit [2,3]. Tenter d’ajouter une clé [1,0,2] de dimension 3 révèle aussi pourquoi les contrôles de forme sont obligatoires.

**Variante résolue:** S devient [[2,4;3],[0;0]] et qᵀS lit [2,4;3]. Seule la première coordonnée de la valeur écrite change; la structure de sélection par k et q reste identique.

Un vecteur est une liste ordonnée de d nombres ; une matrice organise lignes et colonnes (d_k × d_v). Les dimensions dictent les multiplications valides : ici k(2) et v(2) fabriquent S(2×2), et une clé [1;0;2] de dimension 3 est refusée avant tout calcul. Le produit scalaire résume l’alignement en un nombre : q·k = Σqᵢkᵢ. Ici q=[1,0] contre k=[1,0] donne 1 (aligné) ; contre k=[0,1] il donne 0 (orthogonal). C’est le mécanisme d’adressage : fort = concerné, nul = ignoré. La vérification minimale consiste à contrôler les dimensions, le signe et l’ordre de grandeur. Si la variation obtenue contredit la prédiction, localiser la première opération qui change de sens au lieu de corriger seulement la dernière ligne.

</details>

### Barème Exercice 1 — /10

| Critère | Points |
|---|---:|
| Données et formes explicites | 2 |
| Calcul traçable | 3 |
| Prédiction avant variation | 2 |
| Interprétation et vérification | 2 |
| Limite nommée | 1 |

## Exercice 2 — Diagnostic d’une explication séduisante — Produit extérieur

Un collègue affirme: « Produit extérieur prouve que le système sera exact, rapide et stable dans tous les contextes. »

1. Séparez mécanisme, hypothèse, observation et conclusion.
2. Citez deux éléments corrects de la leçon et deux extrapolations non justifiées.
3. Proposez une expérience bornée avec variable contrôlée, métrique et seuil d’arrêt.
4. Réécrivez l’affirmation en une phrase défendable.

<details><summary>Solution argumentée</summary>

Le produit extérieur k vᵀ fabrique une matrice : la ligne est sélectionnée par k, le contenu est porté par v. Pour k=[1,0] et v=[2,3] : k vᵀ = [[2,3],[0,0]] — la valeur est rangée sur la ligne 1, la ligne 2 reste vierge. L’écriture s’accumule : S ← S + k vᵀ. La lecture est une multiplication : y = qᵀS. La requête q=[1,0] sélectionne la ligne 1 et lit [2,3] exactement ; q=[0,1] lit [5,1]. Rien n’est parcouru : une seule opération, quelle que soit la longueur du passé. Mémoire fixe ne signifie ni mémoire parfaite ni contexte infini : capacité et interférence restent bornées.

L’affirmation mélange une relation locale et une garantie globale. Une version défendable décrit seulement le mécanisme observé, les conditions du test et la métrique relevée. Le test doit s’arrêter si les formes deviennent invalides, si la métrique se dégrade au-delà du seuil annoncé ou si une autre variable a changé.

</details>

### Barème Exercice 2 — /10

2 points par élément : séparation, ancrage dans la leçon, extrapolations, protocole, reformulation.

## Exercice 3 — Décision d’architecture et transfert — Mémoire fixe

Vous devez reproduire le cas guidé « Avec S nul, k=[1,0] et v=[2,3], l’écriture donne [[2,3],[0,0]]. Une requête q=[1,0] lit [2,3]. Tenter d’ajouter une clé [1,0,2] de dimension 3 révèle aussi pourquoi les contrôles de forme sont obligatoires. » dans deux conditions. Option A utilise la chaîne complète jusqu’à « Mémoire fixe ». Option B est une référence transparente qui conserve « Fondations matricielles », calcule directement la sortie attendue et n’utilise pas le mécanisme de compression ou d’ajustement étudié. Construisez une fiche de décision comportant:

- la charge et la contrainte dominante;
- le mécanisme de chaque option, sans slogan;
- une prédiction qualité, mémoire ou latence;
- un cas où votre procédure préférée perd;
- un protocole A/B, métriques et seuil de retour arrière;
- un verdict borné : choisir, différer ou refuser.

<details><summary>Éléments d’une bonne solution</summary>

S mesure d_k × d_v, point : 1 000 ou 100 000 tokens écrits, la matrice garde la même taille. La croissance O(n) du cache devient une constante — au prix d’un résumé superposé à la place d’une trace exacte. L’interférence est arithmétique, pas aléatoire : la ligne 1 de S contient [2,3] + [9,9] = [11,12], et la lecture restitue exactement cette somme. Des clés proches écrivent dans des directions partagées ; leurs valeurs se mélangent au prorata de l’alignement. Mécanismes établis ; les simplifications numériques sont pédagogiques.

Une bonne réponse ne présente pas le mécanisme récent comme gagnant par défaut. Elle conserve une référence mesurable, fixe le seuil avant le test et distingue le coût du composant du comportement du système complet. Le verdict doit citer ce qui reste incertain et la prochaine preuve qui pourrait le modifier.

</details>

### Barème Exercice 3 — /15

| Critère | Points |
|---|---:|
| Cadrage et référence | 3 |
| Chaînes causales comparées | 4 |
| Protocole et métriques | 4 |
| Seuil de retour arrière | 2 |
| Verdict borné | 2 |

## Prolongement

Refaites l’exercice 3 en inversant la contrainte dominante. Si vous aviez optimisé la mémoire, imposez maintenant une qualité minimale stricte; si vous aviez optimisé la fidélité, imposez une enveloppe mémoire divisée par deux. Identifiez le premier point du verdict qui change et la preuve nécessaire.

## Relecture avant remise

Relisez votre paquet comme si un autre groupe devait reproduire votre travail sans vous parler. Toutes les valeurs ou hypothèses de départ sont-elles présentes ? Les formes ou rôles sont-ils écrits avant les opérations ? La prédiction précède-t-elle réellement l’observation ? Le résultat est-il traduit en comportement plutôt que laissé comme nombre isolé ? Avez-vous testé une valeur limite et identifié une condition d’arrêt ? Le choix de procédure ou d’architecture conserve-t-il une référence mesurable et un seuil de retour arrière fixé avant le test ? Enfin, surlignez une phrase qui décrit ce qui est établi, une phrase qui reste une hypothèse et une mesure susceptible de changer votre verdict. Si l’un de ces éléments manque, le travail n’est pas reproductible.

## Annexe de référence pour la correction

## Chapitre 8 — Attention linéaire et mémoire matricielle de taille fixe

### 8.0 Les matrices depuis le début

But : comprendre les petits outils mathématiques utilisés à partir de ce chapitre. Un scalaire est un seul nombre, par exemple 3. Un vecteur est une liste ordonnée, par exemple [2, 5]. Une matrice est une grille rectangulaire de nombres. Sa forme s’écrit lignes × colonnes.

Imagine un vecteur comme le bulletin d’un élève et une matrice comme le registre de toute la classe. Les lignes peuvent représenter les élèves et les colonnes les matières.

**Étape par étape**

- A = [[1, 2, 3], [4, 5, 6]] possède 2 lignes et 3 colonnes : sa forme est donc 2 × 3.

- La transposée échange lignes et colonnes : transposer [2, 5] transforme une ligne en colonne.

- Un produit scalaire multiplie les éléments correspondants puis les additionne : [2, 3] · [4, 5] = 2×4 + 3×5 = 23.

- Un produit extérieur fabrique une grille : colonne [2, 3] × ligne [4, 5] = [[8, 10], [12, 15]].

- La multiplication matricielle répète des produits scalaires. Les formes doivent s’emboîter : (2 × 3)(3 × 4) donne (2 × 4).

**Exemple détaillé :** x = [2, 1] et W = [[3, 0], [4, 5]]. Alors xW = [2×3 + 1×4, 2×0 + 1×5] = [10, 5]. La matrice a mélangé les deux coordonnées d’entrée pour produire deux nouvelles coordonnées.

**Pourquoi c’est important :** Ces opérations sont la grammaire des réseaux neuronaux. Nous préciserons toujours ce que stocke une matrice et vérifierons sa forme.

**Vérification rapide :** quelle est la forme d’une grille de 4 lignes et 7 colonnes ? Réponse : 4 × 7.

### 8.1 D’un carnet qui grandit à un résumé de taille fixe

But : comprendre pourquoi l’attention ordinaire devient coûteuse. L’attention causale exacte conserve une clé et une valeur pour chaque jeton précédent. Pendant la génération, le cache clés-valeurs grandit donc avec la conversation.

L’attention exacte ressemble à la conservation de chaque ticket de caisse. L’attention linéaire essaie plutôt de maintenir un seul tableau comptable mis à jour.

**Étape par étape**

- Transformer chaque clé k avec une fonction de caractéristiques φ(k). Cette fonction change simplement les coordonnées avant la comparaison.

- Écrire l’association clé-valeur dans une matrice d’état S avec un produit extérieur : S ← S + φ(k) vᵀ.

- Lire avec une requête q : sortie ≈ φ(q)ᵀS. Un terme de normalisation peut aussi être utilisé.

- Les dimensions de S dépendent de la largeur de représentation, pas du nombre de jetons.

**Exemple détaillé :** partons de S = [[0,0],[0,0]]. Soit k = [1,0] et v = [3,4]. Le produit extérieur vaut [[3,4],[0,0]], donc le nouvel état S vaut [[3,4],[0,0]]. La requête q = [1,0] lit qᵀS = [3,4]. La requête [0,1] lit [0,0].

**Pourquoi c’est important :** La mémoire garde la même taille même après de nombreux jetons. Cela peut réduire la croissance de la mémoire et rendre le décodage récurrent efficace.

**Vérification rapide :** une mémoire de taille fixe signifie-t-elle une mémoire parfaite et illimitée ? Réponse : non. De nombreuses associations doivent partager la même grille limitée.

### 8.2 Interférence

But : comprendre la faiblesse principale d’une mémoire additive simple. Si deux clés pointent dans des directions proches, leurs écritures se chevauchent dans S. Une requête ultérieure peut récupérer un mélange.

Imagine plusieurs réponses écrites dans la même petite case d’un tableau blanc. L’encre se superpose.

**Étape par étape**

- Écrire k₁ = [1,0], v₁ = [1,0].

- Écrire k₂ = [1,1], v₂ = [0,1].

- L’état devient [[1,1],[0,1]].

- Lire avec q = [1,0] renvoie [1,1], et non la valeur originale [1,0]. La deuxième écriture a contaminé la première lecture.

**Exemple détaillé :** Ce petit exemple montre la diaphonie. Les vrais modèles utilisent des projections apprises, des portes, une normalisation et des règles de correction, mais une mémoire finie impose toujours des compromis.

**Pourquoi c’est important :** Nous avons besoin d’une règle d’écriture capable de corriger ce qu’une clé mémorise déjà, au lieu d’additionner sans fin.

**Vérification rapide :** pourquoi deux souvenirs peuvent-ils interférer ? Réponse : leurs directions de clé ne sont pas parfaitement séparées ; leurs écritures matricielles se chevauchent.

## Sources et frontière de preuve

- Dossier de cours bilingue fourni par le propriétaire, chapitre 8.
- Katharopoulos et al., “Transformers are RNNs: Fast Autoregressive Transformers with Linear Attention”, ICML (2020).
- Dossier source fourni par le propriétaire; les détails sur des produits nommés restent attribués à cette source jusqu’à vérification primaire.

> **Portée:** Mécanismes établis ; les simplifications numériques sont pédagogiques. Ces références soutiennent le cadre de la session; elles ne transforment pas un choix de produit rapporté en résultat indépendant.
