Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -182,6 +182,14 @@
" f\"(saturation attendue)\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**Lecture de la sortie.** Le réplicateur déterministe vit dans une coopération quasi nulle : le champ moyen oscille dans $[0{,}055,\\ 0{,}255]$ et *finit* à $0{,}056$ -- la trajectoire s'enfonce et reste au fond. À l'observable argmax, la dominante finale est tft, et la sortie qualifie elle-même la saturation d'*attendue* : sans innovation de vocabulaire ni stochasticité de population, la trajectoire se fige tôt sur une stratégie et n'en bouge plus. C'est le pôle haut-gauche du plan -- celui qui doit reproduire les $0{,}0000$ des PRs argmax.\n"
],
"id": "d52c7bdb"
},
{
"cell_type": "markdown",
"id": "4ec3161b",
Expand Down Expand Up @@ -227,6 +235,14 @@
" f\"{sorted(set(int(d) for d in evo.dominant_idx))}\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**Lecture de la sortie.** Même socle, même matrice de gains, même $\\mu$ -- et pourtant tout diffère : sur 401 générations, la coopération traverse $[0{,}261,\\ 0{,}938]$ et *finit* à $0{,}671$, douze fois le niveau final du réplicateur ($0{,}056$). Surtout, la liste des stratégies visitées à la dominante est $[0, 1, 2, 3, 4, 5]$ -- *tout* le vocabulaire, chaque stratégie a dominé au moins une génération. La population finie ne se fige pas : elle circule. C'est le contraste brut qui motive le plan décroisé -- avant même la mesure $b_1$, les deux dynamiques produisent des trajectoires qualitativement différentes sur le même substrat.\n"
],
"id": "a742c157"
},
{
"cell_type": "markdown",
"id": "6ba08a7c",
Expand Down Expand Up @@ -281,6 +297,14 @@
" print(f\"{dyn:<6} {obs:<8} {len(st):>6} {uniq:>17} {changes:>12}\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**Lecture du tableau des quatre séquences.** Longueur constante (401 partout), et deux facteurs qui se lisent en multiplicateurs sur la colonne *changements* : passer au digitize-8 multiplie les changements par 8 côté réplicateur ($1 \\rightarrow 8$) et par 4 côté agent-based ($70 \\rightarrow 280$) ; passer à la dynamique agent-based multiplie par 70 côté argmax ($1 \\rightarrow 70$) et par 35 côté digit8 ($8 \\rightarrow 280$). Les deux facteurs enrichissent le signal, mais la dynamique pèse un ordre de grandeur de plus que l'observable. La table est le plan factoriel $2 \\times 2$ rendu visible *avant* la mesure -- la question de la section suivante est de savoir lequel des deux facteurs fabrique du relief $b_1$, ou si les deux y contribuent.\n"
],
"id": "59b35e13"
},
{
"cell_type": "markdown",
"id": "a5aea6fe",
Expand Down Expand Up @@ -342,6 +366,14 @@
" print(f\" [{dyn} x {obs}] b1={r.b1}, n_edges={r.n_edges}, n_triangles={r.n_triangles}\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**Lecture de la table décroisée, ligne par ligne.** Réplicateur : $0{,}0000$ en argmax *et* en digitize-8 -- y compris la cellule haut-droite, celle qui n'avait jamais été mesurée : même à résolution riche, une trajectoire saturée ne produit aucun relief. Agent-based : $0{,}0280$ en argmax (petit mais non nul -- les 70 changements de dominante laissent une trace) et $0{,}5036$ en digitize-8. Les deux contrôles internes annoncés en intro tiennent : la ligne réplicateur reproduit les $0{,}0000$ des trois PRs argmax, la cellule bas-droite est non nulle comme le $0{,}3989$ de #12732. Le détail edges/triangles porte une leçon de méthode à lui seul : le graphe le plus *dense* est celui du repl $\\times$ argmax ($435$ arêtes, $4\\,060$ triangles) -- précisément la cellule à $b_1 = 0$ -- parce que deux symboles qui se répètent enchaînent beaucoup d'adjacences sans aucun changement de motif ; la cellule au relief maximal ($239$ arêtes seulement) est la plus *pauvre* en arêtes. Densité de graphe et relief de persistance mesurent deux choses différentes -- la table répond au plan factoriel : le relief exige la dynamique à population finie, l'observable seule ne suffit pas.\n"
],
"id": "723dc56f"
},
{
"cell_type": "markdown",
"id": "7f167d18",
Expand Down Expand Up @@ -410,6 +442,14 @@
"print(\"#12732 publiait 0.3989 sur cette cellule (graine 20260720).\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**Lecture du contrôle de reproduction.** Le pipeline 15j (frontières de fenêtres exactes de #12732) retrouve $0{,}3989$ -- la valeur *publiée*, identique, même graine maîtresse. Le pipeline unifié, lui, mesure $0{,}5036$ sur la même trajectoire. L'écart $0{,}3989 \\leftrightarrow 0{,}5036$ n'est donc pas un désaccord sur la donnée mais un effet de *définition* : les frontières de fenêtres du proxy changent le découpage, pas le verdict qualitatif (non nul, même ordre de grandeur). C'est exactement pourquoi la table de la section 4 annonce les deux : le contrôle garantit que l'écart inter-pipelines est documenté, jamais lissé -- et que le chiffre cité dans l'arbitrage porte toujours son pipeline avec lui.\n"
],
"id": "670bd0df"
},
{
"cell_type": "markdown",
"id": "9b707bcb",
Expand Down Expand Up @@ -481,6 +521,14 @@
"plt.tight_layout(); plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**Lecture du contrôle de résolution, ligne par ligne.** Colonne réplicateur : $0{,}0000$ à 2, 4, 8 *et* 16 symboles -- augmenter la résolution de l'observable ne fabrique aucun relief sur une trajectoire saturée, ce qui répond au point 3 de #13039 : l'observable n'est pas un facteur de confusion généralisé. Colonne agent-based : $0{,}0000$ (2 symboles), $0{,}1211$ (4), $0{,}5036$ (8), puis *chute* à $0{,}1598$ (16) -- non-monotone avec un pic net à 8. Trop peu de symboles : la séquence est grossière et le relief se moyenne ; trop : chaque symbole devient rare, les motifs longs se fragmentent et le $b_1$ se dilue. La résolution optimale vit entre les deux -- et le digitize-8 de la recette #12732 tombe précisément sur le pic de cette colonne.\n"
],
"id": "36002304"
},
{
"cell_type": "markdown",
"id": "07c4c400",
Expand Down
24 changes: 24 additions & 0 deletions MyIA.AI.Notebooks/IIT/ICT-Series/ICT-14b-ActiveInferenceEFE.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -377,6 +377,14 @@
"print(f\" Le terme épistémique s'éteint (l'incertitude se concentre), A ≈ B : frontière confirmée.\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**Lecture de la sortie.** Les dix valeurs, toutes seeds confondues, sont à $1{,}0$ -- la récupération de A comme celle de B, sans exception : en régime stationnaire les deux agents convergent vers le bras optimal. Ce qui subsiste est un régulateur fin : le regret résiduel vaut $2{,}04$ pour A contre $1{,}38$ pour B -- l'exploration dirigée continue à sonder légèrement après convergence, d'où un petit surcoût résiduel. C'est numériquement la frontière annoncée : le terme épistémique ne *pénalise* presque plus quand il ne sert plus -- il s'éteint de lui-même sur des postériors concentrés, et $A \\approx B$ au sens des ordres de grandeur ($2$ contre $1{,}4$, à comparer aux $35$ contre $66$ du régime non-stationnaire où l'écart était le signal).\n"
],
"id": "e622cadd"
},
{
"cell_type": "markdown",
"id": "39d2e78c",
Expand Down Expand Up @@ -429,6 +437,14 @@
"print(\" l'avantage de A est entièrement crédité au terme épistémique (pas à un artefact).\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**Lecture du contrôle nul.** Zéro violation sur $5 \\times 397 = 1\\,985$ décisions post-warmup : l'agent C ($\\lambda = 0$, terme épistémique ablaté) est *indiscernable* du greedy B, décision par décision. C'est la pièce qui verrouille l'attribution causale : si C divergeait de B ne serait-ce qu'une fois, l'avantage mesuré de A pourrait venir d'un artefact d'implémentation (une autre règle de choix, un tie-break différent) plutôt que du terme épistémique. Le null adverse tient -- l'écart $A > B$ du Gate 1 est *entièrement* crédité au terme épistémique de l'EFE, et à rien d'autre.\n"
],
"id": "9d17e837"
},
{
"cell_type": "markdown",
"id": "fbc3499d",
Expand Down Expand Up @@ -503,6 +519,14 @@
"print(\"(la croyance stale fige le greedy, seul l'épistémique dirige la ré-exploration).\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**Lecture du balayage.** La sortie énonce elle-même le résultat : *« l'avantage du terme épistémique émerge quand l'oubli ralentit (la croyance stale fige le greedy, seul l'épistémique dirige la ré-exploration) »*. Le long de l'axe $\\rho$, le delta de récupération $(A - B)$ traverse donc zéro : côté oubli rapide, la croyance se renouvelle assez vite pour que le greedy récupère seul -- l'oubli fait le travail d'exploration à la place du terme épistémique ; côté oubli lent, la croyance stagne sur l'ancien bras optimal et seul le terme épistémique pousse à re-sonder. Le régime du Gate 1 ($\\rho = 0{,}99$) est exactement le côté droit de cette frontière -- et le balayage montre que le verdict n'y est pas accidentel : c'est un continuum, pas un point isolé favorable.\n"
],
"id": "c754976a"
},
{
"cell_type": "markdown",
"id": "ed1c6c33",
Expand Down
Loading