Aller au contenu
coden

Policy gradient et PPO : apprendre directement la politique

Politique stochastique sous forme de réseau, REINFORCE et théorème du gradient de la politique, ligne de base et avantage, acteur-critique, PPO avec écrêtage écrit à partir de zéro sur le pendule inversé sur un chariot, ce qui se passe sans écrêtage, et comment PPO a affiné les modèles de langage.

12 minutes Matěj Žalmánek 2026-10-16

Série Bases de l’IA Partie 49 sur 52
  1. Carte de l’intelligence artificielle : qu’est-ce qui est quoi et comment tout s’emboîte
  2. Brève histoire de l’intelligence artificielle : de Turing aux modèles de langage
  3. Données, modèle, entraînement, inférence : les notions de base sur un seul exemple
  4. Lire la notation mathématique : symboles, indices, sommes et quantificateurs
  5. Ensembles et relations : les briques dont sont faites les définitions en IA
  6. Fonctions et applications : pourquoi tout modèle d’IA est une fonction
  7. Logique et démonstrations : les règles selon lesquelles on raisonne en IA
  8. Graphes et arbres : la structure sur laquelle reposent la recherche et les réseaux de neurones
  9. Algèbre linéaire pour l’apprentissage automatique : vecteurs, matrices et pourquoi l’IA multiplie surtout
  10. Dérivées, gradient et règle de dérivation en chaîne : comment un modèle sait dans quelle direction apprendre
  11. Descente de gradient : comment un modèle apprend
  12. Qu’est-ce que la probabilité : du lancer de dé aux axiomes de Kolmogorov
  13. Probabilité conditionnelle et théorème de Bayes : comment réviser une estimation quand on apprend du nouveau
  14. Variable aléatoire et fonction de répartition : une seule fonction qui dit tout de la loi
  15. Fonction de densité et fonction de masse : pourquoi une variable continue a une probabilité nulle en chaque point
  16. Espérance, variance et covariance : où se situe une loi, quelle est sa largeur et ce qui varie avec quoi
  17. Panorama des lois de probabilité : Bernoulli, binomiale, Poisson, uniforme, normale et exponentielle
  18. Loi des grands nombres et théorème central limite : pourquoi les moyennes sont si prévisibles
  19. Statistique et estimation de paramètres : maximum de vraisemblance, MAP et intervalles de confiance
  20. Théorie de l’information : entropie, entropie croisée et divergence KL — d’où viennent les fonctions de perte
  21. Recherche dans l’espace d’états : BFS, DFS, UCS et A* en animations
  22. Jeux et adversaires : minimax, élagage alpha-bêta et Monte Carlo tree search
  23. Satisfaction de contraintes : backtracking, propagation de contraintes et AC-3 sur un sudoku et une carte des régions tchèques
  24. Logique et systèmes à base de connaissances : chaînage avant et arrière, résolution et systèmes experts
  25. Planification : STRIPS, monde des blocs, heuristiques par relaxation et planification dans les agents IA
  26. Recherche locale et recuit simulé : un voyageur de commerce à travers les chefs-lieux de région tchèques
  27. Algorithmes génétiques : population, croisement, mutation et sélection sur un sac à dos de randonnée
  28. Stratégies d’évolution et programmation génétique : de la règle du cinquième à la loi de Kepler
  29. Optimisation par colonies de fourmis : comment une piste de phéromone trouve un chemin court
  30. Optimisation par essaim de particules : inertie, expérience propre et expérience de l’essaim
  31. Neuroévolution : faire évoluer les poids et la forme des réseaux de neurones, et l’algorithme NEAT
  32. Ensembles flous et fonctions d’appartenance : comment écrire « un peu chaud »
  33. Logique floue et probabilité : pourquoi « un peu chaud » ne veut pas dire « probablement chaud »
  34. Logique floue : t-normes, implications et règles SI–ALORS
  35. Commande floue : Mamdani et Sugeno, du ventilateur au pendule inversé sur un chariot
  36. Clustering flou : l’algorithme fuzzy c-means et les points entre les clusters
  37. Systèmes neuro-flous (ANFIS) : des règles floues qui apprennent à partir des données
  38. Chaînes de Markov : matrice de transition, distribution stationnaire et PageRank
  39. Modèles de Markov cachés : l’algorithme de Viterbi et le casino malhonnête
  40. Réseaux bayésiens : pourquoi l’herbe est mouillée et ce que cela implique pour l’arroseur
  41. Le filtre de Kalman : comment estimer, à partir de mesures imprécises, où se trouve une voiture et à quelle vitesse elle roule
  42. Types d’apprentissage automatique : supervisé, non supervisé, semi-supervisé et plus
  43. Prompts, contexte et RAG : comment donner au modèle les bonnes informations
  44. Autoencodeurs variationnels (VAE) : de nouvelles images à partir d’un espace latent continu
  45. Réseaux antagonistes génératifs (GAN) : le faussaire contre le détective
  46. Modèles de diffusion : comment une image naît du bruit pur
  47. Processus de décision markoviens : états, actions, récompenses et équations de Bellman
  48. Q-learning et DQN : apprendre la valeur des actions, du tableau au réseau de neurones
  49. Policy gradient et PPO : apprendre directement la politique
  50. Comment fonctionne un agent IA : un modèle de langage en boucle avec des outils
  51. Programmer avec des agents IA : consigne, tests et vérification
  52. Évaluation et sécurité des systèmes d’IA : comment mesurer et comment surveiller

