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
31 changes: 31 additions & 0 deletions MyIA.AI.Notebooks/GameTheory/GameTheory-13-ImperfectInfo-CFR.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -8182,6 +8182,21 @@
"print(\"Briques de composition definies : produit cartesien, affine, enveloppe.\")\n"
]
},
{
"cell_type": "markdown",
"id": "md-8-1-verif-produit",
"metadata": {},
"source": [
"#### Theoreme 4.1 verifie : la somme des facteurs egale le produit\n",
"\n",
"Les trois briques sont assemblees ; les deux cellules suivantes **mesurent**. Le protocole de la premiere fait tourner deux `MiniRegret` independants pendant $T = 3000$ tours contre des pertes separees legerement correlees (terme $0.05 (x - y)$), puis compare deux quantites que seul le theoreme rend egales :\n",
"\n",
"- $R^X + R^Y$ — le regret du compose **predit par le theoreme**, somme des regrets de chaque facteur contre sa meilleure action pure (au sens de Hannan) ;\n",
"- $R^{X \\times Y}$ en **calcul direct** — le regret de la strategie produit jouee, contre la meilleure action pure du produit sur la meme trajectoire.\n",
"\n",
"L'egalite attendue n'est pas approximative : la minimisation d'une somme de pertes separees se distribue sur les facteurs, donc l'ecart ne doit refleter que l'erreur d'arrondi flottant sur 3000 accumulations — de l'ordre de $10^{-12}$, et non « petit devant les termes ». C'est toute la difference entre verifier une identite et tenir une borne."
]
},
{
"cell_type": "code",
"execution_count": 17,
Expand Down Expand Up @@ -8245,6 +8260,22 @@
"verify_product_decomposition()\n"
]
},
{
"cell_type": "markdown",
"id": "md-8-1-verif-hull",
"metadata": {},
"source": [
"#### Equation 4 verifiee : la borne enveloppe convexe\n",
"\n",
"La brique (c) est la seule des trois a porter une **inegalite** : $R^{\\mathrm{co}\\{X,Y\\}} \\le R^{\\Delta^2} + \\max\\{R^X, R^Y\\}$. La verification orchestre deux experts `MiniRegret` ($X$ et $Y$) et leur `ConvexHullMixer`, qui apprend le poids $\\lambda$ melangeant leurs strategies sur le simplexe $\\Delta^2$, puis mesure quatre regrets sur la **meme trajectoire** de pertes :\n",
"\n",
"- $R^X$ et $R^Y$ — le cout de chaque expert contre sa meilleure action pure ;\n",
"- $R^{\\Delta^2}$ — le regret du mixeur : le cout de ses melanges $\\lambda_t$ contre le meilleur expert fixe a posteriori ;\n",
"- $R^{\\mathrm{co}}$ — le regret de la strategie enveloppe **reellement jouee**.\n",
"\n",
"Deux subtilites de code a noter : la strategie enveloppe est capturee **avant** l'appel a `observe` (elle depend de l'etat interne au tour $t$, pas apres la mise a jour), et le regret du mixeur se calcule sur les pertes reelles de chaque expert. La borne doit tenir a $\\varepsilon$ pres ; un depassement serait une erreur d'implementation, pas une faiblesse du theoreme."
]
},
{
"cell_type": "code",
"execution_count": 18,
Expand Down
26 changes: 26 additions & 0 deletions MyIA.AI.Notebooks/GameTheory/GameTheory-13d-Optimistic-CFR.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -927,6 +927,22 @@
""
]
},
{
"cell_type": "markdown",
"id": "md-1-4-dcfr",
"metadata": {},
"source": [
"### 1.4 Le champion empirique : DCFR, la mémoire oublieuse\n",
"\n",
"Le pas optimiste ci-dessus offre la meilleure **garantie théorique** ; le §1.3 annonçait que la première place **empirique** reste au DCFR — c'est la cellule suivante qui l'implémente, pour que la confrontation soit loyale. Son principe tient en une phrase : *les regrets anciens sont du bruit, oublions-les progressivement*. Concrètement, la combinaison de Brown & Sandholm (2019) emboîte trois mécanismes :\n",
"\n",
"- un **discount des regrets anciens** par $t/(t+\\alpha)$ — chaque tour pèse relativement plus que le précédent, la somme de regrets s'adapte aux dernières itérations ;\n",
"- un **discount de la somme de stratégies** par $(t/(t+\\beta))^2$ — désactivé par défaut ici ($\\beta = 0$), il ne servirait qu'à ralentir l'uniformisation de la stratégie moyenne ;\n",
"- le **clipping CFR+** ($\\gamma$) — les regrets négatifs sont écrêtés, la mise à jour ne propage que le regret positif accumulé.\n",
"\n",
"L'ironie pédagogique est assumée : le solveur le plus simple conceptuellement — un CFR+ qui oublie — est celui que le benchmark suivant confrontera à l'OFTRL."
]
},
{
"cell_type": "code",
"execution_count": 3,
Expand Down Expand Up @@ -1021,6 +1037,16 @@
" f\"DCFR={cfr_d.get_average_strategy('Q').round(3).tolist()}\")\n"
]
},
{
"cell_type": "markdown",
"id": "md-1-5-benchmark",
"metadata": {},
"source": [
"### 1.5 L'instrument de mesure : même budget, même graine\n",
"\n",
"Une comparaison honnête exige de neutraliser tout sauf l'opérateur de mise à jour. La cellule suivante instancie les quatre variantes — CFR, CFR+, DCFR, OFTRL — et les exécute sur Kuhn poker avec un **budget d'itérations identique** et une **graine commune** (`np.random.seed`) : la séquence aléatoire est figée, l'écart final n'est imputable qu'au solveur. Deux mesures sont rapportées : le **temps de calcul** (`perf_counter`) et un **proxy d'exploitabilité** en démo — la norme de l'écart entre la stratégie moyenne apprise sur l'info set `Q` et l'uniforme $[0.5, 0.5]$. Le §1.3 laisse attendre le DCFR en tête ; la section 2 confrontera cette attente aux chiffres."
]
},
{
"cell_type": "code",
"execution_count": 4,
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
date: '2026-09-13'
by: myia-po-2024:CoursIA
python_sha: 4c953bd9b121fd1aac9683859e2571c32a9a5f4e
csharp_sha: 62d089558097085b4221f5f53cddb12b0d110d12
content_python_sha: fcab516dc4e71b5b96fe9a760675a805e4890e736802519fc410bd6a6162bcc2
content_csharp_sha: d8a93c30da3c647ad3bd8f3567d5394523c73e1a5cf7b4b0f7adfc6ed10961ed
reason: "Markdown-only cote Python (#12797, tranche 2 CFR) : 2 cellules markdown intermediaires inserees dans le run des verifications (briques de composition -> verify_product_decomposition -> verify_hull_bound), aucune cellule code touchee (source/execution_count/outputs verifiees identiques vs origin/main). Cote C# intact (csharp_sha = HEAD). Parite de contenu algorithmique inchangee (niveau semantic). Precedents re-baseline markdown-only sur cette paire : 2026-08-05 (de-pin utilites derniere iteration), 2026-07-25 (doc-honesty cell[30])."
Loading