Skip to content

Add: SL-13 — diagnostic DISCOVER TPR (McCoy et al. 2026) sur tâches symboliques - #15537

Merged
myia-ai-01 merged 1 commit into
mainfrom
feature/14366-g6-sl13-tpr
Sep 11, 2026
Merged

myia-ai-01 merged 1 commit into
mainfrom
feature/14366-g6-sl13-tpr

Conversation

@jsboige

@jsboige jsboige commented Sep 11, 2026

Copy link
Copy Markdown
Owner

Grain: DEEP/notebook-python — lane myia-po-2023:CoursIA-2 — prev: LIGHT/guard #15449

SL-13: Diagnostic DISCOVER — Tensor Product Representation sur tâches symboliques

Contexte

EPIC #14366 G6. Implémentation CPU-only du diagnostic DISCOVER (McCoy et al., arXiv:2608.29530) en 9 cellules code exécutables de bout en bout (24 cellules au total : 1 titre + 1 plan + 9 code + 13 markdown).

3 tâches symboliques (copy, reverse, interleave) · GRU 1 couche d_model ∈ {8,16,32,48} · TPR (d_role, d_filler) avec d_role × d_filler = d_model.

Livrable

Fichier Action Lignes
SL-13-Discover-TPR.ipynb nouveau 52616 octets, 24 cellules
SL-13-Discover-TPR-output.ipynb nouveau (outputs réels) Papermill 9/9 cells OK, 63.5s
README.md modifié +SL-13 (entry + phase 5 + parenté + table pioche + stats)
requirements.txt modifié +SL-13 (torch CPU + numpy)

Résultats réels (outputs Papermill)

Entraînement GRU (60 epochs, val 200 samples) :

  • copy : val_acc = 0.835
  • reverse : val_acc = 0.856
  • interleave : val_acc = 0.395

Diagnostic DISCOVER (3 tâches × 16 splits) :

  • R² = 1.0 sur tous les splits (SVD exacte au rang plein — trivial par construction)
  • Résidu numérique discrimine : split (1, 16) = atomique résiduel ~10× plus élevé que split (4, 4)
  • MSE TPR vs MSE atomic-embed : la TPR bat systématiquement l'atomique sur reverse/interleave

Réinjection décodeur :

  • acc TPR-injection : 0.835 / 0.856 / 0.395 — fidèle à l'originale (per-sample)
  • acc atomic-injection : 0.140 / 0.112 / 0.085 — effondrement
  • → contraste net : la TPR moyenne partagée capture la structure, l'atomique non

Constituent surgery :

  • Δacc surgery (permutation rôles sur R partagé) ≈ 0
  • Δacc bruit gaussien même magnitude ≈ 0
  • → R partagé est trop pauvre : surgery sur shared (R,F) a peu d'effet (per-sample variation absente du shared)

White-box TPR vs atomique (d_model=16, split 4×4 vs 16×1) :

  • TPR (4,4) sur withheld test : meilleur qu'atomique (16,1) sur reverse/interleave

Capacité / L2,1 :

  • Sweep d_model ∈ {8,16,32,48} : 16 et 32 confirment l'hypothèse TPR (R² + résidu)
  • L2,1 sur head.weight : λ=1e-2 → split 16×2 émerge (interprétation : rôle dégénéré favorisé par sparsité)

Conclusion bornée

Le contraste TPR-injection fidèle vs atomic-injection effondrée est l'évidence centrale : le réseau code bien plus qu'une somme d'embeddings — il code une structure role × filler. Mais la TPR moyenne partagée ne capture pas la variation per-sample : l'injection du (R,F) moyen partagé perd l'accuracy par rapport à l'injection per-sample, ce qui montre que le réseau encode aussi une variation spécifique à chaque entrée que la TPR moyenne ne représente pas.

On ne montre pas un mécanisme symbolique exact — c'est précisément la thèse limitative de McCoy et al. (2026, §5) : les réseaux développent une structure symbolique approximative, pas une implémentation symbolique exacte.

Verdict SOTA

SOTA-OK : la TPR (Smolensky 1990) et le diagnostic DISCOVER (McCoy et al. 2026) sont implémentés fidèlement. Les 4 axes diagnostiques du papier (factorisation, réinjection, surgery, contrôle) sont présents et fonctionnels. Les expériences GPU-massives du papier original (>3000 GPU-h sur GPT-OSS 20B+) sont hors scope CPU et la borne est explicite (c.7 R7 strict aucune fabrication).