Programme complet de la série 52 sur 83 sujets publiés

Ce que vous retiendrez
  • Comment une politique s’apprend directement à partir des résultats, sans tableau de valeurs.
  • Pourquoi il est utile de soustraire une ligne de base et ce qu’est l’avantage.
  • Pourquoi l’écrêtage est si important dans PPO et quel est son lien avec le RLHF.

Utile à connaître avant : Q-learning et DQN : apprendre la valeur des actions, du tableau au réseau de neurones, Processus de décision markoviens : états, actions, récompenses et équations de Bellman

Le DQN de la partie précédente apprend à quel point chaque action est bonne, et la politique n’en découle qu’indirectement : choisir l’action de plus grande valeur. La deuxième grande famille de méthodes va droit au but : le réseau reçoit l’état et renvoie les probabilités des actions, et nous déplaçons ces probabilités de sorte que les bonnes actions deviennent plus fréquentes. De cette famille vient PPO — l’algorithme qui a appris à des robots à marcher, a battu des professionnels au jeu Dota 2 et a servi au réglage fin de ChatGPT. Dans cette partie, nous l’écrivons à partir de zéro et le comparons à ses prédécesseurs plus simples.

Cette partie fait suite à Q-learning et DQN, Processus de décision markoviens et Softmax.

1. Apprendre directement la politique

Définition — politique paramétrée

Une politique stochastique πθ(a | s) est un réseau de paramètres θ qui, pour l’état s, renvoie une distribution de probabilité sur les actions — pour un nombre fini d’actions, le softmax des sorties du réseau, pour des actions continues, par exemple la moyenne et la variance d’une loi normale. Le but est de maximiser le retour espéré J(θ) = Eπθ[G0] par montée de gradient θ ← θ + α ∇J(θ).

En termes simples

Le DQN tient un tableau « combien de points pour quel coup » et joue le coup qui rapporte le plus. Une politique dit à la place directement « dans cette situation, pousse à droite avec 70 %, à gauche avec 30 % ». Avantages : cela fonctionne aussi avec des actions continues (avec quelle force, sous quel angle), le hasard est intégré, donc l’agent essaie de lui-même, et un petit changement des paramètres signifie un petit changement de comportement.

Exemple — le retour d’un essai sur le pendule inversé sur un chariot

La récompense est +1 pour chaque pas et l’actualisation γ = 0,99. S’il reste T − t pas jusqu’à la fin de l’épisode, le retour est une série géométrique :

Gt = 1 + γ + γ² + … + γT−t−1 = (1 − γT−t) / (1 − γ).

Au début d’un épisode qui tient les 500 pas complets : G0 = (1 − 0,99500) / 0,01 = 99,34. Vingt pas avant la chute : G = (1 − 0,9920) / 0,01 = 18,21. Le pas juste avant la chute : G = 1. Le retour est donc toujours positif et ne dépasse jamais 1 / (1 − γ) = 100 — cela servira dans la section sur la ligne de base.

2. REINFORCE : renforcer ce qui a marché

Définition — théorème du gradient de la politique et REINFORCE

Le gradient du retour espéré peut s’écrire comme une espérance, que l’on peut estimer à partir d’épisodes joués :

