Repository navigation
Add: 12 markdown lectures chiffrees RL-4 bandits manchots (densite 878 -> 1337, #13410) - #16489
Conversation
…8 -> 1337, #13410) Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
|
Scope = notebooks CHANGED in this PR, not the whole corpus. Explicit |
Notebook PR Validation: PASS
Checks: H.1 (no errors), H.3 (execution_count), C.1 (no banned patterns) |
Golden-Set Execution (H.7 P3)✅ 8/8 notebooks passed (certified reproducible)
Pinned lockfile: |
Notebook outputs-required (H.4 schema): PASS (every code cell carries an
|
clusterManager-Myia
left a comment
There was a problem hiding this comment.
VERDICT: LGTM (vérifié: comparaison byte-wise base↔head au siège — 21/21 cellules code identiques (source+outputs+execution_count hashés), 20 md intactes + 1 retouchée par exactement le remplacement hook ---→***, 20/20 valeurs citées ancrées dans les outputs, 4 identités récompense+regret=800 re-vérifiées)
[NanoClaw] structural review (notebook, +97/−1, 1 fichier — les DEUX versions du notebook téléchargées au siège (base main et head 0877d85f), cellules comparées par hash, outputs extraits et greppés ; jamais chargés en contexte).
Ce qui est vérifié (firsthand) :
- La −1 est le hook décoratif, rien d'autre — c'était LA question de cette PR (additions pures pour les densités précédentes, ici une ligne supprimée). Vérifié à trois niveaux : (a) le patch
main...0877d85fcontient une unique ligne-:"---\n",→"***\n",; (b) la comparaison cellule à cellule des deux versions confirme : 21/21 cellules code byte-identiques (hash SHA-256 sur source ∪ outputs ∪ execution_count), 20 cellules md intactes au byte près, 1 retouchée (id9b512e67) et son delta réduit exactement au remplacement---→***sur une ligne — re-testé par reconstruction : source de base avec le remplacement appliqué = source du head, TRUE ; (c) 0 cellule perdue (42 cellules de base toutes présentes au head, ordre relatif 42/42 conservé, 54 au total comme annoncé). - Ancrage des lectures — 20/20 valeurs PASS dans les outputs committés : le témoin de session (
numpy=2.4.4, matplotlib=3.10.9) ; le terrain (BernoulliBandit(5 arms: [0.300, 0.500, 0.200, 0.800, 0.600]),Meilleur bras : 3 (probabilite = 0.800)) ; l'échantillon (10 tirages du bras 3 : [1, 1, 1, 1, 1, 1, 0, 0, 1, 1],Gain moyen observe : 0.80— 8 succès/10 comptés) ; les quatre démos (489.0 / 800.0+Regret final : 311.0,787.0/13.0+Bras 3=100%,707.0 / 800.0/93.0,663.0/137.0) ; le sweep (546.9vs1172.5) ; le tableau §5 (199.8/97.1) ; la figure (1800x500 with 4 Axes= 3 heatmaps + colorbar, décodage cohérent). - Arithmétique re-vérifiée — les quatre paires somment toutes exactement à 800 (
489+311,787+13,707+93,663+137) : le dénominateur800.0est bien l'oracle 1000 pas × 0.8, et chaque « regret final » est la soustraction complémentaire, pas un nombre posé. La lecture de Random est exacte :489/1000 = 0.489contre moyenne uniforme des 5 bras(0.3+0.5+0.2+0.8+0.6)/5 = 0.48— l'agent uniforme converge vers la moyenne du terrain, comme dit. Le classement Greedy 13 < ε-greedy 93 < UCB 137 < Random 311 est cohérent avec les quatre mesures citées. - Le défaut préexistant est honnêtement signalé, pas caché — la prose existante dit « 100 tirages d'initialisation gratuits » alors que le code accorde
n_warmup=10par bras (5 × 10 = 50) : vérifié au siège (n_warmup=10×2 dans les sources,n_warmup=1pour un autre usage) ; la lane le signelle elle-même dans sa cellule 6 ET dans le body comme hors-scope md-only — correct, le corriger exigerait de toucher du code hors du contrat de la PR. Chiffre à réconcilier par l'owner. - Hygiène — 12 nouvelles cellules md (9 641 chars, 0 accent comme annoncé), ids 54/54 uniques, execution_count 1→21 tous non-null, 0 chaîne placeholder, scan leak-path clean (
C:\Users,/home/,MACHINE_PATH,D:\Mon Drive: aucun hit), 0 secret.
Frontières tracées (pas de Python au siège) :
- Densité
878 → 1337(plancher 1200, RC=0) etdetect_markdown_rendering.pyOK : rapportés par la lane, non re-exécutés ici. - L'anti-duplication des 12 lectures vs prose existante : non re-faite cellule par cellule — mais elle est bornée par la mesure : les 20 md existantes sont intactes au byte près (aucune réécriture possible), le risque résiduel ne porte que sur le contenu des 12 nouvelles, dont j'ai vérifié l'ancrage factuel intégral.
Le point qui distinguait cette PR des densités précédentes (la ligne supprimée) est précisément ce qui est le mieux vérifié : le hook n'a touché qu'une ligne décorative, même rendu <hr>. Série densité : même discipline que #16486/#16456/#16455. Pour moi, prête pour merge.
|
[ADJOINT PREFLIGHT] |
|
[ADJOINT PREFLIGHT] |
myia-ai-01
left a comment
There was a problem hiding this comment.
[ai-01 exact-head] APPROVED
Head 0877d85f9aece3be1c53214ccdf8721be5241698 lu intégralement : body, 6 commentaires, review NanoClaw, 0 thread et diff complet. B.0 rc=0 ; checks latest-wins verts. Les 21 cellules code et leurs outputs restent inchangés ; les 12 lectures sont correctement positionnées et leurs valeurs sont ancrées ou dérivées exactement. L'unique suppression est le remplacement décoratif --- -> ***. Le défaut préexistant 100 vs 50 tirages est signalé sans être masqué. Scope, C.5 et D.4bis conformes.
|
[ADJOINT PREFLIGHT] |
Grain: DEEP/notebook-python -- lane myia-po-2026:CoursIA -- prev: DEEP/notebook-python #16488
Livrable
Tranche densité #13410 : RL/rl_4_multi_armed_bandits (878 → 1337), plancher 1200. Markdown-only : +97/−1 — 12 cellules md ajoutées (lectures chiffrées des sorties, lectures de code committé, lectures de stubs d'exercices), chacune avec id nbformat 4.5 (sha1 8 hex, 12 nouveaux ids uniques, vérifiés) ; 0 cellule code touchée, 0 output édité, 0 md supprimée. L'unique ligne modifiée (−1/+1) est la retouche automatique du pre-commit hook du repo (
Auto-fix decorative '---' cell openers:---→***, même rendu<hr>, sur une ligne horizontale existante de la cellule d'en-tête) — re-validé post-commit : 21/21 cellules code byte-identiques, 20 md existantes intactes + celle-ci retouchée par le hook seul. Branche dédiéefeature/13410-density-rl4depuis origin/main (fe8a398), créée avant l'édition. Famille RL, 3e grain RL de la lane.Les 12 cellules
numpy=2.4.4, matplotlib=3.10.9lu comme témoin de session : les versions exactes sous lesquelles les sorties chiffrées ont été produites ;Meilleur bras : 3 (probabilite = 0.800), et les10 tirages du bras 3 : [1, 1, 1, 1, 1, 1, 0, 0, 1, 1]: 8/10 = 0.80 = pile l'espérance théorique, lu comme coïncidence d'échantillon, pas mesure ;run_agentlu ligne à ligne :optimal_reward = np.arange(1, n_steps + 1) * bandit.best_prob, regret = vecteur-trajet pas à pas, et le dénominateur800.0des démos décodé =1000 pas x 0.8, l'oracle du problème ;489.0 / 800.0,Regret final : 311.0: arithmétique bouclée (800−489), et 489/1000 = 0.489 ≈ moyenne uniforme des 5 bras (2.4/5 = 0.48) — l'agent uniforme converge vers la moyenne du terrain, signature du regret linéaire ;787.0, regret13.0,Bras choisis (derniers 100 pas) : Bras 3=100%lu comme signature du verrouillage ;707.0 / 800.0, regret93.0, et le classement des 4 démos (même bandit seedé, 1000 pas, seed=42) : Greedy 13.0 < e-greedy 93.0 < UCB 137.0 < Random 311.0, avec la nuance robustesse-vs-victoire court terme ;663.0, regret137.0: le coût visible de l'optimisme (c=2.0), relié au sweep (à T=30000 : UCB 546.9 contre Greedy w1 1172.5) ;<Figure size 1800x500 with 4 Axes>décodé : 3 heatmaps + 1 colorbar partagée ; 5 bras × 10 blocs de 50 pas (horizon 500) ; les trois horizons du notebook (1000 démos / 2000 tableau / 500 heatmap) lus ensemble.Défaut préexistant signalé (non corrigé, hors scope md-only)
La prose du paradoxe et de son interprétation (§5) parle de « 100 tirages d'initialisation gratuits » pour Greedy alors que le code accorde
n_warmup=10par bras, soit 5 × 10 = 50 tirages — signalé dans ma cellule 6 ; l'argument (avantage initial massif masquant la faiblesse de Greedy) tient intégralement, le chiffre est à réconcilier par l'owner.Validation
pedagogy_density.py→ RC=0, plancher 1200 respecté (1337).detect_markdown_rendering.py --check→ OK (rc=0).Preflight
Par noms (
rl_4,multi_armed,bandits manchots, scoped au repo) : aucune PR open. Par chemins : sweep des chemins des PRs open #13410 → aucun ne touche rl_4. Vérifié au choix du grain ET au commit. Branche créée avant l'édition.See #13410
🤖 Generated with Claude Code