RL - Reinforcement Learning

← Notebooks | ↑ .. | → GameTheory

Note éditoriale (counts) : Le marqueur CATALOG-STATUS ci-dessus est autoritatif pour le compte agrégé (26 notebooks pédagogiques). Pour la décomposition langagière par kernel (metadata.kernelspec.language), ce README reste autoritatif car la granularité kernel n’est pas dans le marqueur agrégé ; elle est documentée ici par lecture directe des kernelspecs au 23/09/2026 :

Python 100% = 36/36 fichiers mono-langage ✓ (36 fichiers *.ipynb sur disque hors _output.ipynb — 32 kernels python3 + 4 kernels coursia-ml-training (rlpt_0c, rlpt_2, rlpt_3, rlpt_4), tous language: python ; l’écart avec le pedagogical_count: 26 du marqueur correspond aux fichiers non catalogués ; exécution via MCP Jupyter nbconvert --execute --to notebook ou jupyter nbconvert --execute --inplace). La table « Notebooks » ci-dessous documente les 36 — les lignes de rl_1b, rl_1c, RL-7b et rl_14, absentes depuis leur livraison (dérive pré-existante), y ont été réconciliées à la livraison du notebook 16 ; celles du 17 (k-server WFA), du 18 (matroid secretary), de rlpt_0c et de rlpt_0d s’y sont ajoutées depuis, puis celle du 19 (reward tampering).

RL est un cas de mono-langage Python 100% : tous les algorithmes (DQN, REINFORCE, A2C, PPO, SAC, GRPO, Dyna-Q, BCQ offline, reward shaping, POMDP belief tracker, C51 distributional, RND curiosity, k-server WFA, matroid secretary, reward tampering) sont implémentés en Python, soit via PyTorch / Stable Baselines3 / Gymnasium, soit from-scratch en NumPy + PyTorch / stdlib pure. C’est une variante L392 #6 NEW : contrairement à ML (#5915) qui a des jumeaux C#/Python intra-sous-série, Probas (#5916) qui a une mixité intra-série multi-paradigme (.NET C# + Python), QC (#5917) cloisonnée par sous-série, et Sudoku (#5918 / c.388) qui a une mixité jumeaux dominante + 1 compagnon Lean intra-hub, RL a une uniformité mono-paradigme avec 7 moteurs SOTA distincts (PyTorch, NumPy, matplotlib, Stable Baselines3, Gymnasium, highway_env, PettingZoo) — registre EPIC #3801 entry #009 (PR #5922 — collision avec PR canonique utilisateur #5925, await ai-01 decision).

Régénération du marqueur : catalog-cron.yml (cron quotidien 03:37 UTC sur main, commit [skip ci] par github-actions[bot]) — le bloc ci-dessus est régénéré automatiquement, ne pas le modifier manuellement sur une branche feature (catalog-pr-hygiene R1).

Le Reinforcement Learning (apprentissage par renforcement) est la branche de l’IA qui apprend à un agent à prendre des décisions optimales par l’essai et l’erreur, en recevant des récompenses ou des pénalités de son environnement. C’est la technologie derrière AlphaGo, les robots de Boston Dynamics, les systèmes de recommandation de Netflix, et les voitures autonomes. Là où l’apprentissage supervisé prédit à partir d’exemples étiquetés et l’apprentissage non supervisé découvre des structures, le RL agit : il choisit des actions, observe leurs conséquences, et s’améliore itérativement.

Cette série couvre les fondements théoriques (bandits, MDP, équation de Bellman, Q-Learning), les algorithmes avec réseaux de neurones (DQN, Policy Gradient, PPO) et les frameworks de production (Stable Baselines3). Vous commencerez par entraîner un agent en quelques lignes avec un framework industriel, puis vous implémenterez les mêmes algorithmes depuis zéro pour comprendre ce qui se cache sous le capot.