∇J(θ) = Eπθ[ ∑t ∇ log πθ(at | st) · Gt ].

REINFORCE (Ronald Williams, 1992) le fait littéralement : jouer des épisodes, calculer pour chaque pas le retour Gt à partir de ce pas, et déplacer θ dans la direction ∇ log π(at | st) · Gt. Pour le softmax, ∇ log π(a) par rapport aux sorties du réseau vaut simplement (1a − π).

En termes simples

Jouez, regardez comment cela s’est terminé, et rendez chaque coup que vous avez joué un peu plus probable — d’autant plus que la suite s’est bien passée. Les coups des parties réussies sont plus renforcés que ceux des parties ratées. Personne n’a besoin de dire quel coup était le bon ; le résultat suffit.

∇J(θ) = Eπθ[ ∑t ∇ log πθ(at | st) · Gt ]

∇J(θ)
la direction dans laquelle tourner les paramètres pour que le retour moyen croisse le plus vite ; on ne peut pas la calculer directement, car le retour ne dépend de θ qu’à travers le jeu aléatoire et la physique inconnue de l’environnement
Eπθ[ ∑t … ]
la moyenne sur les épisodes joués par la politique actuelle — c’est pourquoi on peut la remplacer par une moyenne sur des parties réellement jouées ; et c’est pourquoi des données d’une autre politique (plus ancienne, étrangère) ne suffisent pas sans correction
∇ log πθ(at | st)
la direction dans les paramètres qui rend l’action jouée plus probable ; ∇ log π = ∇π / π divise par la probabilité, si bien qu’une action fréquente, qui apparaît souvent dans les données, ne reçoit pas davantage de renforcement juste parce qu’elle est fréquente
Gt
le poids : à quel point la suite de l’action s’est bien passée ; seulement les récompenses à partir du pas t, car une action ne peut pas influencer des récompenses déjà tombées
Le gradient est une moyenne pondérée des directions « rends cette action plus probable », le poids étant le retour qui l’a suivie.
Théorème — d’où vient la formule (l’astuce du logarithme)

Un épisode τ = (s0, a0, s1, a1, …) a, sous la politique πθ, la probabilité Pθ(τ) = p(s0) ∏t πθ(at | st) P(st+1 | st, at) et le retour G(τ). Alors

∇J(θ) = ∇ ∑τ Pθ(τ) G(τ) = ∑τ Pθ(τ) · ∇ log Pθ(τ) · G(τ) = Eτ ∼ πθ[ ∇ log Pθ(τ) · G(τ) ],

car ∇P = P · ∇ log P. Démonstration (esquisse) : le logarithme transforme le produit en somme, log Pθ(τ) = log p(s0) + ∑t log πθ(at | st) + ∑t log P(st+1 | st, at). Seule la somme du milieu dépend de θ, donc nous n’avons pas besoin de connaître la physique de l’environnement P : ∇ log Pθ(τ) = ∑t ∇ log πθ(at | st). Enfin, pour chaque at, nous écartons les récompenses antérieures au pas t : elles ne dépendent pas de at, et leur contribution est donc d’espérance nulle (voir le théorème de la section suivante). Il reste Gt. ∎ (L’énoncé exact pour le retour actualisé est un peu plus subtil ; ici, simplifié.)

Exemple — un pas de REINFORCE avec softmax

Deux actions, sorties du réseau z = (0; 0), donc π = softmax(z) = (0,50; 0,50). L’agent a joué l’action 1 (« à droite ») et le retour à partir de ce pas était G = 10. Pour le softmax, ∇z log π(a) = 1a − π, donc

∇z log π(1) · G = ((0; 1) − (0,50; 0,50)) · 10 = (−5; 5).

Un pas de montée avec α = 0,1 : z ← (0; 0) + 0,1 · (−5; 5) = (−0,5; 0,5). Nouvelle politique π = (e−0,5; e0,5) / (e−0,5 + e0,5) = (0,269; 0,731). L’action qui a réussi est maintenant plus probable. (Dans un vrai réseau, ce sont les poids θ qui changent, et le gradient arrive jusqu’à z par rétropropagation ; la direction est la même.)