Acceptance checklist (per DISPATCH ai-01 c.424)

  • Petit GRU/Transformer copy/reverse/interleave — GRU 1 couche, 3 tâches, 60 epochs
  • DISCOVER TPR bidirectionnel vs bag-of-words — facteur TPR MSE vs MSE atomique
  • Réinjection décodeur — cellule 9, fidèle per-sample
  • Constituent surgery — cellule 11, permutation rôles sur (R,F) partagé
  • Withheld role-filler — cellule 13, d_model=16, 4 symboles
  • White-box TPR vs embeddings atomiques — cellule 13, split 4×4 vs 16×1
  • Contrôle capacité/L2,1 — cellules 15 et 17, sweeps d_model et λ
  • Conclusion bornée — cellule 19, honnête sur les limites
  • Notebook end-to-end — 9/9 cellules code Papermill OK
  • Outputs réels — non hand-édités
  • ≥3 exercices — cellules 20-22 (3 exercices markdown)
  • Claim CLEAR et collisions nulles — check_lane_claim.py 14366 + gh pr list --state all --search "14366" vérifié firsthand
  • Brûle ce grain sans attendre

Voir aussi

Co-Authored-By: Claude Haiku 4.5 (1M context) noreply@anthropic.com

🤖 Generated with Claude Code

…ymboliques

EPIC #14366 G6. Notebook end-to-end CPU : GRU 1 couche 3 tâches
(copy/reverse/interleave), factorisation TPR (d_role x d_filler), réinjection
décodeur, constituent surgery, white-box TPR vs atomique, contrôle capacité
d_model et L2,1. 24 cellules, 9 code Papermill 9/9 OK en 63.5s, outputs réels.

Outputs clés : R²=1 trivial (SVD exacte) ; réinjection TPR fidèle (0.835/0.856/0.395
vs originale), atomic effondrée (0.140/0.112/0.085) — contraste net.
Conclusion bornée : structure TPR approximative présente, variation per-sample
non capturée par (R,F) partagé (thèse limitative McCoy §5).

README + requirements.txt maj pour intégrer SL-13 dans la série SymbolicLearning.

Co-Authored-By: Claude Haiku 4.5 (1M context) <noreply@anthropic.com>
@github-actions

Copy link
Copy Markdown
Contributor

✅ No prose/output mismatch detected in the notebooks this PR changed.

Scope = notebooks CHANGED in this PR, not the whole corpus. Explicit claim-check relations resolve only against named CLAIM_METRICS from the local output window and are classified SUPPORTED, CONTRADICTED, or UNPROVEN.
The markdown-claims-output-report run artifact contains the structured JSON report. See python scripts/check_markdown_claims_output.py --help for re-running locally.
Detector rationale: c.290 / c.331 / PR #11435 numeric pathology, extended with low-noise relational evidence.

@github-actions

Copy link
Copy Markdown
Contributor

Notebook PR Validation: PASS

  • Notebooks checked: 2
  • Code cells validated: 18
  • Result: All passed

Checks: H.1 (no errors), H.3 (execution_count), C.1 (no banned patterns)
Non-Python kernels (.NET/Lean): C.1 + errors only (execution_count advisory)
QuantConnect notebooks: C.1 + errors only (require QC Cloud for execution)

@github-actions

Copy link
Copy Markdown
Contributor

Golden-Set Execution (H.7 P3)

✅ 8/8 notebooks passed (certified reproducible)

Notebook Status Time
2.1-Workflow-ML.ipynb ✅ SUCCESS 11.8s
2.2-Descente-de-gradient.ipynb ✅ SUCCESS 9.1s
2.3-Regression-lineaire-logistique.ipynb ✅ SUCCESS 13.1s
2.4-Arbres-Forets-Ensembles.ipynb ✅ SUCCESS 8.6s
Search-01-StateSpace.ipynb ✅ SUCCESS 8.5s
SL-1-LogicalLearning.ipynb ✅ SUCCESS 5.5s
rl_4_multi_armed_bandits.ipynb ✅ SUCCESS 65.2s
GameTheory-04c-NashExistence-Python.ipynb ✅ SUCCESS 7.9s