Note de frontière — algorithmes online (rl_17, rl_18) : ces deux distillations relèvent de l’analyse compétitive (garanties de pire cas contre l’optimum offline, sans boucle d’apprentissage) plutôt que du RL stricto sensu. Elles sont hébergées ici comme famille de la décision séquentielle — ratios compétitifs et regret étant les deux langages de garantie de la décision online. Le placement définitif (série RL vs axe « Search Online/Offline » dédié) est sous arbitrage utilisateur (#16429).

À qui s’adresse cette série : étudiants en IA, développeurs souhaitant ajouter des capacités décisionnelles à leurs applications, et chercheurs en automatique ou robotique. Prérequis : Python intermédiaire et bases en calculus (gradients). Aucune expérience RL préalable nécessaire pour le notebook 1.

Figures — extraites des sorties réelles des notebooks

Le RL se comprend mieux en voyant l’agent apprendre. Six visualisations suivent la progression des fondements aux frontières : des bandits multi-bras à l’exploration par curiosité, en passant par les MDP, le reward shaping, les POMDP et le RL distributionnel. Sorties d’exécution réelles (règle C.3 — non régénérées pour l’illustration). Elles sont réintégrées in-situ dans la section qui en commente le concept ; la provenance exacte (cellule source, poids, alt-text) figure dans assets/readme/MANIFEST.md.

Notebooks

# Notebook Contenu Durée
1 rl_1_intro_cartpole Introduction PPO, CartPole 25-30 min
1b rl_1b_bitwise_logic_synthesis Synthèse logique d’un contrôleur CartPole : bitwise 4-règles — scellement observation→bits IEEE-754, contrôleur LQR de référence (taux de désaccord), PPO budget modeste, étude de rupture et ablation. Accrétion de rl_1 20-25 min
1c rl_1c_prolog_distillation Distillation d’une politique RL en programme Prolog exécutable : teacher PPO from scratch (seed fixe), census exhaustif de T-bar, induction gloutonne type FOIL, liste de décision avec cuts, one-pass vs DAgger, SWI-Prolog réel journalisé. Accrétion de rl_1 45-60 min
2 rl_2_wrappers_sauvegarde_callbacks Wrappers, sauvegarde, callbacks 35-40 min
3 rl_3_experience_replay_her HER, goal-conditioned RL 40-45 min
4 rl_4_multi_armed_bandits Bandits manchots, exploration vs exploitation, Thompson Sampling 30-35 min
5 rl_5_mdp_dp_qlearning MDP, Value/Policy Iteration, Q-Learning tabulaire 45-50 min
6 rl_6_dqn_policy_gradient DQN depuis zéro, REINFORCE 50-55 min
6b rl_6b_actor_critic Actor-Critic (A2C) depuis zéro, advantage, entropy bonus 45-50 min
6c rl_6c_ppo_from_scratch PPO depuis zéro, échantillonnage d’importance (ratios par epoch, ESS), clipped surrogate, GAE, comparaison A2C vs PPO 45-50 min
6d rl_6d_sac_from_scratch SAC depuis zéro, maximum entropy RL, twin Q-networks, auto-température 45-50 min
6e rl_6e_grpo_from_scratch GRPO depuis zéro (DeepSeek-R1), avantage relatif intra-groupe (sans critic), clip PPO + KL vs référence, portefeuille synthétique multi-seed 45-50 min
7 rl_7_multi_agent_rl Multi-Agent RL, PettingZoo, IQL 45-50 min
7b RL-7b-Climbing-Game Sur-généralisation relative dans le Climbing Game coopératif : même agent tabulaire, IQL vs Hysteretic Q-learning, protocole multi-graines, IQM + intervalle bootstrap, ablation du pessimisme ~45 min
8 rl_8_model_based_dyna_q Model-based RL : Dyna-Q, Dyna-Q+, planification, rollouts 45-50 min
9 rl_9_offline_rl RL offline : Behavior Cloning, erreur d’extrapolation, BCQ-lite 50-55 min
10 rl_10_reward_shaping Reward Shaping (Ng 1999), curriculum learning, pont RLHF 45-50 min
11 rl_11_pomdp POMDP, Tiger Problem, belief tracking, Q-MDP 45-50 min
12 rl_12_distributional_rl RL distributionnel : C51 (Categorical DQN) depuis zéro, projection catégorielle, politique CVaR 50-55 min
13 rl_13_curiosity_exploration Exploration par curiosité (RND), motivation intrinsèque, piège d’exploitation 35-40 min
14 rl_14_hierarchical_rl Hierarchical RL — l’Option framework de Sutton, Precup & Singh : abstraction temporelle, options (I, π, β), gridworld quatre-pièces, crédit sur longue horizon ~50 min
15 rl_15_grpo_group_relative_policy GRPO (Group Relative Policy Optimization) vs PPO sur CartPole-v1 — avantage relatif intra-groupe (sans critic) vs GAE bootstrapé, multi-seed 6 (0/1/7/42/99/123), Wilcoxon signed-rank + IC95% bootstrap. Prong B discrimination moteur. Sous-grain #13436 de l’EPIC #1454. Verdict v3 (REPAIR c.644) : INCONCLUSIVE (le claim initial v1 « GRPO BEATS PPO » souffrait de défauts done-mask + pad-mask — c.642 a corrigé en INCONCLUSIVE, puis c.644 a détecté 4 post-fix incohérences résolues : Wilcoxon n=4 inatteignable, verdict tri-state asymmétrique, hypothèse descriptive fausse réfutée, titre PR ré-aligné — verdict v3 INCONCLUSIVE maintenu, moyennes v3 = 299.36 vs 197.65, std = 55.26 vs 104.99) 40-45 min
16 rl_16_dream_rsi Dream-RSI (arXiv 2609.14858, preprint 14/09/2026) : exploration explicite programmable (politique = code), historique de découverte = simulateur-replay, dreaming = évaluation off-policy à coût zéro, boucle RSI avec incumbent (garantie non-régression replay-only) — monde jouet circle-packing stdlib (16 cercles), ablation replay brut vs guidance sémantique mesurée (3/2/7), chiffres du papier rapportés non canonisés. Distillation #16417 40-45 min
17 rl_17_k_server_wfa k-server et work function algorithm : la conjecture (1990) mesurée en monde jouet — un seul moteur DP (la work function EST l’optimum offline), WFA en ligne sur ligne/cycle/métrique uniforme, vérification par instance WFA ≤ k×OPT (0 violation / 600 instances seedées), duel WFA vs LRU/FIFO sur paging (boucle k+2 : LRU 60 faults vs WFA 46, k×OPT = 96), work function visualisée en heatmap des configurations. Distillation du preprint arXiv 2609.15979 (soumis 14/09/2026, non relu — bandeau honnêteté : mesuré ≠ prouvé, ratios réalisés ~1.1-1.6 vs garantie pire-cas k) 35-40 min
18 rl_18_matroid_secretary Le secrétaire matroïdal : la conjecture (2007) mesurée élément par élément — trois matroïdes jouets par oracle (uniforme/partition/graphique), l’algorithme de Singla (échantillon Bin(n,1/2), configuration virtuelle, glouton des deux côtés — ordinal, ne connaît que n), banc de mesure P[accept | e ∈ OPT] sur 6 instances × 4000 essais : min 0,260-0,353, garantie 1/4 jamais violée et serrée sur les rangs 1-2, E[ALG]/OPT ≈ 0,44, prix de l’universalité 0,41 → 0,26 vs le seuil 1/e classique (formule exacte n=8 vs limite asymptotique). La garantie utilisée comme test exécutable : le bug d’implémentation du prototype (0,119) détecté par le banc. Distillation du preprint arXiv 2609.14555 (soumis 13/09/2026, non relu) 35-40 min
19 rl_19_reward_tampering Reward tampering : l’agent qui peut réécrire sa récompense — Rocks and Diamonds à paramètre θ modifiable (exemple 2 d’Everitt et al., Synthese 2021), quatre agents résolus par induction arrière exacte sur 32 252 états (standard, oracle, current-RF TI-ignoring et TI-considering) : les trois prédictions du papier mesurées conforme. Au-delà du diagramme : l’indifférence n’est pas la protection — valeur de l’option de manipuler +16 (standard) contre +0 (TI-ignoring), mais départage aléatoire des égalités → manipulation 33/200 (H = 30) et 68/200 (H = 60), toujours après la tâche ; Q-learning standard 0/5 graines en initialisation nulle, 5/5 en optimiste. RF-input tampering (autocollants sur la caméra) : 88 observé / 0 réel contre 20 / 20 sous récompense sur croyance. Distillation #14468 35-40 min
pt-0 rlpt_0_reward_model_from_scratch Reward model from scratch (Bradley-Terry) : apprendre r(x, y) depuis des paires de préférences sur le monde de rlpt_1 — MLE BT sans trl.RewardTrainer, évaluation honnête vs plafond de Bayes, calibration (ECE), identification affine, multi-seed 4 35-40 min
pt-0b rlpt_0b_preference_dataset_bias Biais d’un dataset de préférences, mesurés sur monde synthétique à longueurs variables : les trois biais classiques (longueur, position, annotateurs) injectés à paramètres connus, dégât mesuré contre le plafond de Bayes d’un juge oracle non biaisé, puis les mitigations du cahier des charges (length-controlled, swap-augmentation, annotator embedding) plus une quatrième qui sert de contrôle — verdict mesuré : aucune ne franchit 2σ, le length-controlled est structurellement sans effet sur une métrique de classement, l’orthogonalisation de longueur aggrave le biais 40-45 min
pt-0c rlpt_0c_reward_hacking_case_study Anatomie d’un reward hacking qui prend — le pendant de rlpt_3 : reward model Bradley-Terry appris sur des préférences à biais de longueur, PPO from scratch sur ce proxy, puis bras de contrôle (récompense longueur-contrôlée + oracle) qui identifie le biais comme cause. Mesures : qualité vraie 0,4545 → 0,0170 sous le proxy biaisé, contre 0,9905 sous contrôle ; basculement situé sur l’action de tête du proxy (argmax non correct à α ≈ 2,0), stable sur 4 graines 35-40 min
pt-0d rlpt_0d_reward_trainer_sota Le même problème que rlpt_0, traité par le harnais industriel trl.RewardTrainer : monde, juge, architecture (5 441 paramètres) et seeds identiques, une seule variable — le harnais. Documente les quatre exigences de contrat non devinables (num_labels=1, processing_class, gradient_checkpointing=False, self.post_init()) et la traduction y → chosen_ids/rejected_ids ; verdict mesuré : trl devance la boucle maison (0.676 ± 0.007 vs 0.658 ± 0.008, écart +0.018 = 2.2σ ; Brier et Spearman meilleurs aussi) pour un coût en temps de ~10× sur ce modèle minuscule, et l’évaluation honnête reste entièrement à ré-écrire — trl n’évalue pas pour vous 35-40 min
pt-0e rlpt_0e_trl_DPO_SOTA trl.DPOTrainer (bras SOTA) contre DPO from scratch et reward model explicite de rlpt_0 sur le même monde et les mêmes paires de préférences, à budget égal (même β, même lr, mêmes époques) — multi-seed {0,1,7,42} départagé au plafond de Bayes : verdict B ≈ C > A (DPO maison 0.679 / trl 0.678 / RM 0.661 vs plafond 0.695 ; B vs C indiscernables à ±0.008 près), marges implicites B↔︎C corrélées ρ≈0.98 = même math ; la différence robuste est le coût fixe de la pile (×22 sur jouet CPU) — inclut la garde de frontière prompt/complétion (piège trl : prompt sans espace finale) 25-35 min
pt-0f rlpt_0f_comparaison_GRPO_TRL_et_PPO_maison trl.GRPOTrainer (bras SOTA en ligne) contre le PPO maison de rlpt_1 sur le même monde et le même juge RM (rlpt_0), à budget apparié (2 304 réponses évaluées par bras, même β_KL) — multi-seed {0,1,7,42} : verdict INCONCLUSIVE (gain maison 0.486±0.205 / trl 0.670±0.102, écart +0.184 < 2σ) ; la différence robuste est le critic (value net appris vs moyenne de groupe — la baseline est LE choix de design) et le coût d’écriture et de runtime (tableau comparatif section 7) — inclut le fait structurant mesuré dans l’env : trl.PPOTrainer a quitté la racine de trl (déplacé dans trl.experimental.ppo, assert garde-frontière sur la surface réelle) et le trainer historique remis en service en 3e bras (section 5bis : PPO complet critic + GAE, juge BT reconstruit au format lib, seed 0) 30-45 min
pt-0g rlpt_0g_ppo_TRL_experimental trl.experimental.ppo.PPOTrainer / PPOConfig instanciés comme surface SOTA réelle (pas seulement importés) — surface instable par convention mais invocable, signature introspectée (num_train_epochs, use_cpu). Boucle PPO conforme Schulman 2017 (rollout → GAE → surrogate clip → value loss) avec hyperparamètres alignés sur PPOConfig. Verdict SOTA INTRINSIC documenté (6 axes) : la mini-tâche symbolique ne se branche pas sur PPOTrainer directement (LM transformers requis), mais l’algorithme est strictement celui qu’enrobe TRL. Multi-seed {0,1,7,42} : moyenne finale 0.401 ± 0.041, en dessous du baseline uniforme 0.497 (gap −0.096 ≈ 2.3σ), donc dans la bande des 3 baselines (verdict INCONCLUSIVE : PPO ne surpasse pas le baseline uniforme, mais l’écart reste comparable à 2σ et le notebook documente la signature d’apprentissage). Complément de rlpt_0f (PPO maison vs GRPO) sur l’axe RLHF #16063 — ferme l’item 6 30-40 min
pt-1 rlpt_1_ppo_lm_rlhf PPO pour alignement d’un petit LM (RLHF toy, from scratch, char-level) : reward model jouet, KL vs politique SFT de référence, multi-seed 4 — la signature RLHF, différenciée de rl_6c (PPO CartPole) et rl_6e (GRPO) 40-45 min
pt-2 rlpt_2_grpo_minimal GRPO sur Qwen3.5-0.8B local (8 Go Viability), reward vérifiable, budget steps borné — le cœur « à la Deepseek » : group rollouts, avantage sans value net, pont #5105 45-55 min
pt-3 rlpt_3_reward_hacking Reward hacking × inoculation, version compacte du capstone #5105 : le hack sur récompense vérifiable faillible, la détection rewardspy, l’inoculation comme variable expérimentale, verdict reproductible (seed fixée) 35-40 min
pt-4 rlpt_4_dpo_vs_ppo DPO/ORPO offline vs GRPO online sur même tâche conversationnelle, même budget 40 steps, préférences auto-fabriquées — verdict multi-seed {42,0,1,7} honnête DM, dispersion inter-seed documentée 50-55 min

Frontière avec GenAI/PostTraining — où ouvre rlpt_*, où ouvre PT_*

Les sous-séries rlpt_* et GenAI/PostTraining couvrent le même terrain (post-training d’un LM) à des niveaux de pile différents. La frontière est posée explicitement pour qu’un lecteur sache quel notebook ouvrir pour quelle question.

Question pédagogique Ouvrir Pourquoi
« D’où vient le reward model avant tout RLHF — comment l’apprendre à partir de préférences ? » rlpt_0 Bradley-Terry from scratch sur le monde de rlpt_1 : l’étage que rlpt_1 saute en codant son oracle en dur — plafond de Bayes, calibration, identification affine.
« Pourquoi un reward model apprend-il le biais de son annotateur plutôt que la qualité ? » rlpt_0b Les trois biais d’un dataset de préférences injectés à paramètres connus : le RM recopie le raccourci du juge (gamma mesuré vs lambda injecté) quand le biais lui est représentable, et se contente de sous-échelonner quand il ne l’est pas (biais de position) — dans les deux cas l’accord à l’oracle descend.
« Le harnais SOTA (trl) fait-il mieux que ma boucle from scratch — et que me coûte-t-il ? » rlpt_0d trl.RewardTrainer sur le même monde que rlpt_0, à architecture identique : le harnais gagne (0.676 ± 0.007 vs 0.658 ± 0.008, +0.018 = 2.2σ), coûte ~10× le temps sur un modèle minuscule, impose quatre réglages de contrat, et n’évalue pas pour vous.
« Comment marche PPO-RLHF en petit, sans framework ? » rlpt_1 RLHF from scratch sur LM char-level — on voit les gradients, le reward model jouet, la KL vs la politique SFT de référence, multi-seed 4.
« Comment GRPO est câblé intérieurement (group rollouts, avantage intra-groupe, no critic) ? » rlpt_2 GRPO Qwen3.5-0.8B local sans trl complet — la boucle d’entraînement est écrite à la main, on voit chaque rollout, chaque reward.
« Le reward hacking est-il un attracteur spontané sur petit modèle ? Comment l’inoculer ? » rlpt_3 Cas clinique minimal : 3 voies pour tenter de déclencher le hack, inoculation comme variable expérimentale, verdict reproductible (seed fixée).
« Pourquoi le reward hacking arrive-t-il — le reward model est-il vraiment la cause ? » rlpt_0c Isolation de cause : le biais de longueur est lu dans les poids du reward model appris, puis retiré — la qualité se rétablit (bras de contrôle), et le basculement est situé sur l’action de tête du proxy.
« DPO offline vs GRPO online à budget égal — qui gagne ? » rlpt_4 Comparaison à budget 40 steps, préférences auto-fabriquées, verdict multi-seed {42,0,1,7} honnête Diebold-Mariano, dispersion inter-seed documentée.
« GRPO + RLVR sur un vrai LLM, avec trl + reward vérifiable + détecteurs Goodhart en ligne ? » PT-11a, PT-11b La chaîne SOTA 2024-2025 appliquée : trl.GRPOTrainer + Qwen3.5-0.8B QLoRA 4-bit + Z3/SymPy vérificateur + rewardspy.watch_trl en ligne.
« Quels sont les 6 détecteurs statistiques du reward hacking ? » PT-07 Le catalogue rewardspy.detectors (Component Dominance, Length Drift, etc.). Outil — rlpt_3 est le cas d’usage.
« InoculationRL complet, panel persona × reward hackable, la réplique poids du capstone ? » #5105 ICT-25 Capstone final, distinct de rlpt_3 (qui en est la version compacte).

Une phrase à retenir : rlpt_* = la mécanique, en petit, sans framework (from scratch, CPU/char-level ou Qwen3.5-0.8B sans la pile trl complète — on voit chaque rollout et chaque gradient) ; GenAI/PostTraining = la chaîne réelle, à l’échelle (trl, vrai LLM, solveur vérifiable, multi-seed, détecteurs Goodhart). Si votre question porte sur pourquoi un algorithme fonctionne, ouvrez rlpt_*. Si votre question porte sur comment le déployer en SOTA 2025, ouvrez PT_*.

Le constat d’éventuelle duplication entre rlpt_2 ↔︎ PT-11a et rlpt_3 ↔︎ PT-07 est traité en #11460 : la différenciation tient à ce qu’on regarde (mécanique vs déploiement outillé), pas à ce qu’on calcule — c’est précisément ce qui justifie les deux.

Parcours recommandé

Notebook 1 (Bases SB3)
    |
    v
Notebook 4 (Bandits) ---> Notebook 5 (MDP / Q-Learning) ---> Notebook 6 (DQN / REINFORCE)
    |                                                          |
    v                                                          v
Notebook 2 (Production features)                           Notebook 6b (A2C) ---> Notebook 6c (PPO) ---> Notebook 6d (SAC) ---> Notebook 6e (GRPO)
    |                                                                               |
    v                                                                               v
Notebook 3 (Goal-conditioned RL)                                                 Notebook 7 (Multi-Agent) ---> Notebooks 8-13
                                                                                 (model-based, offline, shaping, POMDP, distributionnel, curiosité/RND)
Objectif Notebooks
Découverte rapide 1 uniquement
Exploration et bandits 4 + 13 (curiosité / RND)
Fondations SB3 1 + 2 + 3
Fondements théoriques 4 + 5 + 6 + 7 + 8
Maîtrise complète 1 à 13

Parcours d’apprentissage

Phase 1 : Prise en main production (~1h, notebooks 1-2)

Le notebook 1 pose les bases : vous installez Stable Baselines3, créez votre premier agent PPO sur CartPole, et visualisez ses performances. En 30 minutes, vous avez un agent entraîné qui équilibre un bâton. Le notebook 2 enrichit cette base avec les outils de production : wrappers pour modifier les environnements, callbacks pour monitorer l’entraînement, et multiprocessing pour accélérer les expériences.

Phase 2 : Problèmes avancés (~1.5h, notebook 3)

Le notebook 3 introduit les tâches à objectifs (goal-conditioned RL) avec l’algorithme HER (Hindsight Experience Replay). Vous résoudrez un problème de parking autonome où l’agent doit atteindre une position cible. C’est le passage de “équilibrer un bâton” à “garer une voiture” — un saut qualitatif qui montre la puissance du RL.

Phase 3 : Exploration et bandits (~30min, notebook 4)

Le notebook 4 pose la question fondatrice du RL : comment choisir entre explorer de nouvelles options et exploiter ce qui fonctionne déjà ? Vous implémenterez des stratégies d’exploration (epsilon-greedy, decaying epsilon, Thompson Sampling) sur un problème de bandits manchots et comparerez leur regret cumulé.

Phase 4 : Les maths sous le capot (~10h, notebooks 5-13)

Les notebooks 5 à 13 quittent le framework pour implémenter les algorithmes depuis zéro.

Le notebook 5 formalise le problème RL (MDP, équation de Bellman, Value/Policy Iteration) et introduit le Q-Learning tabulaire sur FrozenLake et CliffWalking.

Le notebook 6 passe à l’échelle avec les réseaux de neurones : DQN et REINFORCE implémentés en PyTorch pur.

Le notebook 6b introduit l’architecture Actor-Critic (A2C).

Le notebook 6c pousse plus loin avec PPO et son mécanisme de clipping, introduit GAE, et compare les approches.

Le notebook 6d approfondit avec SAC (Soft Actor-Critic) et le framework maximum entropy pour les actions continues.

Le notebook 6e clôt la lignée policy-gradient avec GRPO (Group Relative Policy Optimization, l’algorithme d’entraînement RL de DeepSeek-R1) : l’avantage y est estimé par comparaison au sein d’un groupe de rollouts, sans réseau critique — le pont le plus direct de la série vers le RLHF des LLMs.

Le notebook 7 aborde le multi-agent : plusieurs agents qui apprennent simultanément, coopèrent ou s’affrontent (TicTacToe avec self-play).

Le notebook 8 ouvre la voie model-based : apprendre un modèle du monde et planifier dessus (Dyna-Q, Dyna-Q+, rollouts), avec les ponts vers MCTS, AlphaZero et MuZero.

Le notebook 9 retire le droit d’interagir : apprendre d’un dataset figé (RL offline), avec le Behavior Cloning, l’erreur d’extrapolation du Q-learning naïf, la contrainte de support (BCQ-lite) et le pont vers RLHF/DPO.

Le notebook 10 s’attaque au problème du reward sparse : comment guider l’agent quand la récompense est rare ? Le reward shaping potential-based (Ng et al. 1999) accélère la convergence sans biaiser la politique optimale, le curriculum learning organise la difficulté progressive, et le pont vers RLHF montre que le reward model appris est un shaping automatisé.

Le notebook 11 aborde la partial observability : l’agent ne voit plus l’état vrai mais une observation bruitée. Le Tiger Problem (Cassandra 1994) illustre le POMDP, le belief tracking (filtre bayésien) maintient une estimation de l’état caché, et le Q-MDP approximation montre les limites de l’approche tabulaire.

Le notebook 12 enrichit l’objectif lui-même : au lieu d’apprendre l’espérance du retour comme un DQN, C51 (Categorical DQN, Bellemare et al. 2017) apprend sa distribution complète \(Z(s,a)\) sur un support à atomes fixes, via une projection catégorielle de la cible de Bellman — ce qui débloque les politiques sensibles au risque (CVaR) impossibles avec une valeur scalaire, et ouvre la lignée QR-DQN / IQN / Rainbow.

Le notebook 13 termine sur l’exploration par motivation intrinsèque : RND (Random Network Distillation) transforme l’erreur de prédiction d’un réseau cible figé en bonus de nouveauté, débloquant les récompenses parcimonieuses hors de portée d’epsilon-greedy. Une sous-série Post-Training (rlpt_*) prolonge cette lignée vers le RL appliqué aux modèles de langage : reward model appris depuis des préférences Bradley-Terry, from scratch (rlpt_0), PPO-RLHF from scratch sur un petit LM char-level (rlpt_1), GRPO sur Qwen3.5-0.8B avec reward vérifiable (rlpt_2, run réel 8 Go), l’anatomie du reward hacking et son inoculation (rlpt_3), le cas où le hack prend avec isolation de la cause par bras de contrôle (rlpt_0c), puis la comparaison offline-vs-online entre DPO et GRPO à budget égal (rlpt_4). Chaque notebook de la sous-série stub ≥3 exercices, ancre ses interprétations sur des sorties réellement exécutées (C.2), et documente son verdict d’honnêteté multi-seed — la série constitue la transition naturelle entre rl_6e (GRPO from scratch) et le pipeline capstone ICT-25 / Post-Training (#5105).

Prerequisites

Connaissances requises

  • Python intermédiaire (classes, numpy)
  • Concepts RL de base (agent, environnement, reward)
  • Pas d’expérience RL préalable nécessaire pour le notebook 1
  • Bases PyTorch pour les notebooks 6, 6b, 6c, 6d, 6e (tenseurs, autograd, Module)

Installation

# Environnement Python
python -m venv venv
venv\Scripts\activate  # Windows

# Dépendances de base (notebooks 1-4)
pip install "stable-baselines3[extra]>=2.0.0a4" gymnasium numpy pandas matplotlib

# Pour le notebook 3 (parking environment)
pip install highway-env moviepy

# Pour le notebook 4 (bandits — pas de dépendance supplémentaire)

# Pour les notebooks 6, 6b, 6c, 6d, 6e (DQN, REINFORCE, A2C, PPO, SAC, GRPO)
pip install torch

# Pour le notebook 7 (multi-agent)
pip install "pettingzoo[classic]>=1.24.0"

# Pour la sous-série rlpt_* (Post-Training RLHF/GRPO/DPO sur petits LM)
pip install "trl>=1.9.2" transformers datasets accelerate

Dépendances

Package Version Utilisation
stable-baselines3 >=2.0.0a4 Algorithmes RL (notebooks 1-3)
gymnasium latest Interface environnements
numpy latest Calcul numérique
pandas >=2.0 Tableaux de résultats (notebook 5)
matplotlib latest Visualisation
torch latest Réseaux de neurones (notebooks 6, 6b, 6c, 6d, 6e)
pettingzoo >=1.24.0 Multi-agent (notebook 7)
highway-env latest Parking-v0 (notebook 3)
moviepy latest Enregistrement vidéo
trl >=1.9.2 RLHF/GRPO/DPO trainer (sous-série rlpt_*, notebooks pt-0e/pt-0f et pt-1 à pt-4)
transformers latest Modèles de langage (Qwen3.5-0.8B dans rlpt_2, sentence-transformers dans rlpt_4)
datasets latest Préférences auto-fabriquées (rlpt_4)
accelerate latest Backend d’entraînement distribué (rlpt_2)

Contenu détaillé

Notebook 1 - Introduction avec PPO et CartPole

Section Contenu
Stable Baselines3 Installation, API de base
CartPole-v1 Environnement classique, actions discrètes
PPO Proximal Policy Optimization
Workflow Training, Évaluation, Video recording

Notebook 2 - Fonctionnalités avancées

Section Contenu
Wrappers Gym Modification d’environnements
Sauvegarde Save/Load de modèles
Multiprocessing DummyVecEnv, SubprocVecEnv
Callbacks Monitoring, checkpoints automatiques
Environnements custom Création et validation (check_env)

Notebook 3 - Experience Replay et HER

Section Contenu
HER Hindsight Experience Replay
Goal-conditioned RL Tâches avec objectifs
Parking-v0 Environnement highway-env
SAC / DDPG Algorithmes off-policy avec HER
Replay buffers Sauvegarde et chargement

Notebook 4 - Bandits Manchots et Exploration

Section Contenu
Multi-armed bandit Problème fondamental exploration vs exploitation
Stratégies naïves Aléatoire, greedy, epsilon-greedy
Stratégies intelligentes Decaying epsilon-greedy, Thompson Sampling
Analyse Comparaison regret, visualisation des estimations

Bandits multi-bras : fréquence de sélection du meilleur bras (moyenne mobile 50) sur 2000 pas, comparant Greedy, epsilon-greedy (0.1 et 0.01), UCB (c=2) et une politique aléatoire, avec la baseline 1/10 en pointillés.

Sortie d’exécution du notebook 4 — convergence vers le meilleur bras : sur cet horizon de 2000 pas, Greedy monte vite vers ~80% de sélections correctes, epsilon-greedy(0.1) se stabilise vers ~70%, tandis qu’epsilon-greedy(0.01) et UCB(c=2) progressent encore (~50%) ; la politique aléatoire reste à la baseline 1/10.

Notebook 5 - MDP, Programmation Dynamique et Q-Learning

Section Contenu
MDP Formalisation \((S, A, P, R, \gamma)\), transitions
Value Iteration Équation de Bellman, convergence
Policy Iteration Évaluation + amélioration de politique
Q-Learning tabulaire Apprentissage model-free, \(\varepsilon\)-greedy
FrozenLake / CliffWalking Environnements discrets

Convergence du Q-Learning sur FrozenLake : récompense moyenne (fenêtre glissante de 500 épisodes) en fonction de l'épisode, courbe croissant de 0 à environ 0.9 sur ~4500 épisodes.

Sortie d’exécution du notebook 5 — le Q-Learning tabulaire converge sur FrozenLake : la récompense moyenne lissée passe de 0 à ~0.9, signe que la politique apprise atteint l’objectif dans la grande majorité des épisodes.

Notebook 6 - DQN et Policy Gradient

Section Contenu
Q-Network Approximation par réseau de neurones
Replay Buffer Experience replay, décorrélation
Target Network Stabilisation de l’apprentissage
REINFORCE Gradient de politique, baseline
Comparaison Value-based vs policy-based

Notebook 6b - Actor-Critic (A2C)

Section Contenu
Actor-Critic Paradigme combinant value-based et policy-based
CriticNetwork Réseau de valeur V(s)
ActorNetwork Politique paramétrée pi(a|s)
A2C Advantage Actor-Critic, calcul de l’avantage
Entropy bonus Exploration via maximisation d’entropie
Comparaison A2C vs REINFORCE (réduction de variance)

Notebook 6c - PPO depuis zéro

Section Contenu
Clipped surrogate Ratio de probabilité, objectif clippé, visualisation
PPO Agent Implémentation complète avec mini-lots et epochs
GAE Generalized Advantage Estimation (lambda=0.95)
Comparaison PPO vs A2C (stabilité, efficacité d’échantillonnage)

Notebook 6d - SAC depuis zéro

Section Contenu
Maximum Entropy RL Objectif avec bonus d’entropie, exploration automatique
Gaussian Policy Politique stochastique avec tanh squashing
Twin Q-Networks Double critique pour réduire la surestimation
Auto-température Température alpha apprise automatiquement
Reparameterization Trick pour gradient dans l’action
Pendulum-v1 Environnement continu de référence

Notebook 6e - GRPO depuis zéro

Section Contenu
Avantage relatif sans critic Group Relative Policy Optimization (DeepSeek-R1), baseline de groupe au lieu d’un réseau critique
Portfolio synthétique Environnement auto-contenu, signal de récompense reproductible multi-seed
Actor seul Réseau de politique unique sans critic (contrairement à PPO/A2C/SAC)
Mise à jour GRPO Avantage intra-groupe + clip PPO + pénalité KL vs politique de référence
Boucle multi-seed Entraînement multi-seed, verdict de stabilité
GRPO vs PPO/SAC Ce que change le paradigme sans critic

Notebook 7 - Apprentissage Multi-Agent

Section Contenu
Multi-Agent RL Paradigmes (coopératif, compétitif, mixte)
PettingZoo API AEC, environnements multi-agent
IQL Independent Q-Learning
TicTacToe Jeu à somme nulle, équilibre
Self-play Entraînement agent contre agent

Notebook 8 - Model-Based RL : Dyna-Q et planification

Section Contenu
Model-free vs model-based Compromis calcul vs expérience, sample efficiency
Modèle du monde Apprentissage tabulaire des transitions (s,a) -> (r,s’)
Dyna-Q Q-Learning + planification sur expérience simulée (Sutton & Barto ch. 8)
Blocking Maze / Dyna-Q+ Environnement changeant, bonus d’exploration kappa*sqrt(tau)
Decision-time planning Rollouts, pont vers MCTS / AlphaZero / MuZero
Exercices Shortcut Maze, prioritized sweeping, sensibilité de kappa

Notebook 9 - RL offline : apprendre sans interagir

Section Contenu
Online vs offline Apprendre d’un dataset figé de transitions (logs), sans interaction
Datasets Trois politiques de comportement (expert/medium/random), couverture vs qualité
Behavior Cloning Imitation tabulaire par action majoritaire, plafond de la politique de comportement
Erreur d’extrapolation Q-learning naïf sur dataset figé : bootstrap sur actions fantômes (Fujimoto 2019)
BCQ-lite Contrainte de support du dataset, stitching de trajectoires médiocres
Pont RLHF/DPO SFT = BC, contrainte KL = contrainte de support, DPO = preference learning offline
Exercices Ablation taille dataset, pénalité CQL-lite, sensibilité au nombre de passes

Notebook 10 - Reward Shaping et Curriculum Learning

Section Contenu
Labyrinthe sparse Maze 8x8, reward -1/pas et 0 au but, distance Manhattan = 14
Potential-based shaping Théorème Ng et al. 1999, \(F(s,s') = \gamma\Phi(s') - \Phi(s)\), politique invariante
Heuristic shaping Bonus naïf pour se rapprocher du but, sans garantie théorique
Curriculum learning Phases de difficulté croissante, start de plus en plus éloigné
Comparaison Vitesse de convergence (potential : ep 50, curriculum : ep 122, baseline : ep 190)
Pont RLHF Reward model appris, contrainte KL, DPO, inverse RL
Exercices Ablation potentiels, phases curriculum, biais du shaping naïf

Reward shaping : vitesse d'apprentissage comparée sur quatre variantes — baseline (récompense sparse), potential-based shaping (Ng 1999), shaping heuristique et curriculum learning. Return en moyenne mobile 50 par épisode, seuil de convergence à -30 en pointillés.

Sortie d’exécution du notebook 10 — potential-based et heuristique atteignent le seuil MA-50 ≥ -30 dès l’épisode 50, le curriculum à l’épisode 122, la baseline à l’épisode 190 (cellule Comparaison du notebook) ; les quatre courbes rejoignent ensuite le même plateau (~-15).

Notebook 11 - POMDP : Partial Observability et Belief Tracking

Section Contenu
Tiger Problem POMDP classique (Cassandra 1994), 2 états, 3 actions, observations bruitées à 85%
Politiques baselines Random, open immediately, listen N fois puis ouvre, vote majoritaire
Belief tracking Filtre bayésien sur P(tiger-left), mise à jour après observation
Q-MDP approximation Q-learning sur états vrais, sélection via expected Q sous belief
Belief-state Q-learning Discrétisation du belief en 20 bins, Q-learning dans l’espace des croyances
Comparaison 5 seeds, impact de la précision d’observation, pont DRQN/PPO+LSTM
Exercices Impact précision, nombre optimal d’écoutes, Tiger 3 portes

POMDP Tiger Problem : diagramme en barres comparant la récompense moyenne de six méthodes sur 5 seeds, avec barres d'erreur — Random (-46.0), Open immédiat (-6.2), Listen x1 (-7.8), Listen x2 (-8.3), Q-MDP (-11.8), Belief Q (-8.0).

Sortie d’exécution du notebook 11 — récompense moyenne par méthode sur le Tiger Problem (5 seeds) : agir au hasard est catastrophique (-46.0), toutes les politiques informées — ouverture immédiate, écoutes fixes, Q-MDP, Q-Learning sur croyance discrétisée — se tiennent entre -6.2 et -11.8.

Notebook 12 - RL distributionnel : C51 (Categorical DQN)

Section Contenu
Du scalaire à la distribution Pourquoi apprendre \(Z(s,a)\) tout entière plutôt que sa seule espérance \(Q = \mathbb{E}[Z]\) ; support catégoriel à 51 atomes fixes
Bellman distributionnel Opérateur \(TZ = R + \gamma Z(s',a^*)\), problème du déplacement hors-grille, projection catégorielle \(\Phi\)
Réseau CategoricalDQN Sorties softmax par action, reconstruction de \(Q(s,a) = \sum_i z_i p_i\)
Perte Entropie croisée entre cible projetée et distribution prédite
Entraînement CartPole-v1 ~18 000 pas, courbe d’apprentissage, visualisation de la distribution de retour apprise par action
C51 vs DQN Tableau comparatif, lignée QR-DQN / IQN / Rainbow
Exercices QR-DQN (quantile regression), sensibilité du support, politique sensible au risque (CVaR)

C51 sur CartPole-v1 : courbe d'apprentissage — retour par épisode (bleu clair), moyenne glissante sur 20 épisodes (rouge, culminant vers ~160), baseline aléatoire (~20) en pointillés, sur environ 300 épisodes.

Sortie d’exécution du notebook 12 — l’agent C51 (Categorical DQN, 51 atomes) dépasse nettement la baseline aléatoire sur CartPole-v1 : la moyenne glissante monte jusqu’à ~160 sur cet entraînement court (~300 épisodes), sans atteindre le plafond de 500 de l’environnement.

Notebook 13 - Exploration par curiosité : Random Network Distillation (RND)

Section Contenu
Exploration profonde Pourquoi l’aléa (epsilon-greedy) échoue dès que la récompense est parcimonieuse
Motivation intrinsèque Bonus de nouveauté \(r = r^e + \beta\,r^i\), exploration dirigée vers l’inexploré
Mécanisme RND Cible aléatoire figée + prédicteur entraîné ; erreur de prédiction = nouveauté (Burda et al. 2018)
Partie A - détecteur de nouveauté Jouet 2D, carte de nouveauté, ratio inconnu/visité ~1969x
Partie B - piège d’exploitation Chaîne MDP : epsilon-greedy plafonne sur le piège (~0.10), RND atteint la grande récompense (~0.96)
Comparaison RND vs comptage tabulaire / pseudo-comptage / ICM, problème de la noisy-TV, réglage du taux du prédicteur
Exercices Effet de beta, normalisation du bonus intrinsèque (Welford), limites de la curiosité (longueur de chaîne)

RND (Random Network Distillation) sur chaîne MDP-piège : à gauche, récompense extrinsèque lissée par épisode — epsilon-greedy bloqué sur le piège (~0.10), RND atteint la grande récompense (~0.96) vers l'épisode 200 ; à droite, histogramme des visites d'états — epsilon-greedy concentré sur l'état 0 (~63%), RND réparti sur toute la chaîne (états 0 à 16).

Sortie d’exécution du notebook 13 — exploration par curiosité sur le benchmark chaîne-piège (Burda et al. 2018) : RND atteint la grande récompense distale là où epsilon-greedy plafonne sur l’appât proximal. Le ratio inconnu/visité initial (~1969x) chute à mesure que le prédicteur RND est entraîné.

Algorithmes couverts

Algorithme Type Notebook Utilisation
PPO On-policy 1, 2, 6c Contrôle général, robuste
A2C On-policy 2, 6b Actor-Critic depuis zéro et via SB3
GAE Advantage 6c Generalized Advantage Estimation
SAC Off-policy 3, 6d Actions continues, maximum entropy
GRPO On-policy (critic-free) 6e Avantage relatif au groupe — l’algorithme RL de DeepSeek-R1, pont vers le RLHF
DDPG Off-policy 3 Actions continues
HER Replay strategy 3 Goal-conditioned tasks
Epsilon-greedy Exploration 4 Stratégie d’exploration basique
Thompson Sampling Exploration 4 Exploration bayésienne
Value Iteration Model-based 5 Résolution exacte de MDP
Policy Iteration Model-based 5 Résolution exacte de MDP
Q-Learning Model-free (tabulaire) 5 Espaces discrets
Dyna-Q Model-based 8 Planification sur modèle appris, sample efficiency
Dyna-Q+ Model-based 8 Environnements non-stationnaires, bonus d’exploration
Rollout planning Decision-time 8 Simulation vers l’avant, porte vers MCTS
Behavior Cloning Offline (imitation) 9 Démonstrations expertes, baseline offline
BCQ-lite Offline (value-based) 9 Q-learning contraint au support du dataset
Potential-based shaping Reward shaping 10 Accélération convergence sans biais (Ng 1999)
Curriculum learning Training strategy 10 Difficulté progressive, généralisation
Q-MDP POMDP approximation 11 Q-learning sur états vrais, action via belief
Belief-state Q-learning POMDP 11 Discrétisation du belief, Q-table dans l’espace des croyances
C51 (Categorical DQN) Distributionnel (deep) 12 Distribution de retour sur support fixe, projection catégorielle
DQN Off-policy (deep) 6 Espaces continus
REINFORCE Policy gradient 6 Politique directe
IQL Multi-agent 7 Apprentissage indépendant
RND Exploration intrinsèque (deep) 13 Récompense parcimonieuse, exploration profonde par nouveauté

Environnements

Environnement Type Notebook
CartPole-v1 Contrôle classique, discret 1, 6, 6b, 6c
Pendulum-v1 Contrôle continu 2, 6d
Parking-v0 Goal-conditioned, continu 3
GaussianBandit Bandit stochastique 4
FrozenLake-v1 Grille discrète, stochastique 5
CliffWalking-v1 Grille, compromis risque/récompense 5
TicTacToe-v3 Jeu à somme nulle 7
Dyna Maze / Blocking Maze Grilles déterministes et changeantes (numpy pur) 8, 9
Portefeuille synthétique Allocation d’actifs, auto-contenu (PyTorch pur, aucune donnée externe) 6e

Concepts clés

Concept Description Notebook
Agent Entité qui apprend et prend des décisions 1
Environnement Monde avec lequel l’agent interagit 1
Reward Signal de feedback pour l’apprentissage 1
Policy Stratégie de l’agent (state vers action) 1
Value function Estimation des rewards futurs 5
MDP Formalisation mathématique du problème RL 5
Bellman equation Relation de récurrence pour V et Q 5
Exploration vs exploitation Compromis entre tester et exploiter 4
Regret Mesure de performance cumulative en bandit 4
Thompson Sampling Exploration bayésienne optimale 4
Experience replay Réutilisation des expériences passées 3, 6
Clipped surrogate Mécanisme central de PPO 6c
GAE Compromis biais-variance pour l’avantage 6c
HER Réinterprétation d’échecs comme succès 3
DQN Q-Learning avec approximation neurale 6
Actor-Critic Combinaison politique + valeur 6b
Advantage Réduction de variance A_t = R_t - V(s) 6b
Maximum entropy RL Maximisation récompense + entropie 6d
SAC Soft Actor-Critic, off-policy continu 6d
Twin Q-networks Double critique anti-surestimation 6d
GRPO Avantage relatif au groupe, sans critique — l’algorithme RLHF de DeepSeek-R1 6e
Policy gradient Optimisation directe de la politique 6
Multi-agent Plusieurs agents apprenant simultanément 7
Model-based RL Apprendre un modèle du monde et planifier dessus 8
Dyna Entrelacement apprentissage direct / planification 8
Sample efficiency Échanger du calcul contre de l’expérience réelle 8
Decision-time planning Rollouts et MCTS depuis l’état courant 8
RL offline Apprendre d’un dataset figé, sans interaction 9
Erreur d’extrapolation Bootstrap sur actions hors du support des données 9
Stitching Recoudre un chemin optimal à partir de trajectoires médiocres 9
Reward shaping Modifier le signal de récompense pour guider l’apprentissage 10
Potential-based shaping Shaping garantissant l’invariance de la politique optimale (Ng 1999) 10
Curriculum learning Présenter les tâches par difficulté croissante 10
POMDP MDP avec observations partielles et bruitées 11
Belief state Distribution de probabilité sur les états cachés 11
Belief tracking Filtre bayésien pour mettre à jour le belief 11
RL distributionnel Apprendre la distribution complète du retour \(Z(s,a)\), pas seulement \(\mathbb{E}[Z]\) 12
Projection catégorielle Redistribuer la cible de Bellman sur un support à atomes fixes 12
Politique sensible au risque (CVaR) Choisir selon la queue basse de la distribution, hors de portée d’un DQN scalaire 12
Motivation intrinsèque Récompense de nouveauté pour guider l’exploration 13
Random Network Distillation Erreur de prédiction d’une cible figée comme mesure de nouveauté 13
Exploration profonde Atteindre une récompense cachée derrière une longue séquence d’actions 13

Caractéristiques

  • Compatible Windows : Pas de dépendance xvfb
  • Débutant-friendly : Progression pédagogique
  • Production-ready : Checkpointing, monitoring (notebooks 1-3)
  • From scratch : Implémentations sans framework (granularité variable : tabulaire 4-5, deep PyTorch 6-6e, multi-agent 7, model-based 8, offline 9, shaping 10, belief tracker POMDP 11, distributional 12, curiosité 13)
  • Exercices : Manipulations et explorations dans chaque notebook

FAQ

Quelle est la différence entre RL et apprentissage supervisé ?

L’apprentissage supervisé apprend à partir de données étiquetées (entrée -> sortie correcte). Le RL apprend par interaction : l’agent prend des actions, reçoit des récompenses/pénalités, et ajuste sa stratégie. Il n’y a pas de “bonne réponse” fournie — l’agent doit découvrir quelles actions maximisent la récompense cumulée. Le RL est pertinent quand le problème est séquentiel (une action affecte les futures observations).

Faut-il un GPU pour les notebooks ?

Non. Les notebooks 1-5 (SB3, wrappers, goal-conditioned, bandits, tabulaire) tournent sur CPU. Les notebooks deep from scratch (6 DQN/REINFORCE, 6b A2C, 6c PPO, 6d SAC, 6e GRPO, 8 Dyna-Q model-based, 9 BCQ offline, 10 reward shaping, 11 POMDP belief tracker, 12 C51 distributional, 13 RND curiosity) utilisent des réseaux volontairement compacts pour rester exécutables en CPU — un GPU accélère mais n’est pas requis. Environnements Atari (optionnel) : GPU recommandé.

Qu’est-ce qu’un MDP et pourquoi est-ce central ?

Un MDP (Markov Decision Process) est le modèle mathématique du RL : un ensemble d’états S, d’actions A, de transitions T(s’|s,a), de récompenses R(s,a), et d’un facteur d’actualisation gamma. Tout problème de RL se formalise comme un MDP. L’équation de Bellman (notebook 5) définit récursivement la valeur optimale. Si vous avez fait la série Probas, les MDP généralisent les chaînes de Markov avec des décisions.

Quelle est la différence entre on-policy et off-policy ?

On-policy (PPO, A2C, REINFORCE) : l’apprentissage utilise uniquement les données collectées par la politique courante. Plus stable mais moins sample-efficient. Off-policy (DQN, SAC, DDPG) : l’apprentissage peut réutiliser des données passées stockées dans un replay buffer. Plus sample-efficient mais potentiellement moins stable. Le notebook 6 compare DQN (off-policy) et REINFORCE (on-policy) sur le même environnement.

Pourquoi commencer par Stable Baselines3 plutôt que par les algorithmes from scratch ?

Stable Baselines3 permet de résoudre un problème réel en quelques lignes, ce qui donne une intuition concrète avant d’étudier la théorie. L’approche “framework d’abord, maths ensuite” évite le piège de la théorie abstraite sans application. Les notebooks suivants (4 à 13) déconstruisent ensuite les mêmes algorithmes depuis zéro pour comprendre ce qui se passe sous le capot.

Quelle est la différence entre value-based et policy-based ?

Value-based (Q-Learning, DQN) : on apprend à estimer la valeur de chaque action dans chaque état, puis on choisit l’action avec la plus haute valeur. Adapté aux espaces d’actions discrets. Policy-based (REINFORCE, PPO) : on optimise directement la politique (probabilité de choisir chaque action). Adapté aux espaces continus et aux politiques stochastiques. Actor-Critic (A2C, SAC) combine les deux : l’acteur choisit l’action, le critique estime la valeur.

Qu’est-ce que l’expérience replay et pourquoi est-ce important ?

L’expérience replay (notebook 6) stocke les transitions (état, action, reward, état_suivant) dans un buffer et ré-échantillonne aléatoirement pendant l’apprentissage. Cela casse les corrélations temporelles entre expériences consécutives et améliore l’efficacité en réutilisant chaque expérience plusieurs fois. Sans replay buffer, les agents off-policy comme DQN seraient instables. HER (notebook 3) étend ce concept en ré-interprétant les échecs comme des succès par changement d’objectif.

Comment choisir entre DQN et PPO pour un nouveau problème ?

  • Espace d’actions discret et petit : DQN est simple et efficace (notebooks 5-6)
  • Espace d’actions continu : PPO ou SAC (notebooks 1-2, 3)
  • Stabilité prioritaire : PPO est le choix par défaut dans l’industrie (clipping prevents large policy updates)
  • Sample efficiency : SAC (off-policy) apprend plus vite en nombre d’interactions, mais PPO (on-policy) est souvent plus robuste en hyperparamètres

Ressources

Documentation

Théorie RL

  • Sutton & Barto - Reinforcement Learning: An Introduction (2nd ed.)
  • Spinning Up in Deep RL
  • Mnih et al. (2015) - Human-level control through deep reinforcement learning, Nature

Structure des fichiers

RL/
├── rl_1_intro_cartpole.ipynb
├── rl_1b_bitwise_logic_synthesis.ipynb
├── rl_1c_prolog_distillation.ipynb
├── rl_2_wrappers_sauvegarde_callbacks.ipynb
├── rl_3_experience_replay_her.ipynb
├── rl_4_multi_armed_bandits.ipynb
├── rl_5_mdp_dp_qlearning.ipynb
├── rl_6_dqn_policy_gradient.ipynb
├── rl_6b_actor_critic.ipynb
├── rl_6c_ppo_from_scratch.ipynb
├── rl_6d_sac_from_scratch.ipynb
├── rl_6e_grpo_from_scratch.ipynb
├── rl_7_multi_agent_rl.ipynb
├── RL-7b-Climbing-Game.ipynb
├── rl_8_model_based_dyna_q.ipynb
├── rl_9_offline_rl.ipynb
├── rl_10_reward_shaping.ipynb
├── rl_11_pomdp.ipynb
├── rl_12_distributional_rl.ipynb
├── rl_13_curiosity_exploration.ipynb
├── rl_14_hierarchical_rl.ipynb
├── rl_15_grpo_group_relative_policy.ipynb
├── rl_16_dream_rsi.ipynb
├── rl_17_k_server_wfa.ipynb
├── rl_18_matroid_secretary.ipynb
├── rl_19_reward_tampering.ipynb
├── rlpt_0_reward_model_from_scratch.ipynb
├── rlpt_0b_preference_dataset_bias.ipynb
├── rlpt_0c_reward_hacking_case_study.ipynb
├── rlpt_0d_reward_trainer_sota.ipynb
├── rlpt_0e_trl_DPO_SOTA.ipynb
├── rlpt_0f_comparaison_GRPO_TRL_et_PPO_maison.ipynb
├── rlpt_1_ppo_lm_rlhf.ipynb
├── rlpt_2_grpo_minimal.ipynb
├── rlpt_3_reward_hacking.ipynb
├── rlpt_4_dpo_vs_ppo.ipynb
└── README.md

Activités associées

L’activité Processus de décision de Markov de l’aspirateur autonome fait lire des politiques optimales sur un grid world bruité, en jeu d’équipe.

Conclusion / Prochaines étapes

Ce que vous avez appris

Cette série vous a fait traverser le paradigme d’apprentissage qui distingue l’IA décisionnelle : là où l’apprentissage supervisé prédit à partir d’exemples étiquetés et l’non supervisé découvre des structures, le reinforcement learning agit — il choisit des actions, observe leurs conséquences, et s’améliore itérativement par essai et erreur. L’arc pédagogique :

  • Le geste fondateur — formaliser un problème de décision séquentielle comme un MDP (S, A, P, R, γ) et le résoudre par l’équation de Bellman, qui définit récursivement la valeur optimale. Cette formalisation est le socle commun : sans elle, pas de Value Iteration, pas de Q-Learning, pas de DQN. Le bandit (notebook 4) en est le cas le plus simple — le compromis exploration/exploitation à un seul pas de temps.
  • La double approche, délibérément juxtaposée — framework d’abord, maths ensuite. Vous commencez par entraîner un agent PPO en quelques lignes avec Stable Baselines3 (notebooks 1-3, production-ready), puis vous déconstruisez les mêmes algorithmes from scratch (notebooks 4 à 13, du tabulaire NumPy au deep PyTorch) pour comprendre ce qui se cache sous le capot. Cette pédagogie évite le double piège : la théorie abstraite sans application, et l’usage boîte noire sans compréhension.
  • L’instrument — Stable Baselines3 pour la production (PPO, SAC, HER), PyTorch pur pour l’implémentation pédagogique (DQN, REINFORCE, A2C, PPO, SAC depuis zéro), Gymnasium comme interface d’environnements standard, PettingZoo pour le multi-agent.
  • La finesse — les compromis cartographiés qui structurent tout le champ : on-policy (PPO/A2C, stable mais moins économe) vs off-policy (DQN/SAC, sample-efficient mais plus fragile) ; value-based (DQN) vs policy-based (REINFORCE) vs actor-critic (A2C/SAC) ; model-free (Q-Learning) vs model-based (Dyna-Q, pont vers MCTS/AlphaZero/MuZero) ; online vs offline (Behavior Cloning, BCQ-lite, pont vers RLHF/DPO). Et les subtilités qui changent la pratique : l’expérience replay et le target network qui stabilisent DQN, le clipped surrogate de PPO, le maximum entropy de SAC, le potential-based shaping (Ng 1999) qui accélère sans biaiser.

La thèse est puissante et honnêtement présentée : le RL n’a pas d’algorithme universel, mais une famille de méthodes aux compromis clairement nommés, et la compétence de l’ingénieur est de savoir choisir dans cette famille selon la nature du problème (espace d’actions, besoin de stabilité vs efficacité, accès à l’interaction, observabilité) — voire de combiner (Actor-Critic, model-based + RL, offline + contraintes).

Prochaines étapes

  • Approfondir la théorie : le livre de référence Sutton & Barto — Reinforcement Learning: An Introduction (2nd ed.) et Spinning Up in Deep RL d’OpenAI sont les prolongements naturels des fondements posés ici ; Mnih et al. (2015, Human-level control through deep RL, Nature) est le papier fondateur du DQN moderne.
  • Élargir aux jeux et à la recherche : Search (Minimax, MCTS) et GameTheory reprennent la recherche adversariale ; le notebook Search-7 (MCTS-And-Beyond) fait explicitement le pont AlphaGo (MCTS + DQN), et le multi-agent RL (notebook 7) rejoint la théorie des jeux.
  • Franchir le cap production : les notebooks 1-3 (Stable Baselines3, wrappers, callbacks, multiprocessing) donnent les outils d’un pipeline RL industriel ; le notebook 9 (offline RL) et le notebook 10 (reward shaping) ouvrent sur le RLHF/DPO, le pont majeur entre RL et LLMs modernes — dont la réalisation concrète sur de vrais modèles vit dans les séries GenAI / PostTraining (chaîne SFT → RLHF → DPO → GRPO → RLVR) et GenAI / FineTuning (DPO en pratique).
  • Pour la pratique : reprenez le notebook 6c (PPO from scratch) et comparez-le au PPO de SB3 du notebook 1 — quels hyperparamètres SB3 ajuste-t-il pour vous, et où votre implémentation naïve diverge-t-elle ? C’est le meilleur moyen de saisir la valeur ajoutée d’un framework de production.

Le fil rouge

Le reinforcement learning propose un changement de regard sur l’apprentissage : ne plus demander « quelle est la bonne réponse ? » mais « quelle action maximise la récompense cumulée, sachant qu’elle détermine les états futurs ? ». La série vous a donné le formalisme (MDP, équation de Bellman), les algorithmes (du bandit à SAC, du tabulaire au deep, du online à l’offline), et l’intuition des compromis pour transformer un problème de décision séquentielle en une politique apprise — en gardant à l’esprit que ce paradigme, de AlphaGo aux LLMs alignés par RLHF, est devenu l’un des deux piliers (avec l’apprentissage supervisé) de l’IA contemporaine.

Où atterrit le « pont RLHF » : les séries GenAI

Plusieurs notebooks de cette série annoncent un « pont RLHF » (notebook 9 sur l’offline RL, notebook 10 sur le reward shaping). Ce pont atterrit concrètement dans deux séries GenAI, qui appliquent ces fondations RL à de vrais modèles de langue. La série RL fournit l’algorithmique tabulaire ; GenAI fournit la réalisation à l’échelle des LLM.

Concept RL (cette série) Réalisation côté LLM (GenAI)
Behavior Cloning = imitation (rl_9) SFT — PostTraining PT-02, FineTuning FT-03
Contrainte de support BCQ = pénalité KL (rl_9) KL vers le modèle de référence dans PPO-RLHF / DPO — PT-03
Reward shaping = guider via le signal (rl_10) Reward model appris à partir de préférences — FineTuning FT-04
Biais du shaping naïf = reward hacking (rl_10) Goodhart / overoptimisation du reward model — PT-07
Policy gradient / PPO (rl_6c) PPO-RLHF et son successeur GRPO — PT-04
MDP, value/Q (rl_5) Socle policy/value réutilisé par tout post-training — GenAI/PostTraining

En résumé : DPO (Direct Preference Optimization) est l’aboutissement direct de la ligne offline RL + contrainte de support + preference learning tracée par les notebooks 9 et 10. Pour le voir tourner sur de vrais LLM, suivre GenAI/PostTraining puis GenAI/FineTuning.


Licence

Voir la licence du repository principal.


Version 1.2.0 — Juillet 2026

Retour au sommet