θ = poids aléatoires du réseau de la politique
répéter :
    jouer des épisodes complets avec la politique π_θ, jusqu’à au moins 2 000 pas
    pour chaque épisode, à rebours :        # G = 0 après la fin de l’épisode
        G_t = r_(t+1) + γ · G_(t+1)
    g = moyenne sur tous les pas de  ∇ log π_θ(a_t | s_t) · G_t
    θ = θ + α · g                           # montée ; chez nous, un pas d’Adam
    jeter les données — la prochaine fois, elles viennent d’une autre politique

3. Variance et ligne de base

Définition — ligne de base (baseline) et avantage

On peut soustraire de Gt n’importe quelle fonction de l’état b(st) sans changer l’espérance de l’estimation du gradient, car E[∇ log π(a | s)] = 0. La variance de l’estimation peut en revanche nettement diminuer. Le meilleur choix courant est la valeur de l’état V(s), apprise par un second réseau ; la différence A(s, a) = Q(s, a) − V(s) s’appelle l’avantage. Les méthodes avec une politique apprise (« acteur ») et une valeur apprise (« critique ») s’appellent acteur-critique (actor-critic).

En termes simples

Sur le pendule inversé, l’agent reçoit +1 pour chaque pas, donc chaque retour est positif — REINFORCE renforce donc chaque coup, seulement certains plus que d’autres. Le signal « c’était mieux que d’habitude » se perd dans le bruit. En soustrayant le niveau attendu, cela devient « ce coup a donné 20 points de mieux que ce qu’on attendait dans cette situation » — et les coups moins bons reçoivent un signe négatif.

∇J(θ) = E[ ∑t ∇ log πθ(at | st) · (Gt − b(st)) ],   A(s, a) = Q(s, a) − V(s)

∇ log πθ(at | st)
la direction « jouer plus souvent l’action jouée », comme dans REINFORCE
Gt, Q(s, a)
ce qui a réellement suivi l’action (Gt), ou ce qu’elle rapporte en moyenne (Q est l’espérance de Gt) ; à lui seul presque toujours positif, il ne distingue donc pas une bonne action d’une action moyenne
b(st), V(s)
la barre : ce que l’on attend dans cette situation, quelle que soit l’action ; après soustraction, les actions moins bonnes que la moyenne reçoivent un signe négatif. Elle ne doit dépendre que de l’état, pas de l’action — sinon le gradient serait biaisé (théorème ci-dessous)
A(s, a)
l’avantage : de combien l’action a est meilleure que l’action moyenne de la politique dans s ; exactement l’information que nous voulons renforcer
Soustraire la barre ne change pas la direction moyenne du gradient, cela réduit seulement à quel point l’estimation tremble d’un lot à l’autre.
Théorème — la ligne de base ne biaise pas le gradient

Pour chaque état s, Ea ∼ πθ[∇ log πθ(a | s)] = 0, et donc E[∇ log πθ(a | s) · b(s)] = 0 pour toute fonction b qui ne dépend pas de a.

Démonstration : ∑a πθ(a | s) ∇ log πθ(a | s) = ∑a ∇πθ(a | s) = ∇ ∑a πθ(a | s) = ∇1 = 0. Le terme b(s) est une constante pour s fixé, on peut donc le sortir de la somme. ∎

Exemple — même moyenne, variance différente

Un état, deux actions avec π = (0,5; 0,5). L’action 1 rapporte un retour de 12, l’action 0 un retour de 10 — tous deux positifs, comme sur le pendule. La composante de l’estimation du gradient selon la sortie z1 vaut, à partir d’un seul échantillon, (1a=1 − 0,5) · (G − b).

Sans ligne de base (b = 0) : si l’action 1 tombe, l’estimation vaut 0,5 · 12 = 6 ; si c’est l’action 0, elle vaut −0,5 · 10 = −5. Moyenne (6 − 5) / 2 = 0,5, variance ((6 − 0,5)² + (−5 − 0,5)²) / 2 = 30,25.

Avec la ligne de base b = 11 (retour moyen) : 0,5 · (12 − 11) = 0,5 et −0,5 · (10 − 11) = 0,5. La moyenne vaut toujours 0,5, la variance 0.

Le vrai gradient vaut π1(1 − π1) · (12 − 10) = 0,25 · 2 = 0,5. Les deux estimations visent juste en moyenne, mais sans la barre un échantillon tombe à côté de ±5,5, avec la barre pas du tout. En réalité, la variance ne tombe pas à zéro (les retours sont aléatoires et les états nombreux), mais le principe est le même.

