From d0dc2905c21a193d7fbcd703832ea4fa82bf6726 Mon Sep 17 00:00:00 2001 From: jsboige Date: Wed, 16 Sep 2026 21:49:56 +0200 Subject: [PATCH] docs(iit,#13410): densite ICT-16 (1079->1306) + ICT-17 (1163->1297) -- 5 lectures chiffrees ICT-16 : 3 lectures (codelengths KT uniform/eye/diag -23,359/-42,379/-30,555 lus en ordre de sparsite ; residu/n 0,0836 vs 0,7011 vs 2,0528 = ce que le modele ne capture pas ; Gate 6 tau=+0,786 p=0,006, tableau 8 trajectoires 11,88->1216,54 bits vs zlib 136->3096, k-gain 0,9357->0,0031). ICT-17 : 2 lectures (cycle 0,1,2 : 3 etats causaux, C_mu=1,5848, E=1,5850=log2(3), E_k plate ; Gate 9 : plafond E=0,5458 vs plug-in 0,5230 (ecart 0,0229) vs uniforme 0,0018, PASSED). Md-only : 0 cellule code touchee, 0 output edite. Densite floor post-commit : 1306 et 1297, rendering guard OK 2/2. See #13410 Co-Authored-By: Claude Sonnet 5 --- .../ICT-Series/ICT-16-MDLTwoPartCode.ipynb | 21 +++++++++++++++++++ .../ICT-Series/ICT-17-EpsilonMachine.ipynb | 14 +++++++++++++ 2 files changed, 35 insertions(+) diff --git a/MyIA.AI.Notebooks/IIT/ICT-Series/ICT-16-MDLTwoPartCode.ipynb b/MyIA.AI.Notebooks/IIT/ICT-Series/ICT-16-MDLTwoPartCode.ipynb index aee9de2b8f..75a2810ad5 100644 --- a/MyIA.AI.Notebooks/IIT/ICT-Series/ICT-16-MDLTwoPartCode.ipynb +++ b/MyIA.AI.Notebooks/IIT/ICT-Series/ICT-16-MDLTwoPartCode.ipynb @@ -157,6 +157,13 @@ "# `model_bits` seul. C'est le coeur du code deux parties." ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Lecture de la sortie.** Trois structures, trois codelengths de modele : uniform $-23{,}359$ bits, diagonale asymetrique $-30{,}555$ bits, identite (sparse eye) $-42{,}379$ bits. Les valeurs sont *negatives* -- le prior KT code une ligne de TPM par sa likelihood marginale, et une ligne deja quasi-deterministe (un seul gros compte) coute moins que sa description raw : le signe importe moins que l'*ordre*. Et l'ordre dit exactement ce que MDL doit dire : plus la TPM est creuse (l'identite n'a qu'un non-zero par ligne), plus le modele est **court a decrire** -- $-42$ bits pour eye contre $-23$ pour uniform, dix-neuf bits d'economie de description. C'est la premiere partie du code en action : la structure se paie en bits, et la structure *absente* (des zeros la ou les autres ont des probabilites) ne coute presque rien.\n" + ] + }, { "cell_type": "markdown", "id": "9ca54b78", @@ -243,6 +250,13 @@ " f'residual/n={out_mk[\"residual_bits\"]/out_mk[\"n_heldout\"]:.4f}')\n" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Lecture de la sortie, chiffre par chiffre.** Le residu par symbole ($residual/n$) separe nettement les trois regimes : cycle deterministe $0{,}0836$ bit -- le modele de transition capture presque tout, il ne reste qu'une poussiere de surprise ; markov bruitee a 10 % $0{,}7011$ bit -- le bruit irreductible passe integralement dans le residu ; iid 4-categories $2{,}0528$ bits -- proche du maximum d'entropie par symbole ($\\log_2 4 = 2$), le modele n'apprend rien qui aide. La symetrie avec la ligne modele est la lecon du code deux parties : le cycle paie $-6{,}722$ bits de modele pour economiser $\\sim 2$ bits de residu par symbole, l'iid paie $+30{,}729$ bits et ne gagne rien. Entre sur-apprendre (gros modele, petit residu) et sous-apprendre (petit modele, gros residu), la trajectoire la moins couteuse *en total* n'est pas toujours la plus simple.\n" + ] + }, { "cell_type": "markdown", "id": "3e2b025b", @@ -650,6 +664,13 @@ " print(f' {n:12s} {tb:+10.2f} {zb:10.2f} {kg:+8.4f}')\n" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Lecture du tableau, ligne par ligne.** La correlation de rang tient : $\\tau = +0{,}786$ avec $p = 0{,}006$, au-dessus du seuil attendu ($\\geq 0{,}5$) -- les rangs MDL et zlib concordent sur les huit trajectoires. Le tableau detaille la *structure* de cette concordance : les trois cycles deterministes (k=2 a k=5) couchent a $11{,}88 \\rightarrow -29{,}83$ bits totaux contre $136 \\rightarrow 168$ bits zlib avec un $k$-gain qui monte a $0{,}9357$ ; les markoviennes bruitees glissent de $513{,}85$ a $776{,}41$ bits contre $1520 \\rightarrow 2184$ zlib ($k$-gain $0{,}3448 \\rightarrow 0{,}0733$) ; les iid finissent a $852{,}07$ et $1216{,}54$ bits contre $2312$ et $3096$ zlib, $k$-gain quasi nul ($0{,}0170$, $0{,}0031$). Deux lectures : (1) l'ordre relatif des difficultes est le meme des deux cotes -- c'est tout ce que le gate exige d'un estimateur honnete ; (2) l'*echelle* absolue ne l'est pas (zlib compresse du binaire brut, MDL code une TPM) -- comparer des rangs, pas des bits, est precisement la precaution de methode.\n" + ] + }, { "cell_type": "markdown", "id": "b875f461", diff --git a/MyIA.AI.Notebooks/IIT/ICT-Series/ICT-17-EpsilonMachine.ipynb b/MyIA.AI.Notebooks/IIT/ICT-Series/ICT-17-EpsilonMachine.ipynb index c37c76636e..ef014ee924 100644 --- a/MyIA.AI.Notebooks/IIT/ICT-Series/ICT-17-EpsilonMachine.ipynb +++ b/MyIA.AI.Notebooks/IIT/ICT-Series/ICT-17-EpsilonMachine.ipynb @@ -200,6 +200,13 @@ "print(f\"E = log2(3) = {np.log2(3):.4f} bits (la passe complete identifie la phase).\")\n" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Lecture de la sortie.** Sur la sequence cyclique $0,1,2$ : 88 passes visitees se condensent en **3 etats causaux** (un par phase du cycle), de distribution stationnaire quasi egale ($0{,}341$, $0{,}33$, $0{,}33$). Les deux quantites jumelles valent $C_\\mu = 1{,}5848$ bit et $E = 1{,}5850$ bit -- toutes deux a $\\log_2 3 = 1{,}5850$ pres : il faut $\\log_2 3$ bits pour encoder *dans laquelle des trois phases on se trouve* (memoire statistique), et la passe complete n'apprend rien de plus (excess d'entropie nul, la serie $E_k$ est plate a $1{,}5848 \\pm 0{,}0001$ sur $k = 1 \\ldots 4$). Le determinisme parfait est le cas ou representation minimale et prediction complete coincident.\n" + ] + }, { "cell_type": "markdown", "id": "c1975d39", @@ -895,6 +902,13 @@ "print(f\" (E - I_uniform) = {E_s2 - I_uniform:.4f} bits (ecart au plafond)\")\n" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Lecture de la sortie, chiffre par chiffre.** Le plafond theorique $E = 0{,}5458$ bit domine les deux estimateurs concurrents, et le gate est PASSED : l'info mutuelle **plug-in** atteint $I = 0{,}5230$ bit -- a $0{,}0229$ bit du plafond, soit l'echelle du bruit d'estimation -- tandis que l'estimateur **uniforme** plafonne a $I = 0{,}0018$ bit, a $0{,}5441$ bit du maximum, c'est-a-dire presque toute l'information disponible gaspillee. La hierarchie des trois nombres est la lecon : le plafond $E$ n'est pas une borne abstraite, c'est la *meilleure* atteignable, et un estimateur naif (uniforme) n'en recolte que $0{,}3\\,\\%$. La difference $0{,}5458 - 0{,}5230 = 0{,}0229$ bit mesure ce qu'un modele appris manque encore face a l'epsilon-machine elle-meme.\n" + ] + }, { "cell_type": "markdown", "id": "b33872b0",