PI logo

Un canal de raisonnement doit se briser quand on le brouille

Une ligne de recherche conclue sur le raisonnement natif machine : un goulot discret isolé par air-gap, un protocole de nécessité causale à trois interventions, et une preuve d'existence nette, publiée avec ses journaux d'expérience.

PI Project · Notes R&D/ Raisonnement propre à la machine/ Note 1 sur 2 · méthode & résultat· Note 2 · les échecs

§01 Cadre

Un canal utilisé n'est pas un canal causal

Quand un modèle raisonne « étape par étape », il se raconte en langage humain, un médium optimisé pour nous, pas pour lui. L'hypothèse derrière cette ligne de travail : un modèle peut raisonner à travers un code interne compact et appris, des symboles discrets qui ne sont ni des mots ni des activations brutes, et dont le sens émerge à l'entraînement. D'autres ont depuis porté ce mécanisme à l'échelle réelle ; cette note porte sur la partie que nous considérons comme la nôtre : le test.

Car les systèmes de raisonnement latent partagent un mode d'échec séduisant. On ajoute un canal interne, on regarde le codebook s'animer, la précision grimper, et l'on conclut que le canal fait le raisonnement. Très souvent, il n'en est rien. Un modèle peut émettre des tokens dans un canal tout en routant le vrai calcul à côté : le canal est utilisé, il corrèle avec de bonnes réponses, et il ne porte rien. Toute affirmation d'interprétabilité sur de tels tokens est une fiction.

Séparer ces deux cas exige une architecture où le contournement est impossible, et un protocole contrefactuel qui corrompt le canal et observe ce qui casse. Ci-dessous : l'architecture, le protocole, l'unique run qui a passé le test, et le run jumeau que le même protocole a refusé de certifier.

Ligne / run
air_gap / V17
Modèle
2 transformers de 6 couches, d=384 · 26.5M paramètres
Canal
64 slots · VQ dur, 1024×384-d
Données
TinyStories (vocab. 3 000) + arithmétique synthétique
Formation
2 phases · 15 + 20 époques · AdamW
Interventions
shuffle · random · zero
Journal
eval_metrics.jsonl · 2026-01
Statut
Conclue ; paquet de réplication en préparation
§02 · Architecture · 1/4

Deux transformers, un pont étroit

Un encodeur de 6 couches (le Reasoner) lit la question accompagnée de 64 slots de requête appris : des positions dont le seul rôle est d'accumuler un état de travail. Un décodeur distinct de 6 couches (le Speaker) doit produire la réponse. Les deux sont entraînés de zéro : 26,5 millions de paramètres au total, rien ici n'est hérité d'un prior pré-entraîné.

§02 · Architecture · 2/4

L'état est contraint de devenir discret

Chacun des 64 états continus est projeté sur l'entrée la plus proche d'un codebook appris de 1 024 vecteurs (384-d) : une quantification vectorielle dure, à gradients straight-through. À l'inférence, le canal est littéralement une séquence de 64 entiers. Cette discrétude rend les interventions ci-dessous bien définies, et rendrait auditable toute lecture ultérieure du code.

§02 · Architecture · 3/4

L'air gap : aucun contournement

Le décodeur ne voit jamais la question. Pas de connexion résiduelle, pas d'attention croisée vers l'entrée ; son premier et unique contexte est la séquence de codes quantifiés. Dans l'implémentation, cela tient en une ligne : l'embedding d'entrée du décodeur commence par z_q et rien d'autre. Si une information atteint la réponse, elle est passée par le code.

§02 · Architecture · 4/4

Pourquoi une construction aussi stricte

Les designs plus faibles laissent fuir l'entrée vers le décodeur, et « le canal est nécessaire » se confond alors avec le contournement. L'air gap supprime l'échappatoire par construction : la nécessité cesse d'être une hypothèse pour devenir mesurable. C'est délibérément la forme la plus forte de l'expérience, et délibérément petite, pour que le résultat soit bon marché à reproduire.

§03 Protocole

Le standard de nécessité causale