Nous l’avons mesuré au début de l’apprentissage : 40 lots indépendants de 1 000 pas de la même politique aléatoire, et pour chacun le gradient de REINFORCE. Le simple fait de soustraire le retour moyen (ligne de base constante) réduit la somme des variances des composantes du gradient de 0,177 à 0,131, soit de 26 %. Une valeur apprise V(s), qui distingue les bonnes situations des mauvaises, aide davantage.

Définition — somme des variances des composantes du gradient

À partir de K = 40 lots, nous avons des estimations du gradient ĝ(1), …, ĝ(K) (vecteurs de tous les poids du réseau). Pour chaque composante j, nous calculons la variance sur les lots et nous additionnons :

∑j (1/K) ∑k (ĝj(k) − ḡj)²,   ḡj = (1/K) ∑k ĝj(k).

C’est la trace de la matrice de covariance de l’estimation — un seul nombre pour dire à quel point l’estimation tremble. Baisse : 1 − 0,131 / 0,177 = 0,26, soit 26 %.

PPO, plus bas, a lui aussi besoin d’une V apprise. Il n’estime cependant pas l’avantage par la différence Gt − V(st), mais par un compromis entre celle-ci et l’estimation à un pas de la partie sur le Q-learning :

Ât = ∑l≥0 (γλ)l δt+l,   δt = rt+1 + γ V(st+1) − V(st)

Ât
l’estimation de l’avantage du pas t (GAE, John Schulman et al., 2015) — ce par quoi on multiplie ∇ log π
δt
l’erreur TD : de combien un pas s’est mieux passé que ce qu’attendait V ; estimation de l’avantage à un pas, de faible variance, mais biaisée si V se trompe
rt+1
la récompense réellement reçue — le seul morceau de réalité dans δ
V(s)
la barre apprise ; dans st+1, elle remplace le reste du retour par une estimation, dans st, elle est soustraite comme ligne de base (après une chute, V(st+1) = 0)
(γλ)l
la vitesse à laquelle on oublie les pas plus lointains. λ = 0 ne donne que δt ; λ = 1 donne après sommation (les termes en V s’annulent) exactement Gt − V(st) — sans biais, mais avec une grande variance. Nous prenons λ = 0,95
Dans le code, on le calcule à rebours en une ligne : Ât = δt + γλ Ât+1.

4. PPO : de petits pas sûrs

REINFORCE a encore une faiblesse : il n’utilise chaque expérience jouée que pour un seul pas de gradient, puis la jette. Si nous faisions plus de pas sur les mêmes données, la politique pourrait s’éloigner de celle qui a collecté les données, et l’estimation du gradient cesserait d’être valable — l’apprentissage s’effondre. PPO surveille cela.

Définition — Proximal Policy Optimization (PPO)

PPO (John Schulman et al., OpenAI, 2017) collecte un lot de transitions avec l’ancienne politique πold, calcule les avantages Ât, puis maximise pendant plusieurs époques l’objectif écrêté

L(θ) = Et[ min( rt(θ) Ât, clip(rt(θ), 1 − ε, 1 + ε) Ât ) ],   rt(θ) = πθ(at | st) / πold(at | st),

typiquement avec ε = 0,2. Dès que la probabilité d’une action change de plus de ε dans le sens qui améliore l’objectif, le gradient de cet échantillon disparaît. Les avantages sont habituellement estimés par la méthode GAE (generalized advantage estimation), une moyenne pondérée des erreurs TD avec le paramètre λ.

En termes simples

Après le match, l’entraîneur dit « fais ça plus souvent ». Le joueur le répète à l’entraînement — mais seulement jusqu’au moment où il le fait un cinquième plus souvent qu’avant. Ensuite, il n’apprend plus rien tant qu’il n’a pas joué le match suivant et vérifié que ça marche toujours. Des pas assez grands pour progresser vite, assez petits pour ne pas perdre la tête.

−2−1012 00,511,52 rapport des probabilités r (sans unité) objectif écrêté (multiples de A)
Objectif écrêté de PPO selon le rapport r = π_nouv / π_anc (ε = 0,2, en vert la bande 1 ± ε) avantage A = +1 — au-delà de 1 + ε, plus rien avantage A = −1 — en deçà de 1 − ε, plus rien

