Q-learning et DQN : apprendre la valeur des actions, du tableau au réseau de neurones
Apprentissage par différence temporelle, Q-learning et SARSA sur la marche au bord de la falaise, exploration ε-gloutonne, on-policy et off-policy, DQN écrit à partir de zéro avec mémoire d’expériences et réseau cible sur le pendule inversé, et pourquoi l’apprentissage du DQN s’effondre si facilement.
Série Bases de l’IA Partie 48 sur 52
- Carte de l’intelligence artificielle : qu’est-ce qui est quoi et comment tout s’emboîte
- Brève histoire de l’intelligence artificielle : de Turing aux modèles de langage
- Données, modèle, entraînement, inférence : les notions de base sur un seul exemple
- Lire la notation mathématique : symboles, indices, sommes et quantificateurs
- Ensembles et relations : les briques dont sont faites les définitions en IA
- Fonctions et applications : pourquoi tout modèle d’IA est une fonction
- Logique et démonstrations : les règles selon lesquelles on raisonne en IA
- Graphes et arbres : la structure sur laquelle reposent la recherche et les réseaux de neurones
- Algèbre linéaire pour l’apprentissage automatique : vecteurs, matrices et pourquoi l’IA multiplie surtout
- Dérivées, gradient et règle de dérivation en chaîne : comment un modèle sait dans quelle direction apprendre
- Descente de gradient : comment un modèle apprend
- Qu’est-ce que la probabilité : du lancer de dé aux axiomes de Kolmogorov
- Probabilité conditionnelle et théorème de Bayes : comment réviser une estimation quand on apprend du nouveau
- Variable aléatoire et fonction de répartition : une seule fonction qui dit tout de la loi
- Fonction de densité et fonction de masse : pourquoi une variable continue a une probabilité nulle en chaque point
- Espérance, variance et covariance : où se situe une loi, quelle est sa largeur et ce qui varie avec quoi
- Panorama des lois de probabilité : Bernoulli, binomiale, Poisson, uniforme, normale et exponentielle
- Loi des grands nombres et théorème central limite : pourquoi les moyennes sont si prévisibles
- Statistique et estimation de paramètres : maximum de vraisemblance, MAP et intervalles de confiance
- Théorie de l’information : entropie, entropie croisée et divergence KL — d’où viennent les fonctions de perte
- Recherche dans l’espace d’états : BFS, DFS, UCS et A* en animations
- Jeux et adversaires : minimax, élagage alpha-bêta et Monte Carlo tree search
- Satisfaction de contraintes : backtracking, propagation de contraintes et AC-3 sur un sudoku et une carte des régions tchèques
- Logique et systèmes à base de connaissances : chaînage avant et arrière, résolution et systèmes experts
- Planification : STRIPS, monde des blocs, heuristiques par relaxation et planification dans les agents IA
- Recherche locale et recuit simulé : un voyageur de commerce à travers les chefs-lieux de région tchèques
- Algorithmes génétiques : population, croisement, mutation et sélection sur un sac à dos de randonnée
- Stratégies d’évolution et programmation génétique : de la règle du cinquième à la loi de Kepler
- Optimisation par colonies de fourmis : comment une piste de phéromone trouve un chemin court
- Optimisation par essaim de particules : inertie, expérience propre et expérience de l’essaim
- Neuroévolution : faire évoluer les poids et la forme des réseaux de neurones, et l’algorithme NEAT
- Ensembles flous et fonctions d’appartenance : comment écrire « un peu chaud »
- Logique floue et probabilité : pourquoi « un peu chaud » ne veut pas dire « probablement chaud »
- Logique floue : t-normes, implications et règles SI–ALORS
- Commande floue : Mamdani et Sugeno, du ventilateur au pendule inversé sur un chariot
- Clustering flou : l’algorithme fuzzy c-means et les points entre les clusters
- Systèmes neuro-flous (ANFIS) : des règles floues qui apprennent à partir des données
- Chaînes de Markov : matrice de transition, distribution stationnaire et PageRank
- Modèles de Markov cachés : l’algorithme de Viterbi et le casino malhonnête
- Réseaux bayésiens : pourquoi l’herbe est mouillée et ce que cela implique pour l’arroseur
- Le filtre de Kalman : comment estimer, à partir de mesures imprécises, où se trouve une voiture et à quelle vitesse elle roule
- Types d’apprentissage automatique : supervisé, non supervisé, semi-supervisé et plus
- Prompts, contexte et RAG : comment donner au modèle les bonnes informations
- Autoencodeurs variationnels (VAE) : de nouvelles images à partir d’un espace latent continu
- Réseaux antagonistes génératifs (GAN) : le faussaire contre le détective
- Modèles de diffusion : comment une image naît du bruit pur
- Processus de décision markoviens : états, actions, récompenses et équations de Bellman
- Q-learning et DQN : apprendre la valeur des actions, du tableau au réseau de neurones
- Policy gradient et PPO : apprendre directement la politique
- Comment fonctionne un agent IA : un modèle de langage en boucle avec des outils
- Programmer avec des agents IA : consigne, tests et vérification
- É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
- Comment un agent apprend la valeur des actions sans connaître les règles du monde.
- Pourquoi le Q-learning et SARSA choisissent un chemin différent au bord de la falaise.
- Ce que font la mémoire d’expériences et le réseau cible dans le DQN, et pourquoi le DQN est capricieux.
Utile à connaître avant : Processus de décision markoviens : états, actions, récompenses et équations de Bellman, Neuroévolution : faire évoluer les poids et la forme des réseaux de neurones, et l’algorithme NEAT
Dans la partie précédente, nous avons calculé exactement la meilleure politique, parce que nous connaissions les règles du monde : où mène chaque action et avec quelle probabilité, et ce que l’agent reçoit en échange. Un agent réel ne les connaît pas. Un robot ne sait pas exactement comment sa roue va patiner, un programme qui joue à un jeu ne connaît pas l’intérieur du jeu. Il doit essayer et apprendre de ce qui s’est passé. Dans cette partie, nous écrivons deux algorithmes de ce genre : le Q-learning avec un tableau et le DQN, où un réseau de neurones remplace le tableau — exactement la combinaison avec laquelle DeepMind a appris en 2015 à un ordinateur à jouer à des dizaines de jeux Atari à partir de l’écran.
Cette partie fait suite à Processus de décision markoviens et à Un réseau de neurones à partir de zéro.
1. Apprendre de l’expérience
Définition — apprentissage par différence temporelle (TD)
Au lieu de la moyenne sur tous les états suivants possibles (comme dans l’équation de Bellman), on utilise une seule transition réellement vécue (s, a, r, s′). L’estimation se déplace un peu en direction de la cible TD r + γ · (estimation de la valeur de s′) : estimation ← estimation + α (cible − estimation). La différence cible − estimation s’appelle l’erreur TD, α est le taux d’apprentissage. Une estimation est donc corrigée d’après une autre estimation (bootstrapping).
Le matin, vous estimez que vous serez au travail dans 30 minutes. Au bout de dix minutes, vous êtes dans un embouteillage et le GPS affirme qu’il en reste encore 35. Inutile d’attendre d’être arrivé : vous savez déjà que l’estimation du matin s’est trompée de 15 minutes, et la prochaine fois vous l’augmenterez un peu. Vous apprenez de la différence entre deux estimations successives.
V(s) ← V(s) + α [r + γ V(s′) − V(s)]
- V(s)
- l’estimation actuelle de la valeur de l’état d’où nous sommes partis — c’est elle que nous corrigeons ; dans le crochet, on la soustrait pour que la correction soit proportionnelle à l’erreur, et non à la valeur entière
- α
- taux d’apprentissage, 0 < α ≤ 1 — quelle part de l’erreur nous acceptons ; une seule transition est un échantillon aléatoire, nous ne lui faisons donc pas entièrement confiance
- r
- la récompense réellement reçue — la seule partie de la cible qui est mesurée, et non estimée
- γ
- l’actualisation — la valeur de l’état suivant arrive un pas plus tard, exactement comme dans l’équation de Bellman
- V(s′)
- l’estimation de la valeur de l’état où nous sommes réellement arrivés — elle représente tout l’avenir restant, que nous n’avons pas encore vécu (bootstrapping) ; au lieu de la moyenne ∑ P(s′ | …), un seul échantillon
Exemple — le trajet jusqu’au travail en chiffres
L’estimation depuis la maison est V(maison) = 30 minutes. Après r = 10 minutes de route, vous êtes dans un embouteillage et l’estimation depuis là est V(bouchon) = 35. Le temps n’est pas actualisé (γ = 1) et, au lieu de récompenses, nous additionnons des minutes : la cible TD est donc 10 + 35 = 45 et l’erreur TD 45 − 30 = 15.
- avec α = 0,5 : nouvelle estimation 30 + 0,5 · 15 = 37,5 minutes,
- avec α = 0,1 : 30 + 0,1 · 15 = 31,5 minutes,
- avec α = 1 : directement 45 — la dernière expérience écraserait complètement toutes les précédentes.
Théorème — avec α fixe, l’estimation est une moyenne mobile des cibles
Si l’estimation part de Q0 et reçoit les cibles c1, c2, …, cn, alors après n corrections Qn = (1 − α)n Q0 + ∑k=1n α (1 − α)n−k ck.
Démonstration. La règle se réécrit Qn = (1 − α) Qn−1 + α cn, et il suffit de substituer de façon répétée. ∎
Les poids décroissent géométriquement : avec α = 0,5, la dernière cible a le poids 0,5, l’avant-dernière 0,25, la précédente 0,125… Les expériences plus anciennes s’oublient donc peu à peu — cela aide quand les cibles changent (et en apprentissage TD elles changent, puisqu’elles sont calculées à partir d’estimations qui apprennent elles-mêmes), mais dans un monde aléatoire l’estimation fluctue. C’est pourquoi la théorie exige, pour une convergence assurée, de diminuer α progressivement.
2. Q-learning
Définition — Q-learning et SARSA
Le Q-learning (Christopher Watkins, 1989) tient un tableau Q(s, a) et le corrige après chaque pas :
Q(s, a) ← Q(s, a) + α [r + γ · maxa′ Q(s′, a′) − Q(s, a)].
Sous des conditions raisonnables (chaque couple état–action est essayé une infinité de fois, α décroît convenablement), il converge vers le Q* optimal. SARSA ne diffère que par la cible : au lieu du maximum, il utilise Q(s′, a′) pour l’action a′ que l’agent effectue vraiment. Le Q-learning apprend donc la valeur du meilleur comportement, SARSA la valeur de la manière dont l’agent se comporte réellement, essais compris.
Un tableau « à quel point est-ce bien de faire ceci ici ». Après chaque pas, la case est corrigée d’après ce qui est venu juste après : la récompense plus l’allure qu’a la situation depuis le nouvel endroit. Le Q-learning calcule comme s’il jouait parfaitement à partir de là ; SARSA tient compte du fait qu’il fera de temps en temps une bêtise.
Q(s, a) ← Q(s, a) + α [r + γ · maxa′ Q(s′, a′) − Q(s, a)]
- Q(s, a)
- la case du tableau pour l’action qui vient d’être essayée — elle seule est corrigée ; les autres actions dans s ne changent pas, car ce pas n’a rien dit à leur sujet
- α
- taux d’apprentissage — chez nous 0,5 : le monde de la falaise est déterministe, nous n’avons donc pas à craindre la nouvelle cible
- r
- la récompense du pas : −1, ou −100 pour une chute
- γ
- l’actualisation — sur la falaise γ = 1, car un épisode se termine toujours et chaque pas coûte −1, si bien qu’un chemin plus court est meilleur même sans actualisation
- maxa′ Q(s′, a′)
- la valeur de la meilleure action dans le nouvel état — le Q-learning suppose qu’à partir de là il jouera au mieux, même si en réalité il essaie de temps en temps une action aléatoire ; dans les graphiques ci-dessous, le Q-learning est ambre
# Q-learning (et SARSA) sur la marche au bord de la falaise
Q(s, a) = 0 pour tous les états et toutes les actions
pour chaque épisode :
s = départ
a = action ε-gloutonne selon Q dans s
tant que s n’est pas l’arrivée :
effectuer a, observer r et s′ # chute : r = −100, s′ = départ
a′ = action ε-gloutonne selon Q dans s′
cible = max sur b Q(s′, b) # Q-learning
cible = Q(s′, a′) # SARSA (à la place de la ligne du dessus)
si s′ est l’arrivée : cible = 0
Q(s, a) = Q(s, a) + α · (r + γ · cible − Q(s, a))
s = s′; a = a′
Exemple — les premières chutes (α = 0,5, γ = 1, le tableau commence à zéro)
Dès le départ, l’agent essaie un pas vers la droite et tombe : r = −100, s′ = départ, où toutes les valeurs valent pour l’instant 0. La nouvelle valeur est Q(départ, →) = 0 + 0,5 · (−100 + 1 · 0 − 0) = −50.
Ensuite, il essaie un pas vers le haut : r = −1, la nouvelle case n’a que des zéros, Q(départ, ↑) = 0 + 0,5 · (−1 + 0 − 0) = −0,5.
S’il tombe une deuxième fois depuis le départ, la plus grande valeur au départ est toujours 0 (il n’a pas encore essayé les actions ↓ et ←), et donc Q(départ, →) = −50 + 0,5 · (−100 + 0 − (−50)) = −75. À chaque nouvelle chute, la valeur s’approche un peu plus de −100.
Remarquez l’effet secondaire : toutes les récompenses réelles sont négatives, si bien que les actions non essayées, à zéro, paraissent meilleures que celles déjà essayées. Un tableau qui commence à zéro pousse ici à lui seul l’agent à essayer de nouvelles choses (ce qu’on appelle l’optimisme face à l’inconnu) — dans le choix glouton, avant même que le hasard ε n’entre en jeu.
Définition — politique ε-gloutonne (ε-greedy)
Avec la probabilité 1 − ε, choisis l’action ayant le plus grand Q(s, a), avec la probabilité ε une action aléatoire. Sans actions aléatoires, l’agent n’essaierait jamais rien de ce qui ne lui semble pas encore le meilleur, et il pourrait rester bloqué sur le premier chemin correct qu’il trouve. C’est la solution la plus simple au dilemme exploration ou exploitation.
Vous allez dans votre restaurant préféré neuf fois sur dix. De temps en temps, vous en essayez un nouveau — sinon vous n’apprendrez jamais qu’une rue plus loin, on cuisine mieux.
Exemple — probabilités des actions pour ε = 0,1
L’action aléatoire est tirée parmi les |A| = 4 actions, donc aussi parmi la meilleure. Par conséquent
π(a | s) = 1 − ε + ε/|A| = 1 − 0,1 + 0,025 = 0,925 pour la meilleure action et ε/|A| = 0,1/4 = 0,025 pour chacune des trois autres.
Chaque « mauvaise » action précise — par exemple un pas vers le bas dans la falaise — arrive donc une fois sur 40 pas.
3. Marche au bord de la falaise : Q-learning contre SARSA
Une expérience classique tirée du manuel de Richard Sutton et Andrew Barto (cliff walking). Une grille 12 × 4, le départ en bas à gauche, l’arrivée en bas à droite et, entre les deux, une falaise. Chaque pas coûte −1, une chute dans la falaise −100 et le retour au départ. Sans actualisation. Le chemin le plus court longe la falaise au plus près (13 pas). Les deux algorithmes apprennent pendant 500 épisodes avec ε = 0,1 et α = 0,5, chacun sur 50 exécutions indépendantes.
Le Q-learning a appris le chemin le plus court le long de la falaise dans les 50 exécutions sur 50. SARSA a choisi dans 41 exécutions un chemin par le bord supérieur de la grille, aussi loin que possible de la falaise (17 pas), dans une autre un chemin encore plus long de deux pas, et dans 8 exécutions la politique gloutonne n’atteint toujours pas l’arrivée après 500 épisodes — elle tourne en boucle dans des endroits où l’agent n’est presque jamais allé pendant l’apprentissage.
Et voici le paradoxe : pendant l’apprentissage, c’est SARSA qui s’en sort mieux. Sur les cent derniers épisodes, il obtient en moyenne −25,1, le Q-learning −51,1. Le Q-learning marche au bord de la falaise et, comme un pas sur dix est aléatoire, il tombe en moyenne 0,34 fois par épisode ; SARSA seulement 0,04 fois. Le Q-learning a appris ce qui est le meilleur sans essais ; SARSA, ce qui est le meilleur avec les essais. Lequel nous voulons dépend de la question de savoir si l’agent continuera d’essayer en production — un robot qui apprend sur une vraie machine devrait raisonner comme SARSA.
Exemple — combien de fois tombe le Q-learning (estimation simplifiée)
Le chemin appris par le Q-learning monte depuis le départ, puis longe dix cases juste au-dessus de la falaise. Au départ et sur chacune de ces dix cases, un pas vers le bas mène dans la falaise (au départ, un pas vers la droite), soit une action précise — avec ε = 0,1, de probabilité 0,025. Traverser 11 cases de ce genre sans tomber :
0,97511 = 0,757, si bien qu’une chute pendant un passage a la probabilité q = 1 − 0,757 = 0,243.
Après une chute, l’agent recommence au départ, donc le nombre de chutes avant un passage réussi suit une loi géométrique d’espérance q / (1 − q) = 0,243 / 0,757 = 0,32 chute par épisode. Mesuré : 0,34 — un peu plus, car l’estimation néglige les pas aléatoires vers la gauche, après lesquels l’agent passe encore d’autres pas au-dessus de la falaise. SARSA passe par le bord supérieur, trois rangées au-dessus de la falaise : là, il faudrait plusieurs pas aléatoires vers le bas d’affilée pour l’y faire tomber. Il prend un risque surtout au départ, et cela seul donne 0,025 / 0,975 = 0,026 chute par épisode ; mesuré : 0,04.
Définition — apprentissage selon sa propre politique ou selon une autre (on-policy / off-policy)
Une méthode est on-policy quand elle apprend la valeur de la politique selon laquelle elle agit en ce moment (SARSA). Elle est off-policy quand elle agit selon une politique (par exemple ε-gloutonne) mais apprend la valeur d’une autre (le Q-learning apprend la politique gloutonne). Les méthodes off-policy peuvent aussi apprendre d’expériences recueillies plus tôt ou par quelqu’un d’autre.
On-policy : j’apprends de mes propres trajets et je les évalue tels qu’ils sont. Off-policy : je regarde aussi les trajets des autres (ou mes anciens) et j’en déduis comment conduirait le meilleur conducteur.
4. Quand le tableau ne suffit plus : DQN
Un tableau a besoin d’une ligne pour chaque état. Le pendule inversé sur un chariot de la partie consacrée à la neuroévolution a un état fait de quatre nombres réels (position et vitesse du chariot, angle et vitesse angulaire de la tige) ; un jeu Atari a un état fait d’un écran de 210 × 160 pixels. Pas de tableau possible. À sa place, Q(s, a) est estimé par un réseau de neurones.
Définition — Deep Q-Network (DQN)
Le DQN (Volodymyr Mnih et al., DeepMind, 2015) estime Q(s, ·) par un réseau de paramètres θ et minimise (r + γ maxa′ Q(s′, a′; θ−) − Q(s, a; θ))². Deux modifications sont essentielles : la mémoire d’expériences (replay buffer) — les transitions sont stockées et l’apprentissage se fait sur des lots aléatoires, et non sur les derniers pas à la suite ; et le réseau cible θ− — une copie du réseau mise à jour seulement de temps en temps, pour que la cible ne bouge pas à chaque pas d’apprentissage.
Mémoire d’expériences : au lieu d’apprendre seulement des dernières minutes, l’agent revoit des souvenirs pris au hasard dans toute son histoire, et il n’oublie donc pas ce qu’il savait faire hier. Réseau cible : quand vous apprenez à toucher une cible, cela ne sert à rien si elle se déplace à chaque tir. On la laisse un moment en place.
L(θ) = E(s, a, r, s′) ~ D [(r + γ maxa′ Q(s′, a′; θ−) − Q(s, a; θ))²]
- E… ~ D
- moyenne sur des transitions aléatoires de la mémoire d’expériences D — elle mélange anciennes et nouvelles expériences, si bien que des pas successifs et très semblables ne tirent pas le réseau dans une seule direction
- r
- récompense — pour le pendule sur le chariot, +1 pour chaque pas où la tige tient debout
- γ
- actualisation 0,99 — le réseau « voit » environ 1/(1 − γ) = 100 pas en avant
- max Q(s′, a′; θ−)
- la cible tirée du réseau cible aux paramètres gelés θ− — le même maximum que dans le Q-learning tabulaire, sauf qu’il ne bouge pas pendant le pas d’apprentissage ; quand l’état s′ signifie une chute, ce terme vaut 0
- Q(s, a; θ)
- l’estimation du réseau appris pour l’action réellement effectuée — la seule chose qui change pendant le pas d’apprentissage (le gradient ne passe que par θ)
Définition — perte de Huber
Au lieu du carré de l’erreur d = Q(s, a; θ) − cible, notre DQN utilise (comme l’article original, qui écrête l’erreur à ±1) la perte de Huber H(d) = d²/2 pour |d| ≤ 1 et |d| − 1/2 sinon. Sa dérivée vaut d au milieu et ±1 à l’extérieur : les petites erreurs sont corrigées comme avec le carré, une grande erreur (par exemple quand la cible saute après la copie du réseau cible) donne au plus un gradient unitaire, et une seule transition bizarre ne déstabilise pas le réseau.
# DQN sur le pendule inversé sur un chariot
réseau Q(·; θ) 4 → 64 → 64 → 2, réseau cible θ⁻ = θ, mémoire D vide
s = départ aléatoire
pour t = 1 … 30 000 :
ε = max(0,05; 1 − 0,95 · t / 10 000)
a = action aléatoire avec la probabilité ε, sinon argmax Q(s, ·; θ)
effectuer a, observer s′ et si la tige est tombée
stocker (s, a, r = 1, s′, tombée) dans D # au-delà de 20 000, la plus ancienne sort
s = nouveau départ si la tige est tombée ou a tenu 500 pas, sinon s′
tirer de D un lot aléatoire de 32 transitions, pour chacune :
cible = r, si tombée
cible = r + γ · max Q(s′, ·; θ⁻), sinon
un pas d’Adam sur la perte de Huber moyenne (Q(s, a; θ) − cible)
tous les 500 pas : θ⁻ = θ
Exemple — exploration et taille des valeurs
L’exploration décroît linéairement : ε0 = 1 (uniquement des actions aléatoires), au pas 5 000 on a ε = 1 − 0,95 · 0,5 = 0,525, et à partir du pas 10 000 elle reste à 0,05.
Quelle taille ont les valeurs que le réseau doit apprendre ? Si la tige tenait éternellement, la valeur serait 1 + 0,99 + 0,99² + … = 1/(1 − 0,99) = 100 ; pour un épisode limité à 500 pas, c’est (1 − 0,99500)/(1 − 0,99) = 99,3. Au début, le réseau renvoie des nombres proches de zéro, si bien que les cibles doivent croître de deux ordres de grandeur pendant l’apprentissage — et elles se déplacent sans cesse avec elles.
Notre DQN : un réseau 4 → 64 → 64 → 2 (deux actions : pousser à gauche ou à droite), récompense +1 pour chaque pas où la tige tient debout, γ = 0,99, mémoire de 20 000 transitions, lots de 32, le réseau cible est copié tous les 500 pas, ε décroît de 1 à 0,05 pendant les 10 000 premiers pas. Au total 30 000 pas. Tous les 2 500 pas, nous mesurons combien de pas tient la politique gloutonne (moyenne sur quatre départs, au plus 500, soit 10 secondes).
| variante | meilleure mesure | quand | à la fin |
|---|---|---|---|
| DQN complet, graine 1 | 500 | pas 17 500 | 110 |
| DQN complet, graine 2 | 500 | pas 12 500 | 217 |
| sans mémoire d’expériences | 192 | pas 7 500 | 124 |
| sans réseau cible | 9 | pas 2 500 | 9 |
Le DQN complet apprend à maintenir la tige pendant les 500 pas entiers — dans l’exécution avec la graine 1, pour la première fois au pas 17 500. Mais il l’oublie aussitôt : à la fin de l’apprentissage, il ne tient plus que 110 pas. La deuxième exécution fluctue de la même façon. Sans mémoire d’expériences (il n’apprend que des 32 derniers pas), le réseau ne dépasse pas 192. Et sans réseau cible, l’apprentissage s’effondre complètement : la politique ne tient pendant tout ce temps que 9 pas — exactement autant qu’un chariot que vous poussez toujours vers la droite. Le réseau a « appris » une seule action.
5. Pourquoi DQN est si capricieux
Définition — triade mortelle (deadly triad)
C’est ainsi que Sutton et Barto désignent la combinaison de trois éléments : l’approximation de fonction (un réseau au lieu d’un tableau), le bootstrapping (la cible est calculée à partir de sa propre estimation) et l’apprentissage off-policy. Chacun pris séparément est sans danger ; ensemble, l’apprentissage peut osciller ou diverger. Le DQN contient les trois — la mémoire d’expériences et le réseau cible ne font qu’atténuer le danger.
Le réseau apprend d’après ses propres estimations. Quand l’estimation monte dans un état, elle monte aussi (parce que le réseau généralise) dans les états semblables, y compris celui d’après lequel on calcule la cible. Celle-ci monte, l’estimation la suit… Un chien qui court après sa propre queue.
En pratique, on ajoute donc toute une série d’améliorations : le Double DQN (Hado van Hasselt et al., 2015) sépare le choix de la meilleure action de son évaluation et atténue la surestimation systématique qu’apporte le maximum dans la cible ; puis la mémoire priorisée, la séparation entre valeur et avantage (dueling) et d’autres — leur combinaison s’appelle Rainbow (2017). Et un conseil tout à fait pratique : pendant l’apprentissage, sauvegardez le réseau de la meilleure mesure, pas le dernier.
y = r + γ Q(s′, argmaxa′ Q(s′, a′; θ); θ−)
- r
- récompense, inchangée
- γ
- actualisation, inchangée
- argmax Q(s′, a′; θ)
- le choix de l’action par le réseau appris — quelle action nous choisirions dans s′
- Q(s′, …; θ−)
- l’évaluation de cette action par le réseau cible — une autre estimation avec d’autres erreurs, si bien qu’une action que le réseau appris a surestimée par hasard ne reçoit pas automatiquement une valeur surestimée
Exemple — pourquoi le maximum surestime (version simplifiée)
Deux actions ont une valeur réelle de 0, mais l’estimation de chacune est entachée d’une erreur indépendante de +1 ou de −1 (chacune avec la probabilité 1/2). Quatre cas équiprobables donnent comme maximum des estimations 1, 1, 1 et −1, donc
E[max(Q̂1, Q̂2)] = (1 + 1 + 1 − 1)/4 = 0,5 > 0 = max(Q1, Q2).
Le maximum d’estimations bruitées est en moyenne plus grand que le maximum des valeurs réelles, et comme la cible avec le maximum est réinjectée encore et encore, la surestimation se propage. Si une estimation choisit l’action et qu’une seconde, indépendante, l’évalue, l’espérance de l’évaluation vaut 0 — l’erreur de la seconde estimation n’a plus de lien avec le choix.
Les méthodes fondées sur la valeur comme le DQN fonctionnent bien quand il y a peu d’actions (pousser à gauche ou à droite ; les boutons d’une manette). Pour des actions continues — avec quelle force faire tourner l’articulation d’un robot —, il est plus avantageux d’apprendre directement la politique. C’est le sujet de la prochaine partie, consacrée au policy gradient et à PPO.
6. Résumé
- Sans connaître les règles du monde, les valeurs s’apprennent à partir des transitions vécues : l’estimation se déplace vers la cible r + γ · estimation de l’état suivant.
- Le Q-learning apprend la valeur du meilleur comportement (off-policy), SARSA la valeur du comportement avec essais (on-policy).
- Sur la falaise : le Q-learning trouve le chemin le plus court (13 pas), mais avec ε = 0,1 il tombe 0,34 fois par épisode ; SARSA passe plus prudemment et obtient davantage pendant l’apprentissage (−25,1 contre −51,1).
- Le DQN remplace le tableau par un réseau ; sans mémoire d’expériences ou sans réseau cible, il n’apprend pas (au plus 192 et 9 pas respectivement).
- Même le DQN complet fluctue : il maintient la tige 500 pas, puis l’oublie de nouveau — la triade mortelle.
Envie de mettre la main à la pâte ? Demandez à un agent IA d’entraîner un DQN sur l’environnement CartPole de la bibliothèque Gymnasium et de tracer la courbe d’apprentissage pour cinq graines. Puis demandez-lui d’ajouter le Double DQN et de comparer.
Vous voyez les choses autrement ? Écrivez à support@coden-app.com.