Un résultat ne compte que s'il franchit une barre en deux parties. Compétence : canal intact, le modèle résout la tâche au-dessus d'une référence significative. Nécessité : quand le contenu du canal est corrompu, tout le reste étant maintenu fixe, la performance s'effondre vers cette référence. La compétence seule est le piège classique : un modèle qui utilise son canal de façon décorative la satisfait. La nécessité est le discriminateur.

Nous corrompons le canal de trois manières, et l'ordre de sévérité compte plus qu'il n'y paraît :

shuffle

Permuter l'ordre des codes émis. Préserve l'ensemble des codes et leurs statistiques marginales ; détruit la séquence et le liage. Le test le plus diagnostique : un canal « sac de marqueurs » y survit, un canal qui lie le sens à la position, non. Son angle mort, un contenu réellement invariant à l'ordre, est exactement ce que couvre l'intervention suivante.

random

Remplacer chaque code par un tirage uniforme dans le codebook. Préserve la longueur et le type ; détruit tout contenu conditionné par l'entrée. Que shuffle et random s'effondrent ensemble est ce qui autorise une affirmation sur le contenu lui-même.

zero / drop

Retirer entièrement le contenu du canal. Sur un décodeur isolé par air-gap, cet effondrement est presque tautologique (le décodeur n'a pas d'autre entrée) ; c'est donc la plus faible des trois preuves. Un canal n'est déclaré porteur ici que si shuffle et random le brisent tous deux ; zero seul prouve la présence, pas le sens.

Le protocole s'exécute à l'évaluation, sans ré-entraînement, et rapporte un nombre par tâche : le delta d'effondrement entre le score intact et le score corrompu. L'implémentation est assez courte pour être citée en entier :

air_gap/v17/model.py · generate() éval. uniquement · aucun ré-entraînement
z_q, _, vq_info = self.vq(z, hard=True)      # z_q: [B, 64, 384], the discrete IR

if ir_mode == 'random':
    indices = torch.randint(0, self.num_codes, z_q.shape[:-1], device=z_q.device)
    z_q = self.vq.embedding(indices)         # length/type kept, content destroyed
elif ir_mode == 'shuffle':
    idx = torch.randperm(z_q.shape[1])
    z_q = z_q[:, idx, :]                     # code set kept, binding destroyed
elif ir_mode == 'zero':
    z_q = torch.zeros_like(z_q)              # presence removed

La boucle d'évaluation note les générations intactes et mélangées dans la même passe : entrées identiques, décodage glouton identique, tout identique hormis les lignes ci-dessus (train_phase2.py, evaluate).

§04 · Le run · 1/4

Intact : le modèle franchit la barre de compétence

Un modèle à air-gap, deux têtes de tâche, 20 époques d'entraînement en phase 2. Canal intact, il atteint 1,00 sur la tâche d'arithmétique synthétique et 0,633 de F1 token sur la tâche TinyStories. Le décodage est glouton : ces chiffres intacts sont déterministes.

§04 · Le run · 2/4

Mélangé : le même modèle s'effondre

Permutez les 64 codes, avec les mêmes entrées et le même décodeur : l'arithmétique tombe de 1,00 à 0,06, le F1 histoire de 0,633 à 0,109. L'ordre du canal porte le calcul ; des pensées brouillées produisent des réponses cassées. C'est l'effondrement qu'un canal causal doit montrer, et les contrôles négatifs de la note 2 montrent à quel point c'est rare.

Run unique ; la permutation shuffle n'est pas seedée : traitez les planchers corrompus à ± quelques points près d'une ré-exécution à l'autre. Chiffres de la dernière époque.

§04 · Le run · 3/4

Lire les deux tâches différemment