L(θ) = Et[ min( rt(θ) Ât, clip(rt(θ), 1 − ε, 1 + ε) Ât ) ]

L(θ)
l’objectif de substitution que l’on maximise pendant plusieurs époques sur l’ancien lot ; son gradient en θ = θold est exactement le gradient de la politique de REINFORCE avec avantage
rt(θ) = πθ / πold
le rapport entre la nouvelle et l’ancienne probabilité de l’action jouée. Les données ont été collectées par l’ancienne politique ; en les multipliant par ce rapport, on peut estimer comment s’en sortirait la nouvelle (échantillonnage préférentiel, importance sampling). Au départ, r = 1
Ât
l’avantage tiré de GAE : son signe dit s’il faut renforcer l’action (+) ou la réprimer (−)
clip(r, 1 − ε, 1 + ε)
le rapport serré dans la bande (en vert sur la figure) ; hors de la bande, il est constant, donc il ne produit aucun gradient — on ne peut plus pousser la politique avec cet échantillon
min
des deux estimations, la moins bonne (pessimiste) : l’écrêtage ne s’applique que là où l’amélioration aurait l’air trop belle pour être vraie. Si au contraire l’action s’est dégradée, min garde le terme non écrêté et corrige l’erreur
Renforcer les actions avantageuses, mais seulement tant que leur probabilité ne change pas de plus d’un facteur 1 ± ε ; ensuite, l’échantillon se tait.
Exemple — trois échantillons et l’écrêtage avec ε = 0,2

L’ancienne politique donnait à l’action jouée la probabilité 0,5. Après quelques pas d’apprentissage, c’est 0,65, donc r = 0,65 / 0,5 = 1,3 et clip(1,3; 0,8; 1,2) = 1,2.

Avantage +2 : min(1,3 · 2; 1,2 · 2) = min(2,6; 2,4) = 2,4. C’est le terme écrêté qui l’emporte, et il ne dépend pas de θ — le gradient de cet échantillon est nul. L’action est déjà 30 % plus fréquente, pas davantage.

Avantage −2 (même rapport) : min(−2,6; −2,4) = −2,6. C’est le terme non écrêté qui l’emporte : la politique a rendu par erreur une mauvaise action plus probable, et le gradient continue donc de la ramener en arrière.

Avantage +2, mais la probabilité est tombée à 0,35 : r = 0,7, min(1,4; 0,8 · 2 = 1,6) = 1,4. De nouveau le terme non écrêté — une bonne action que la politique a réprimée revient. L’écrêtage ne freine que les pas qui amélioreraient l’objectif « trop ».

répéter :
    π_old = π_θ;  collecter 2 000 pas avec la politique π_old, stocker π_old(a_t | s_t)
    pour chaque épisode, à rebours :                 # V(s_(t+1)) = 0 après une chute
        δ_t = r_(t+1) + γ · V(s_(t+1)) − V(s_t)
        Â_t = δ_t + γλ · Â_(t+1)                      # GAE, γ = 0,99, λ = 0,95
    cible_t = Â_t + V(s_t);  normaliser  à une moyenne 0 et une variance 1
    10 fois (époque) :
        mélanger les pas et les répartir en mini-lots de 100
        pour chaque mini-lot :
            r_t = π_θ(a_t | s_t) / π_old(a_t | s_t)
            θ : un pas vers le haut sur la moyenne de min(r_t · Â_t, clip(r_t, 0,8, 1,2) · Â_t)
            V : un pas vers le bas sur la moyenne de (V(s_t) − cible_t)²

5. Expérience : le pendule inversé sur un chariot

Le même pendule inversé sur un chariot que pour le DQN, récompense +1 pour chaque pas, l’épisode se termine par une chute ou après 500 pas. La politique est un réseau 4 → 32 → 32 → 2 avec softmax, la valeur de l’état un second réseau de même forme. Les quatre méthodes reçoivent 100 000 pas dans l’environnement, en lots de 2 000. REINFORCE fait un pas de gradient sur chaque lot, PPO dix époques en mini-lots de 100. La variante « sans écrêtage » est un PPO auquel nous avons désactivé l’écrêtage.

