Aller au contenu principal

Module 9 — Acteur-critique, A2C et PPO

REINFORCE fonctionne mais gaspille : haute variance, gradients sur épisode complet, données jetées après chaque mise à jour. Trois avancées successives — l'introduction d'un critique, l'algorithme A2C, puis l'objectif tronqué de PPO — transforment le gradient de politique en méthode compétitive sur les problèmes réels. C'est le canon des algorithmes de renforcement profond aujourd'hui.

L'avantage : la meilleure réduction de variance

Au module 8, la ligne de base était la moyenne des retours. Elle peut mieux : utiliser Vπ(s)V^{\pi}(s), la valeur de l'état.

Aπ(s,a)=Qπ(s,a)Vπ(s)A^{\pi}(s, a) = Q^{\pi}(s, a) - V^{\pi}(s)

L'avantage répond à une question précise : « en jouant aa dans ss, ai-je fait mieux ou moins bien que la moyenne de ce que π\pi ferait ici ? ». Un avantage positif renforce l'action, un négatif l'affaiblit. C'est mesurer un écart plutôt qu'une somme, et l'écart varie beaucoup moins.

En pratique on n'a pas QπQ^{\pi}. Une estimation TD à un pas donne Atrt+γVϕ(st+1)Vϕ(st)A_t \approx r_t + \gamma V_{\phi}(s_{t+1}) - V_{\phi}(s_t). Cette estimation biaisée mais peu variable est le point de départ de A2C. La méthode GAE (generalized advantage estimation) interpole entre biais et variance par un paramètre λ[0,1]\lambda \in [0, 1] ; λ=1\lambda = 1 redonne Monte-Carlo, λ=0\lambda = 0 redonne TD à un pas.

Acteur-critique : deux réseaux, un signal commun

L'idée est simple : deux réseaux.

L'acteur est la politique πθ(as)\pi_{\theta}(a \mid s). Il apprend par gradient de politique.

Le critique est la fonction de valeur Vϕ(s)V_{\phi}(s). Il apprend par régression sur les retours observés, comme un problème supervisé standard.

Les deux se nourrissent mutuellement : le critique fournit la ligne de base et le calcul de l'avantage à l'acteur ; l'acteur produit les trajectoires que le critique apprend. La perte totale combine les deux :

L(θ,ϕ)=E[logπθ(as)A]acteur+cvE[(Vϕ(s)G)2]critiqueceE[H(πθ(s))]entropie\mathcal{L}(\theta, \phi) = \underbrace{-\mathbb{E}[\log \pi_{\theta}(a \mid s)\, A]}_{\text{acteur}} + c_v\,\underbrace{\mathbb{E}[(V_{\phi}(s) - G)^2]}_{\text{critique}} - c_e\,\underbrace{\mathbb{E}[H(\pi_{\theta}(\cdot \mid s))]}_{\text{entropie}}

Le terme d'entropie récompense les politiques indécises, ce qui maintient l'exploration.

A2CAdvantage Actor-Critic — est cette combinaison exécutée en synchrone sur plusieurs environnements parallèles pour décorréler les échantillons, à la manière du rejeu mais sans stockage.

Le problème que PPO résout

Un gradient de politique met à jour θ\theta par un pas d'Adam. Si ce pas est trop grand, la nouvelle politique s'éloigne trop de l'ancienne, les échantillons collectés deviennent invalides, et la performance s'effondre. Trop petit, l'apprentissage traîne.

TRPO (Trust Region Policy Optimization, 2015) formalise ce risque par une contrainte KL sur le pas — mais l'algorithme est lourd à implémenter. PPO (Proximal Policy Optimization, 2017) obtient un résultat comparable avec une astuce d'une simplicité déconcertante : tronquer le rapport de probabilités.

L'objectif tronqué de PPO, mot pour mot

Soit rt(θ)=πθ(atst)πθancien(atst)r_t(\theta) = \frac{\pi_{\theta}(a_t \mid s_t)}{\pi_{\theta_{\text{ancien}}}(a_t \mid s_t)} le rapport entre nouvelle et ancienne politique. L'objectif à maximiser :