Nous délimitons cette affirmation avec soin. La tâche histoire est une reconstruction (l'entrée égale la cible) : sur de l'anglais réel, le canal porte donc démontrablement la reconstruction, pas le raisonnement. La preuve de type raisonnement est la tâche arithmétique, où la réponse n'est pas présente dans le code par construction, et qui s'effondre pourtant sous shuffle.

Contrôle de stabilité : meilleur F1 histoire 0,637 à l'époque 13, quasiment plat jusqu'à l'époque 20, un plateau plutôt qu'un pic de surapprentissage. Trois tokens <UNK> dans les échantillons de l'époque 20 : l'évaluation lit de vraies générations.

§04 · Le run · 4/4

Ce qui est réellement prouvé

Sur ce modèle de 26,5 M de paramètres, le canal discret est l'unique chemin causal de la question à la réponse, mesuré sous intervention et non inféré d'un codebook qui s'allume. C'est la preuve d'existence d'un mécanisme, et rien de plus : aucune comparaison à la chaîne de pensée n'est faite ni suggérée, et la note 2 consigne ce qui s'est produit quand nous avons voulu le passer à l'échelle.

§05 Le contrôle

Le même test refuse de certifier un jumeau plus faible

Un protocole qui dit toujours oui ne vaut rien ; voici donc le cas où il a dit non. V17_ter est la même architecture avec un seul changement : la tête histoire prédit le segment suivant au lieu de reconstruire l'entrée. Mêmes interventions, même évaluation :

V17 · tête de reconstruction (run principal)
Mode IRPrécision arithm.F1 histoire
intact1.000.633
shuffle0.060.109
Effondrement : −94 % / −83 % → canal certifié porteur.
V17_ter · tête prédictive (contrôle)
Mode IRPrécision arithm.F1 story-pred
intact1.000.262
shuffle0.2280.187
zero0.000.182
Marge histoire sur shuffle : +0,074, en déclin au fil de l'entraînement → non certifié.

Le canal arithmétique passe dans les deux runs. Le canal histoire, non : 0,262 intact contre un plancher shuffle de 0,187, une marge de +0,074 qui décline au fil de l'entraînement (meilleur 0,275 à l'époque 1). Les diagnostics disent pourquoi : la perte teacher-forced de la tête prédictive est à ~6,07 par token (tête sous-ajustée), et le recouvrement lexical entrée/cible du jeu de données est de ~0,21, exactement au plancher shuffle. La métrique est portée par un recouvrement générique, pas par le canal.

C'est le point méthodologique de toute cette note : le standard discrimine. Il a certifié le canal de V17 et refusé celui de V17_ter, à données, architecture et interventions identiques ; c'est ce qui rend l'unique résultat positif digne de confiance.

§06 Limites

Ce que ce résultat ne dit pas

  • Aucune comparaison à la chaîne de pensée. Il n'y a aucune référence CoT dans ce run. Rien ici ne soutient une affirmation de parité ou de supériorité sur le raisonnement en langage naturel, et nous n'en faisons aucune.
  • Preuve de mécanisme, pas un système. 26,5 M de paramètres, entraînés de zéro, sur TinyStories et de l'arithmétique à gabarits. La petite échelle est délibérée (elle élimine le facteur confondant du prior pré-entraîné et garde le résultat reproductible), mais c'est aussi la frontière du résultat.
  • Il n'a pas survécu au passage à l'échelle. Chaque tentative de mise à l'échelle du mécanisme ou de greffe sur un backbone pré-entraîné a échoué : une montée à ~190 M s'est effondrée à l'entraînement, et deux greffes ont produit des canaux utilisés mais non causaux. Ces journaux constituent la note jumelle.
  • Seed unique, shuffle non seedé. Un run d'entraînement par configuration ; le plancher shuffle porte un bruit de quelques points d'une exécution à l'autre. Les chiffres intacts sont déterministes sous décodage glouton.
  • Le résultat sur l'anglais réel est une reconstruction. Répété trois fois sur cette page, parce que c'est la chose la plus facile à sur-interpréter.

Les échecs sont documentés avec le même soin que le succès : Note 2 · trois façons dont un canal de raisonnement échoue en silence →

§07 Contexte

Où cela se situe dans la littérature

La direction est active et des équipes mieux dotées ont porté le mécanisme bien plus loin que nous ; leurs travaux sont la référence, et cette note leur est complémentaire. Ce que le domaine ne rapporte généralement pas, c'est un test de nécessité par corruption de contenu, précisément la partie que nous conservons.