0100200300400500 025 00050 00075 000100 000 pas d’apprentissage (nombre de pas dans l’environnement) longueur d’épisode (pas)
Longueur moyenne des épisodes pendant l’apprentissage (trait épais : moyenne de trois exécutions, trait fin : exécutions individuelles) REINFORCEREINFORCE avec ligne de basePPOPPO sans écrêtage
méthodepremière fois que la moyenne ≥ 475 (exécution 1 · 2 · 3)à la fin (exécution 1 · 2 · 3)
REINFORCE— · — · —463 · 333 · 348
REINFORCE avec ligne de base90 000 · 80 000 · —488 · 500 · 404
PPO30 000 · 20 000 · 20 000500 · 500 · 500
PPO sans écrêtage100 000 · 30 000 · 50 000494 · 44 · 500

Dans les trois exécutions, PPO tient la tige pendant les 500 pas complets dès 30 000, 20 000, 20 000 pas et ne la lâche plus. REINFORCE progresse lentement et n’y arrive pas avant la fin ; avec la ligne de base, il est un peu plus rapide et atteint le but dans deux exécutions sur trois. Attention, la comparaison n’est pas tout à fait équitable en nombre de calculs : PPO fait sur chaque lot dix fois plus de pas de gradient. Elle est en revanche équitable pour ce qui compte le plus en apprentissage par renforcement — le nombre d’expériences que l’agent doit collecter dans le monde.

Et que se passe-t-il si nous lançons le même apprentissage répété sur un lot sans écrêtage ? Les longueurs d’épisode sautent vers le haut et vers le bas, l’exécution 2 s’est terminée à 44 pas. Pourquoi ? On le voit en regardant à quel point la politique s’éloigne, en une mise à jour, de celle qui a collecté les données :

10-410-310-210-1100101 025 00050 00075 000100 000 pas d’apprentissage (nombre de pas dans l’environnement) estimation de KL (nats, échelle log)
Distance entre la nouvelle et l’ancienne politique après chaque lot (estimation de KL, exécution 1, échelle logarithmique) PPO sans écrêtage

Pour PPO, la distance moyenne est de 0,014 nat et ne dépasse jamais 0,06. Sans écrêtage, elle est en moyenne de 5,5 et atteint parfois 25 nats — après une seule mise à jour, la politique fait tout autre chose que celle dont elle a appris. Les données ne disent alors plus rien d’elle, et l’amélioration devient une loterie. L’écrêtage est une petite retouche dans la formule, mais il fait d’un algorithme instable un algorithme fiable.

Définition — estimation de la KL entre l’ancienne et la nouvelle politique

La divergence KL de la partie sur la théorie de l’information, ici avec le logarithme naturel (unité nat ; 1 nat = 1 / ln 2 ≈ 1,44 bit), moyennée sur les états du lot :

DKL(πold ‖ πθ) = Es, a ∼ πold[ log πold(a | s) − log πθ(a | s) ] ≈ (1/N) ∑i=1N [ log πold(ai | si) − log πθ(ai | si) ].

Les actions ai ont été jouées par l’ancienne politique, donc la moyenne sur le lot est une estimation sans biais. C’est la moyenne du logarithme du rapport, et e−D est donc la moyenne géométrique du rapport πθ / πold sur les actions collectées.

Ce que cela signifie en chiffres : pour PPO au plus 0,06 nat, e−0,06 = 0,94 — les actions de l’ancien lot sont typiquement de quelques pour cent moins probables, les données renseignent encore sur la nouvelle politique. Sans écrêtage jusqu’à 24,9 nats : e−24,9 ≈ 1,5 · 10−11, la nouvelle politique ne jouerait presque jamais les actions dont elle vient d’apprendre.

6. PPO et les modèles de langage

Dans la partie sur le RLHF, nous avons mentionné qu’InstructGPT et le premier ChatGPT ont été affinés par apprentissage par renforcement. C’était justement PPO : la politique est le modèle de langage, l’état est le texte écrit jusque-là, l’action est le token suivant, et la récompense à la fin de la réponse est donnée par un modèle de récompense appris à partir de préférences humaines. La pénalité pour l’éloignement du modèle de départ (KL) joue le même rôle que l’écrêtage — elle empêche la politique de s’enfuir là où l’on ne peut pas se fier à la récompense.

Définition — la récompense lors du réglage fin d’un modèle de langage par PPO

Pour une requête x et une réponse y générée par le modèle en cours d’ajustement πθ, PPO reçoit la récompense

R(x, y) = rφ(x, y) − β · log [ πθ(y | x) / πref(y | x) ],