LCLIP(θ)=E ⁣[min ⁣(rt(θ)At, clip(rt(θ), 1ε, 1+ε)At)]\mathcal{L}^{\text{CLIP}}(\theta) = \mathbb{E}\!\left[\min\!\Bigl(r_t(\theta)\, A_t,\ \text{clip}\bigl(r_t(\theta),\ 1-\varepsilon,\ 1+\varepsilon\bigr)\, A_t\Bigr)\right]

ε\varepsilon vaut typiquement 0,2.

Lecture attentive. Si un avantage AtA_t est positif, on veut augmenter rtr_t ; le min avec la version tronquée coupe ce gain une fois que rtr_t dépasse 1+ε=1,21 + \varepsilon = 1{,}2. Symétriquement, si AtA_t est négatif, le min empêche rtr_t de descendre sous 0,80{,}8. Le résultat : PPO peut faire plusieurs passages de gradient sur les mêmes données sans que la politique dérive trop de celle qui les a produites. Trois à dix époques par lot, contre une seule pour A2C.

Cette astuce simple, combinée à GAE pour l'avantage et à l'entraînement en parallèle sur plusieurs environnements, produit l'algorithme aujourd'hui le plus utilisé — d'OpenAI Five à ChatGPT en passant par les robots de laboratoire.

Les hyperparamètres qui comptent vraiment

Sur PPO, l'expérience du domaine converge :

HyperparamètreValeur usuelleSensibilité
Taux d'apprentissage3e-4 (Adam)Élevée
ε\varepsilon de troncature0,1 à 0,3Modérée
Époques par lot3 à 10Élevée
Pas par mise à jour2048 à 8192Modérée
λ\lambda de GAE0,9 à 0,97Faible
Coefficient d'entropie0,0 à 0,01Élevée sur exploration
Coefficient du critique0,5Faible

Sur LunarLander, ces valeurs par défaut fonctionnent presque toujours. Sur des tâches nouvelles, prévoir un balayage sur taux d'apprentissage et pas par mise à jour avant tout le reste.

Implémentation maison contre Stable-Baselines3

Stable-Baselines3 est la référence de production. Sur LunarLander :

import gymnasium as gym
from stable_baselines3 import PPO
from stable_baselines3.common.env_util import make_vec_env

env = make_vec_env("LunarLander-v2", n_envs=8)
modele = PPO("MlpPolicy", env, learning_rate=3e-4, n_steps=2048,
batch_size=64, n_epochs=10, gamma=0.99, gae_lambda=0.95,
clip_range=0.2, ent_coef=0.01, verbose=1, seed=0)
modele.learn(total_timesteps=1_000_000)
modele.save("ppo_lunarlander")

Cent mille pas suffisent à décoller ; un million donne un pilote convaincant. Une implémentation maison de PPO en 300 lignes atteint des performances comparables, mais demande une attention méticuleuse aux détails que la bibliothèque encapsule : normalisation des observations, écrêtage du gradient, moyenne mobile des récompenses, gestion propre des épisodes tronqués. Comparer les deux courbes, sur les mêmes graines, révèle où l'implémentation maison saigne — c'est un exercice pédagogique irremplaçable.

Le vrai coût de PPO

PPO n'est pas particulièrement efficace en données. Il gagne par sa stabilité : un learning_rate mal choisi ne fait pas exploser l'entraînement, il le ralentit. Sur des budgets serrés en interactions avec l'environnement, SAC (hors politique, non traité ici) est souvent supérieur en actions continues. PPO reste le choix par défaut parce qu'il ne demande pas de réglage fin — dans un domaine où le réglage fin coûte parfois plus cher que l'entraînement lui-même.

En résumé

  • L'avantage A=QVA = Q - V remplace la ligne de base et réduit encore la variance ; GAE interpole entre biais et variance.
  • L'acteur-critique apprend deux réseaux couplés : politique et valeur, avec un terme d'entropie pour l'exploration.
  • PPO ajoute une troncature du rapport de probabilités qui autorise plusieurs passages sur les mêmes données sans dérive.
  • Stable-Baselines3 est la référence robuste ; une implémentation maison éduque mais demande de la rigueur sur des détails que la bibliothèque encapsule.

Module suivant : le projet, un pilote LunarLander de bout en bout avec tous les gestes d'un vrai projet — graines, intervalles, vidéo, limites.