1. Limite de l’addition
Le problème : Session 13, dernière écriture : k=[1,0] resservi, lecture [11,12] — ni [2,3] ni [9,9]. Une mémoire additive ne sait que renforcer : mettre à jour une association (« le prix est passé à 9 ») produit un mélange des deux versions au lieu d’un remplacement.
L’idée : Le diagnostic est structurel : S ← S + k vᵀ ne consulte jamais S. L’écriture est décidée sans savoir ce que la mémoire contient déjà — répéter une information l’amplifie, la corriger l’entremêle.
Pourquoi / à quel prix : Nommer la cause — l’écriture aveugle — désigne le remède : lire avant d’écrire. Le prix de l’addition reste sa simplicité : une seule opération, aucun état consulté ; tout ce que la suite ajoute se paiera en calcul par token.
Vérification de compréhension
Nommez l’entrée, l’état transformé, la sortie et une hypothèse nécessaire. Comparez ensuite votre chaîne à l’explication ci-dessus.
2. Lire avant d’écrire
Le problème : Pour corriger sans mélanger, il faut savoir ce que la mémoire répondrait AVANT d’écrire. Sinon, impossible de distinguer « information nouvelle » (écrire fort) d’« information déjà connue » (ne rien faire).
L’idée : La mémoire prédit d’abord : v̂ = Sᵀk. Sur S = [[2,3],[5,1]] avec k=[1,0], v̂ = [2,3] — exactement ce qu’une requête alignée lirait. L’écriture devient conditionnelle à l’état, plus seulement à l’entrée.
v̂=Sᵀk
Pourquoi / à quel prix : Cette lecture est ce qui rend la correction possible — et c’est une multiplication de plus par token, avant même d’écrire. Le prix : v̂ n’est fiable que si k s’aligne sur ce qui fut écrit ; une clé mal placée fait « corriger » une prédiction qui n’existait pas.
Vérification de compréhension
Nommez l’entrée, l’état transformé, la sortie et une hypothèse nécessaire. Comparez ensuite votre chaîne à l’explication ci-dessus.
3. Erreur locale
Le problème : La lecture donne v̂ = [2,3], la cible est v = [9,9]. Écrire v en entier re-superposerait tout — retour au problème de la session 13. Que faut-il écrire, exactement, pour passer de l’un à l’autre ?
L’idée : Seulement la différence : e = v − v̂ = [7,6]. Elle contient à la fois ce qui manque (composantes positives) et ce qui doit s’effacer (négatives). Et si v̂ = v, alors e = [0,0] : le token redondant n’écrit rien.
e=v−v̂
Pourquoi / à quel prix : L’erreur nulle est le premier mécanisme d’économie : pas de réécriture inutile, pas de dérive sur les répétitions. Le prix : e est local à la clé courante — il corrige ce que k lit, pas la mémoire entière ; une erreur vue d’une mauvaise clé reste invisible.
Vérification de compréhension
Nommez l’entrée, l’état transformé, la sortie et une hypothèse nécessaire. Comparez ensuite votre chaîne à l’explication ci-dessus.
4. Mise à jour delta
Le problème : e dit quoi corriger ; reste à l’appliquer au bon endroit et à la bonne force. Une correction diffusée partout dégraderait les autres lignes ; une correction trop forte dépasse la cible — le cas D lit [−5,−4].
L’idée : S ← S + β k eᵀ : k localise (ligne 1 seulement), e porte le contenu, β dose. Avec β=1 et ‖k‖=1 : remplacement exact, [2,3] → [9,9], ligne 2 intacte. Avec β=0,5 : à mi-chemin, [5,5 ; 6].
S←S+βk(v−Sᵀk)ᵀ
Pourquoi / à quel prix : Après un pas, il reste (1 − β·‖k‖²) de l’erreur : le remplacement exact exige β=1 ET une clé normalisée. Le prix : le calibrage — β mal réglé ou ‖k‖ ≠ 1 fait dépasser ou osciller, comme le taux d’apprentissage de la session débutant… au rythme d’un token.
Vérification de compréhension
Nommez l’entrée, l’état transformé, la sortie et une hypothèse nécessaire. Comparez ensuite votre chaîne à l’explication ci-dessus.
5. Poids rapides
Le problème : S change à chaque token pendant l’inférence — alors qu’a-t-on « appris » à l’entraînement ? Si tout bouge tout le temps, la distinction entraînement/conversation de la session débutant semble s’effondrer.
L’idée : Deux vitesses coexistent : S est un poids RAPIDE, réécrit token par token et jeté en fin de séquence ; les matrices qui produisent k, v, β sont des paramètres LENTS, figés à l’inférence. L’entraînement apprend à piloter la mémoire, pas son contenu.
Pourquoi / à quel prix : Cette séparation réconcilie les deux régimes : le contexte s’écrit dans S sans toucher aux paramètres. Le prix : le débogage change de nature — un comportement étrange peut venir de l’état (cette séquence-ci) ou des paramètres (l’entraînement), et les remèdes n’ont rien en commun.
Vérification de compréhension
Nommez l’entrée, l’état transformé, la sortie et une hypothèse nécessaire. Comparez ensuite votre chaîne à l’explication ci-dessus.
6. Orientations
Le problème : Vous ouvrez deux implémentations : l’une écrit S + βk eᵀ et lit qᵀS ; l’autre écrit S + βe kᵀ et lit Sq. Les formules diffèrent — l’une des deux est-elle fausse ?
L’idée : Ni l’une ni l’autre : toute la présentation se transpose (lignes ↔ colonnes) sans changer le mécanisme. Ce qui est immuable : lire, comparer, corriger — et les FORMES déclarées : k(d_k), e(d_v), S(d_k×d_v) dans une convention, transposées dans l’autre.
Pourquoi / à quel prix : Savoir cela évite de « corriger » un code juste. Le prix : la liberté de convention est un piège d’équipe — mélanger les deux dans un même fichier produit des bugs silencieux. D’où la règle de séance : déclarer les formes à côté de chaque formule.
Vérification de compréhension
Nommez l’entrée, l’état transformé, la sortie et une hypothèse nécessaire. Comparez ensuite votre chaîne à l’explication ci-dessus.
Développement depuis la source de cours
Chapitre 9 — DeltaNet : corriger la mémoire
9.1 La règle delta
But : remplacer l’addition aveugle par une correction d’erreur. Avant d’écrire la valeur souhaitée v, le modèle demande ce que la mémoire actuelle renvoie pour la clé k. Il n’écrit que la différence.
Un professeur ne réécrit pas toute une réponse lorsqu’une seule ligne est fausse ; il indique la différence à corriger.
Étape par étape
-
Lire l’ancienne valeur : v_old = kᵀS.
-
Calculer l’erreur : e = v − v_old.
-
Choisir une force d’écriture β entre 0 et 1.
-
Mettre à jour : S ← S + β k eᵀ.
Exemple détaillé : S est nulle, k=[1,0], valeur souhaitée v=[2,3], β=1. L’ancienne valeur=[0,0], l’erreur=[2,3], donc S devient [[2,3],[0,0]]. Changeons ensuite la valeur souhaitée en [5,1]. L’ancienne valeur=[2,3], l’erreur=[3,−2], et la mise à jour transforme la première ligne en [5,1] au lieu d’ajouter toute la nouvelle valeur.
Pourquoi c’est important : DeltaNet traite S comme des poids rapides : des nombres temporaires qui changent pendant la lecture de la séquence actuelle. Ils diffèrent des paramètres ordinaires du modèle, appris pendant l’entraînement puis réutilisés.
Vérification rapide : si la mémoire renvoie déjà la valeur souhaitée, quelle est l’erreur ? Réponse : zéro ; aucune correction n’est nécessaire.
9.2 Orientation et formes
But : éviter la confusion sur les transposées. Dans ce cours, S est une matrice clé-par-valeur. Une clé colonne k a la forme dₖ × 1, une valeur ligne a la forme 1 × dᵥ, et k vᵀ a la forme dₖ × dᵥ.
Les formes ressemblent à des tailles de connecteurs. Si les connecteurs ne s’emboîtent pas, la multiplication n’est pas définie.
Étape par étape
-
Écriture : (dₖ×1)(1×dᵥ) → dₖ×dᵥ.
-
Lecture : (1×dₖ)(dₖ×dᵥ) → 1×dᵥ.
-
Certains articles transposent tous les objets et utilisent une convention valeur-par-clé. Le mécanisme peut rester équivalent.
Exemple détaillé : Exemple de formes : dₖ=2 et dᵥ=3. Alors S a la forme 2×3. Une requête 1×2 multipliée par S produit une valeur 1×3.
Pourquoi c’est important : La vérification des formes permet de lire des équations inconnues sans mémoriser chaque symbole.
Vérification rapide : quelle forme résulte de (1×4)(4×6) ? Réponse : 1×6.
Cas guidé complet
Si S lit [0,6;0,2] pour une cible [1;0], l’erreur [0,4;−0,2] pilote seulement la correction manquante, contrairement à une addition complète de la cible.
Méthode de lecture: écrire les données, annoncer la forme de chaque objet, effectuer une seule transformation, puis interpréter le résultat avant de continuer.