où rφ est le modèle de récompense, πref le modèle figé après le réglage fin sur des exemples (SFT) et β la force de la pénalité (c’est ainsi que l’écrit InstructGPT, Long Ouyang et al., 2022). L’espérance du second terme sur les réponses vaut exactement β · DKL(πθ ‖ πref). Un épisode est une réponse, les actions sont des tokens, la récompense rφ n’arrive qu’après le dernier token ; le reste est PPO tel que décrit plus haut.

Pour les grands modèles, PPO est cependant coûteux : en plus du modèle, il lui faut un réseau de valeur tout aussi grand. C’est pourquoi des simplifications sont apparues. Le DPO de la partie sur le RLHF évite complètement l’apprentissage par renforcement. GRPO (DeepSeek, 2024) supprime le réseau de valeur et utilise comme ligne de base la récompense moyenne de plusieurs réponses à la même question — exactement la ligne de base constante que nous avons mesurée plus haut. C’est ainsi que s’entraînent les modèles qui « réfléchissent » sur les mathématiques et le code, là où l’on peut vérifier qu’une réponse est correcte.

Âi = (ri − moyenne(r1, …, rG)) / sd(r1, …, rG)

Âi
l’avantage de la i-ème réponse ; tous ses tokens le reçoivent, et il entre ensuite dans l’objectif écrêté de PPO
ri
la récompense de la i-ème des G réponses à la même question, par exemple 1 = le résultat est juste, 0 = il est faux
moyenne(…)
la ligne de base à la place du réseau de valeur : à quel point le modèle répond d’habitude bien à cette question — une question facile a une barre haute, une question difficile une barre basse
sd(…)
l’écart type du groupe ; il égalise l’échelle pour que les questions à grande et à petite variance des récompenses tirent avec la même force (comme la normalisation des avantages dans notre PPO)
GRPO (Zhihong Shao et al., DeepSeekMath, 2024) : l’avantage d’une réponse = de combien elle est meilleure que les autres réponses à la même question.
Exemple — les avantages GRPO pour quatre réponses

Le modèle répond quatre fois à un problème, correctement seulement la première fois : récompenses (1; 0; 0; 0). Moyenne 0,25, écart type √((0,75² + 3 · 0,25²) / 4) = √0,1875 = 0,433.

Avantages : (1 − 0,25) / 0,433 = 1,732 pour la réponse correcte et (0 − 0,25) / 0,433 = −0,577 pour chacune des trois mauvaises. La somme est nulle : la bonne est renforcée, les mauvaises sont réprimées. Si les quatre réponses étaient toutes justes (ou toutes fausses), tous les avantages seraient nuls et la question n’apprendrait rien — on n’apprend que des questions où le modèle tombe parfois juste et parfois non. (Nous divisons par G ; certaines implémentations divisent par G − 1, les nombres diffèrent alors légèrement.)

7. Résumé

  • Le policy gradient apprend directement les probabilités des actions ; il fonctionne aussi pour des actions continues et explore de lui-même.
  • REINFORCE renforce les actions proportionnellement au retour qui les a suivies ; il est simple, mais l’estimation du gradient a une grande variance.
  • Soustraire une ligne de base réduit la variance sans changer l’espérance (chez nous de 26 % déjà avec une constante) ; avec une V(s) apprise, on obtient un acteur-critique.
  • PPO utilise chaque lot plusieurs fois et, en écrêtant le rapport des probabilités, maintient la politique près de celle qui a collecté les données.
  • Sur le pendule inversé : PPO tient 500 pas après 20 à 30 mille pas dans toutes les exécutions ; sans écrêtage, la politique s’éloigne jusqu’à 25 nats et l’apprentissage oscille.
  • PPO a affiné le premier ChatGPT ; sa simplification (GRPO) entraîne aujourd’hui les modèles qui « réfléchissent ».

Envie de mettre la main à la pâte ? Demandez à un agent IA de lancer le PPO de la bibliothèque Stable-Baselines3 sur l’environnement LunarLander, de faire varier ε de l’écrêtage (0,05 ; 0,2 ; 0,5) — et de tracer comment changent la vitesse et la stabilité de l’apprentissage.

Vous voyez les choses autrement ? Écrivez à support@coden-app.com.

Un Agent sur votre ordinateur, piloté depuis votre téléphone