arXiv 2502.03275 · Meta · 2025

Token Assorted

Mélange à l'échelle des tokens latents discrets issus d'un VQ-VAE avec du texte, avec des gains à la clé : le mécanisme des latents discrets, industrialisé. Aucun test de nécessité par corruption de contenu n'y est rapporté.

arXiv 2604.22709 · IBM · 2026

Abstract-CoT · "Thinking Without Words"

Remplace la chaîne de pensée verbale par un vocabulaire abstrait réservé sur des modèles pré-entraînés, jusqu'à 11,6× moins de tokens de raisonnement : l'analogue déployé le plus proche d'un canal IR. Aucune affirmation de nécessité causale par token ; ce protocole est le test dont de tels tokens auraient besoin.

arXiv 2512.21711 · 2025

Do Latent Tokens Think?

Constate que des tokens de raisonnement latent populaires agissent souvent comme des marqueurs ininterprétables exploitant des artefacts du jeu de données : indépendamment, exactement le mode d'échec que ce protocole est construit pour attraper, et qu'il a attrapé dans nos propres négatifs.

arXiv 2512.19171 · 2025

JEPA-Reasoner

Un raisonneur latent continu doté d'un décodeur séparé : le pendant continu de l'idée de découplage, là où se trouve actuellement l'élan du domaine.

arXiv 2606.29712 · 2026

Why Struggle with Continuous Latents?

Défend que les latents discrets battent les continus en interprétabilité : la propriété de canal borné et énumérable que cette architecture pousse à l'extrême.

arXiv 2603.22582 · 2605.24286 · 2604.10693

Le corpus « fidélité de la CoT »

Formalise l'évaluation causale par chemins médiés pour les traces de raisonnement en langage naturel. Le standard de nécessité présenté ici en est le pendant pour canaux discrets.

§08 Conclusion

Le test survit à l'architecture

Que le raisonnement natif machine égale un jour la chaîne de pensée mature est une question ouverte que ce travail ne tranche pas. L'architecture qui a porté la preuve est déjà dépassée ; le protocole, non. Corrompez le canal, maintenez tout le reste fixe, et ne croyez que les canaux qui cassent : ce test s'applique à tout système latent discret, y compris ceux qui ont dépassé le nôtre. Les notes de cette série l'appliquent à nos propres runs, négatifs compris.

Et une direction que nous testerions ensuite, énoncée comme une direction et non un résultat : garder le raisonnement lui-même continu (là où va l'élan du domaine), mais rendre l'interface entre segments de raisonnement discrète, isolée et auditable, pour que le même test contrefactuel s'applique toujours. La longueur de segment devient un curseur entre l'air-gap complet et la pensée entièrement continue.

Provenance · ce sur quoi repose chaque affirmation

Chiffres principaux V17 (arithmétique 1,00 / 0,06 ; F1 histoire 0,633 / 0,109 ; plateau époques 13–20) air_gap/v17/results_phase2/eval_metrics.jsonl · docs/air_gap/v17s_full_run_analysis_2026-01-04.md
Architecture, air gap et code d'intervention (cité verbatim ci-dessus) air_gap/v17/model.py · AirGapVQTransformer.forward / .generate
Intact et shuffle notés dans une même passe, entrées et décodage identiques air_gap/v17/train_phase2.py · evaluate()
Contrôle V17_ter (0,262 / 0,187 / 0,182 ; perte teacher-forced ~6,07 ; F1 de recouvrement ~0,21) air_gap/v17_ter/results_phase2/eval_metrics.jsonl · diagnostics_story_pred.py
Comptes de paramètres (26,5 M / ~190 M) calculés en instanciant les configurations des scripts d'entraînement air_gap/v17/train_phase2.py · air_gap/v18/train_phase2.py
Source complète, journaux d'expérience et documents dépôt de recherche privé · publication en préparation · disponible sur demande

Tous les identifiants arXiv et le chiffre de réduction de tokens d'IBM ont été vérifiés contre les articles sources en juillet 2026. Ceci est une ligne de recherche conclue, publiée pour la valeur de sa méthode.