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
46 changes: 1 addition & 45 deletions MyIA.AI.Notebooks/IIT/ICT-Series/ICT-28-CollectiveAdoption.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -163,17 +163,6 @@
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Lecture 1 — Le seuil existe : rho_c = 0.425, saut maximal 0.472\n",
"\n",
"Le verdict `critical_threshold` tranche : `threshold_exists = True`. L'adoption finale de la convention cible vaut **0.000** a rho = 0.05 et **1.000** a rho = 0.95 -- entre les deux, la courbe en S franchit un saut maximal de **0.472** entre points adjacents, et le rho_c (mi-saut le plus raide) tombe a **0.425**.\n",
"\n",
"La lecture a retenir : la performativite n'est pas un effet graduel -- elle est un phénomene de masse critique. En dessous d'environ 0.4, la convention cible ne perce pas ; au-dessus, elle devient inarretable. C'est la signature quantitative du seuil que la synthèse du notebook relie a la performativité : la convention ne triomphe pas parce qu'elle est meilleure, mais parce que suffisamment d'instigateurs la portent."
]
},
{
"cell_type": "markdown",
"id": "a1-interp-seuil",
Expand Down Expand Up @@ -231,17 +220,6 @@
"print(\" -> la convention novelle meurt : les naïfs convergent vers des conventions arbitraires.\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Lecture 2 — Sous le seuil : 0.011 contre 0.333 au niveau du hasard\n",
"\n",
"Sous le seuil, le verdict `below_threshold_dies` est net : a rho = 0.1, l'adoption finale de la cible vaut **0.011**, alors que le niveau du hasard (uniformite 1/n sur trois conventions) vaut **0.333**. La convention nouvelle ne meurt pas seulement -- elle finit TRENTE fois sous le niveau d'une convention choisie au hasard.\n",
"\n",
"La lecture contre-intuitive que le notebook encadre : les naifs ne restent pas indifferents, ils convergent vers des conventions arbitraires (les conventions rivales se cristallisent), et la cible disparait du paysage. Autrement dit, sous la masse critique, l'effort des instigateurs n'est pas seulement insuffisant -- il est efface par la dynamique d'imitation locale."
]
},
{
"cell_type": "markdown",
"id": "a2-interp-meurt",
Expand Down Expand Up @@ -296,17 +274,6 @@
"print(\" -> la convention novelle cascade : la cible devient quasi-universelle.\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Lecture 3 — Au-dessus du seuil : la cascade mene a 0.850\n",
"\n",
"Au-dessus du seuil, le verdict `above_threshold_cascades` confirme : a rho = 0.8, l'adoption finale de la cible atteint **0.850** -- la convention cascade jusqu'a devenir quasi-universelle, sans intervention externe additionnelle apres l'initialisation.\n",
"\n",
"Le contraste avec la lecture 2 est la structure du résultat : 0.011 contre 0.850 pour un rho passe de 0.1 a 0.8. La difference n'est pas de degre mais de regime -- le meme mecanisme d'imitation qui enterre la cible sous le seuil la generalise au-dessus. C'est exactement la non-linéarité en S -- la transition sigmoïde raide autour de rho_c = 0.425 -- que la cellule 2 avait mesurée, vue cette fois par le verdict booléen des deux extrémités."
]
},
{
"cell_type": "markdown",
"id": "2cd8121d",
Expand Down Expand Up @@ -353,17 +320,6 @@
"print(\" -> sans instigateur, la cible n'est jamais introduite : pas de cascade spontanée.\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Lecture 4 — Contrôle négatif : 0.000 sans instigateur\n",
"\n",
"Le contrôle négatif ferme la boucle : a rho = 0 (aucun instigateur), l'adoption de la cible vaut **0.000** sur toutes les simulations -- `no_cascade = True`. Sans instigateur, la cible n'est jamais introduite dans la population : aucune cascade spontanee ne peut la faire emerger.\n",
"\n",
"C'est l'épreuve falsifiante du notebook : la cascade mesuree a rho = 0.8 ne peut pas etre un artefact du mecanisme d'imitation seul -- si l'imitation suffisait a generaliser n'importe quelle convention, la cible percerait aussi a rho = 0. Le seuil rho_c = 0.425 mesure donc bien la contribution specifique des instigateurs : le moteur est l'interaction entre masse critique initiale et dynamique d'adoption, pas l'un ou l'autre isole."
]
},
{
"cell_type": "markdown",
"id": "a3-interp-controle",
Expand Down Expand Up @@ -587,4 +543,4 @@
},
"nbformat": 4,
"nbformat_minor": 5
}
}
44 changes: 1 addition & 43 deletions MyIA.AI.Notebooks/IIT/ICT-Series/ICT-29-ConceptInoculation.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -459,24 +459,6 @@
" print(f\"transmission_rate={rate:.2f} -> fraction finale post-retrait = {np.mean(finals):.3f}\")"
]
},
{
"cell_type": "markdown",
"id": "enrich13410-ict29-c12",
"metadata": {
"tags": []
},
"source": [
"#### 5a. La transition de phase du seuil endémique — et sa saturation\n",
"\n",
"Le balayage mesure la survie **post-retrait** (la grandeur exacte de la section 3) pour cinq taux de transmission :\n",
"\n",
"| `transmission_rate` | 0,05 | 0,10 | 0,20 | 0,40 | 0,60 |\n",
"|---|---|---|---|---|---|\n",
"| fraction finale post-retrait | **0,000** | **0,000** | **0,812** | 0,887 | 0,912 |\n",
"\n",
"Deux lectures, que le chiffre porte et que la prose ne disait pas. **(1) Le seuil est une frontière de phase, pas une pente.** Entre 0,10 et 0,20, la survie passe de l'extinction **exacte** (0,000) à l'endémie **massive** (0,812) : la frontière $R_0 = 1$ de la section 3 est localisée **entre 0,10 et 0,20**, à autres paramètres fixés. En dessous, doubler le taux ne fait rien (0,05 → 0,10 : toujours 0,000) ; au-dessus, le gain s'effondre (+0,075 puis +0,025 pour deux pas identiques de 0,20). **(2) Le régime endémique sature.** Une fois la frontière franchie, tripler le taux (0,20 → 0,60) n'achète que +0,10 de fraction : la contrainte n'est plus la transmission, elle est passée ailleurs — taille du parc encore infectable, rythme de l'oubli. Signature des systèmes à seuil : le paramètre critique décide du **tout ou rien**, les autres paramètres décident du **combien**."
]
},
{
"cell_type": "markdown",
"id": "e5860144",
Expand Down Expand Up @@ -525,18 +507,6 @@
" print(\"Aucune conversion (augmentez le taux de transmission).\")"
]
},
{
"cell_type": "markdown",
"id": "enrich13410-ict29-c14",
"metadata": {
"tags": []
},
"source": [
"#### 5b. Ce que la baseline du stub mesure — une adoption toutes précoces\n",
"\n",
"Avant même completion, le stub imprime la distribution des âges d'adoption — et cette **baseline** répond déjà à la question posée, d'une façon qui la déplace. Sur cette trajectoire : **28 conversions**, âge moyen **9,1** tours, médian **8**, et **zéro** adoption au-delà du tour 150. Moyenne ≈ médiane : distribution resserrée, sans queue. Autrement dit, à ces paramètres **il n'existe pas de convertis tardifs** — toute l'adoption se joue dans les dix premiers tours d'une course de 200. La question « les tardifs ont-ils un profil différent ? » est légitime en général mais **viciée sur ce banc** : comparer deux profils exige deux populations, et la population tardive est vide. Le complément intéressant de l'exercice n'est donc pas de séparer précoces et tardifs, mais de trouver les paramètres qui **créent** des tardifs — biais plus fort, ou taux plus bas, en s'inspirant du seuil de 5a."
]
},
{
"cell_type": "markdown",
"id": "1755d658",
Expand Down Expand Up @@ -588,18 +558,6 @@
"print(f\"paires P-P (hasard p^2) = {pp_expected_random:.3f}\")\n",
"print(f\"assortativité (obs - p^2)= {pp_observed - pp_expected_random:+.3f} (>0 = porteurs regroupés)\")"
]
},
{
"cell_type": "markdown",
"id": "enrich13410-ict29-c16",
"metadata": {
"tags": []
},
"source": [
"#### 5c. La mesure d'assortativité est dégénérée à saturation\n",
"\n",
"La baseline du stub imprime : fraction de porteurs **1,000**, paires P-P observées **1,000**, attendu au hasard $p^2$ **1,000**, assortativité **+0,000**. Ces quatre nombres ne sont pas quatre mesures indépendantes : quand la fraction vaut 1, **toutes** les paires sont porteur-porteur par construction, $p^2 = 1$, et l'écart `obs − p²` est **identiquement nul quelle que soit la structure du réseau d'interactions**. Le `+0,000` imprimé n'est donc pas l'absence de polarisation : c'est l'absence de **pouvoir discriminant** — la polarisation émergente, objet de l'exercice, est **non mesurable sur cette configuration**. Pour que la grandeur parle, il faut une fraction intermédiaire, exactement le régime mesuré en section 2 à biais 0,9 (**0,335**) : à ce réglage $p^2 = 0{,}112$, et un écart observé ne peut plus être un artefact de saturation. L'exercice complet consiste autant à **choisir le régime de mesure** qu'à calculer la grandeur."
]
}
],
"metadata": {
Expand All @@ -623,4 +581,4 @@
},
"nbformat": 4,
"nbformat_minor": 5
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -506,13 +506,6 @@
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**Lecture chiffrée — la variance comme jauge de réparation.** La métrique de la cellule n'est pas un compteur de cellules vivantes mais la **variance du champ $V$ dans le disque** $r=6$ centré sur l'argmax : la référence vaut $0{,}0155$, et après 360 pas de régénération la variance mesurée est retombée à $0{,}0038$ — le champ se recolle à ~25 % de sa variance d'origine ($0{,}0038/0{,}0155 \\approx 0{,}245$). L'échec de `time_to_recover` se lit dans le même compteur, sans quitter la sortie : la cible était 85 % de la référence, soit $0{,}85 \\times 0{,}0155 \\approx 0{,}0132$, et la variance réparée $0{,}0038$ n'en représente qu'environ 29 % — l'horizon 360 pas ne peut pas l'atteindre. La figure décline le constat en trois panneaux (référence $t=1200$, juste après `do(ablation)`, après 360 pas) : le cercle cyan de rayon 6 cerne la zone dévastée, et le panneau final montre le bord du disque recolonisé par les taches voisines — c'est la mitose qui régénère le site, pas le site lui-même.\n"
]
},
{
"cell_type": "code",
"execution_count": 6,
Expand Down Expand Up @@ -565,13 +558,6 @@
"print(f\" recovery_score sur le site = {recovery_gol:.3f} (le site ne redevient jamais un glider)\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**Lecture chiffrée — une bascule de catégorie, pas une dégradation.** La sortie pose d'abord le diagnostic de repos, glider intact : période `4` **et** déplacement `(1, 1)` — exactement la condition que la cellule va re-tester ensuite. Retirer la cellule arrière $(2, 3)$ suffit : les deux mesures plongent à `None` et `None`, et la condition composée (période 4 **et** déplacement (1, 1)) retombe à `False` — non pas « moins périodique », mais *hors de l'espace des gliders* d'un coup. La ligne `glider reconstitue : False` est un verdict binaire : un seul bit d'état éteint dans le motif fait basculer la catégorie entière, sans état intermédiaire que l'instrument de détection saurait nommer.\n"
]
},
{
"cell_type": "code",
"execution_count": 7,
Expand Down Expand Up @@ -619,13 +605,6 @@
"print(\" aucune structure n'a ete reconstruite (il n'y en a pas).\")\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**Lecture chiffrée — le retour en 11,5 unités de temps.** Le kick part du point fixe haut $x^* = 6{,}860$ et coupe l'état à $x = 4{,}459$ — c'est le produit $0{,}65 \\times x^*$ affiché par la sortie comme « −35 % ». Le critère d'arrêt est chiffré dans la boucle : $\\lvert x - x^* \\rvert \\le 0{,}01\\,x^* \\approx 0{,}069$, i.e. l'état est « revenu » dès qu'il est à moins de 1 % du point fixe. Il l'atteint en **230 pas Euler** (dt = 0,05), soit **11,5 unités de temps simulées** — et ce dans une boucle plafonnée à 4 000 pas : le retour consomme 5,75 % de la fenêtre de scrutation. La direction du diagnostic compte autant que la durée : kick vers le bas, retour vers le *même* point fixe haut — la sortie le dit en toutes lettres : « relaxation, pas regeneration ».\n"
]
},
{
"cell_type": "markdown",
"id": "ict31-14",
Expand Down Expand Up @@ -836,13 +815,6 @@
"print(\" (valeurs de part et d'autre de zero : l'instrument ne discrimine pas ici)\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**Lecture chiffrée — trois décimales pour dire « rien ».** L'instrument GOL travaille sur une grille **recentrée** : le centre de masse du motif est translaté au centre (avec repli modulo 32, sur le tore), et l'ancre est la moyenne de 15 trames (échantillonnage tous les 4 pas d'une trajectoire de 60). Mesures exactes : contrôle intact `0.000`, kick d'1 cellule (la cellule arrière de l'axe R) `0.286`, kick de 2 cellules `−0.167`. Deux anomalies à l'œil nu. Pas de **dose-réponse** : retirer davantage de cellules ne grossit pas la valeur — l'amplitude *décroît* (0,286 → 0,167) et le signe change. Et pas d'ordre de grandeur commun avec les instruments qui fonctionnent : S2 affiche `0.992`, S5 plafonne à `1.000` (sorties exactes, que la table arrondit à 0,99 et 1,00), tandis que le plus grand parasite GOL vaut 0,286 — environ 3,5 fois plus petit que le vrai signal le plus faible ($0{,}992/0{,}286 \\approx 3{,}5$). La ligne de sortie le résume elle-même : « l'instrument ne discrimine pas ici ».\n"
]
},
{
"cell_type": "markdown",
"id": "ict31-19",
Expand Down Expand Up @@ -1313,4 +1285,4 @@
},
"nbformat": 4,
"nbformat_minor": 5
}
}
Loading