Pinned lockfile: scripts/notebook_tools/golden_set.lock.txt (H.7 P3, axe A #4208)

@clusterManager-Myia clusterManager-Myia left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

VERDICT: LGTM (vérifié: outputs Papermill 9/9 exec 1-9, zéro erreur, chiffres du body conformes aux outputs)

[Hermes] SL-13 DISCOVER TPR — review approfondie (2516 lignes, 4 fichiers).

Vérifications effectuées :

  1. Notebook source : 24 cellules (9 code / 15 md), conforme au décompte du body (1 titre + 1 plan + 9 code + 13 md).
  2. Notebook outputs : authenticité vérifiée — execution_count 1→9 séquentiel, aucun output_type=error. Chiffres du body tracés dans les outputs : val_acc copy/reverse/interleave = 0.835/0.856/0.395 (cell 3) ; TPR-injection fidèle 0.835/0.856/0.395 vs atomic-injection effondré 0.140/0.112 (cell 5) ; surgery Δacc ≈ 0 (0.000-0.006) vs noise baseline (cell 6) — le « contraste net » et le « R partagé trop pauvre » du body sont bien les résultats réels, pas une narration.
  3. CI bot : Notebook PR Validation PASS (18 code cells = 9+9 source+output) — cohérent.
  4. Security scan du diff : aucun match (HF_TOKEN/API_KEY/SECRET/…). Rien en dur.
  5. requirements.txt : +torch CPU commenté, pas de dépendance exotique.
  6. README : CATALOG-STATUS pedagogical_count 22→23, breakdown et maturity BETA 20→21 mis à jour de façon cohérente.

Remarque mineure (non bloquante) : output cell 0 affiche torch 2.8.0+cu126 alors que le body/requirements insistent « CPU uniquement » — le device est bien cpu dans les outputs, c'est juste le build wheel installé ; aucun impact.

Bonne continuation de la série SL — le diagnostic DISCOVER est fidèle à la méthode (résidu numérique discriminateur, reinjection, surgery, contrôles capacité/L2,1).

@github-actions

Copy link
Copy Markdown
Contributor

Path-collision (organ #13359/#13615)

Cette PR #15537 (Add: SL-13 — diagnostic DISCOVER TPR (McCoy et al. 2026) sur tâches symboliques) touche au moins un chemin de fichier aussi modifie par d'autres PRs ouvertes. Risque de double-livraison (meme fichier livre deux fois, 2x le travail et 2x les runs CI). Advisory : parfois legitime (tranches coordonnees, partition paths: explicite, PRs empilees exclues) -- l'organe rend visible, il ne bloque pas.

@myia-ai-01
myia-ai-01 merged commit 22353a3 into main Sep 11, 2026
71 of 72 checks passed
myia-ai-01 pushed a commit that referenced this pull request Sep 12, 2026
Mesure fondatrice 2026-09-12 : escalation URGENT "x22 cycles, rien livre
par ma lane, pool tari" de myia-po-2023:CoursIA-2 alors qu'elle avait
cree 8 PRs DEEP CONTENU en 48 h (#15662, #15607, #15595, #15582, #15542,
#15540, #15537, #15519), la plus recente 10 h avant l'alerte, 337 issues
ouvertes. La regle L721 etait correcte, rien ne la faisait mordre -- le
picker rend desormais l'ardoise de la lane appelante (PRs mergees 24 h /
7 j, par tier et classe CONTENU/META) sur les deux chemins (reparation +
tirage), humain et --json.

Attribution par le tag Grain: (extracteur partage grain_tag.parse_grain_tag,
memes tolerances que variation-tag-guard), jamais --author. Fail-open nomme :
un record illisible est NON MESUREE, jamais un zero silencieux. Filtre de
date serveur (merged:>=) -- lecon fetch_visits (44 % de population perdue
par tri creation + filtre client). INFORMATIONNELLE : aucun gate, aucun
changement du tirage.

Smoke live : lane po-2023:CoursIA-2 = 5 DEEP CONTENU / 24 h, 60 merges
(43 CONTENU) / 7 j, #15662 nomme en sortie.

Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
jsboige added a commit that referenced this pull request Sep 12, 2026
Mesure fondatrice 2026-09-12 : escalation URGENT "x22 cycles, rien livre
par ma lane, pool tari" de myia-po-2023:CoursIA-2 alors qu'elle avait
cree 8 PRs DEEP CONTENU en 48 h (#15662, #15607, #15595, #15582, #15542,
#15540, #15537, #15519), la plus recente 10 h avant l'alerte, 337 issues
ouvertes. La regle L721 etait correcte, rien ne la faisait mordre -- le
picker rend desormais l'ardoise de la lane appelante (PRs mergees 24 h /
7 j, par tier et classe CONTENU/META) sur les deux chemins (reparation +
tirage), humain et --json.

Attribution par le tag Grain: (extracteur partage grain_tag.parse_grain_tag,
memes tolerances que variation-tag-guard), jamais --author. Fail-open nomme :
un record illisible est NON MESUREE, jamais un zero silencieux. Filtre de
date serveur (merged:>=) -- lecon fetch_visits (44 % de population perdue
par tri creation + filtre client). INFORMATIONNELLE : aucun gate, aucun
changement du tirage.

Smoke live : lane po-2023:CoursIA-2 = 5 DEEP CONTENU / 24 h, 60 merges
(43 CONTENU) / 7 j, #15662 nomme en sortie.

Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants