Comment la perte DQN est-elle dérivée (ou théoriquement motivée par) l'équation de Bellman, et comment est-elle liée à la mise à jour de Q-learning?
Je fais un projet sur l'apprentissage par renforcement. J'ai programmé un agent qui utilise DDQN. Il existe de nombreux tutoriels à ce sujet, donc l'implémentation du code n'a pas été si difficile.
Cependant, j'ai du mal à comprendre comment on devrait trouver ce type d'algorithmes en partant de l'équation de Bellman, et je ne trouve pas d'explication compréhensible pour cette dérivation / voie du raisonnement.
Donc, mes questions sont:
- Comment la perte pour entraîner le DQN est-elle dérivée (ou théoriquement motivée par) l'équation de Bellman?
- Quel est le lien avec la mise à jour habituelle de Q-learning?
D'après mes notes actuelles, l'équation de Bellman ressemble à ceci
$$Q_{\pi} (s,a) = \sum_{s'} P_{ss'}^a (r_{s,a} + \gamma \sum_{a'} \pi(a'|s') Q_{\pi} (s',a')) \label{1}\tag{1} $$
qui, à ma connaissance, est une expression récursive qui dit: la paire état-action donne une récompense égale à la somme de tous les états possibles $s'$ avec la probabilité d'arriver à cet état après avoir agi $a$ (noté $P_{ss'}^a$, ce qui signifie que l'environnement agit sur l'agent) multiplié par la récompense que l'agent a obtenue en agissant $a$ en état $s$ + somme actualisée de la probabilité des différentes actions possibles $a'$ fois la récompense de l'État, paire d'action $s',a'$.
L'itération Q-Learning (étape intermédiaire) est souvent désignée par:
$$Q^{new}(s,a) \leftarrow Q(s,a) + \alpha (r + \gamma \max_a Q(s',a') - Q(s,a)) \label{2}\tag{2}$$
ce qui signifie que le nouvel état, la récompense d'action est l'ancienne valeur Q + le taux d'apprentissage, $\alpha$, multiplié par la différence temporelle, $(r + \gamma \max_a Q(s',a') - Q(s,a))$, qui consiste en la récompense réelle reçue par l'agent + un facteur de remise multiplié par la fonction Q de cette nouvelle paire état-action moins l'ancienne fonction Q.
L'équation de Bellman peut être convertie en règle de mise à jour car un algorithme qui utilise cette règle de mise à jour converge, comme l' indique cette réponse .
Dans le cas de (D) DQN, $Q(s,a)$ est estimée par notre NN qui conduit à une action $a$ et nous recevons $r$ et $s'$.
Ensuite, nous alimentons $s$ aussi bien que $s'$dans notre NN (avec Double DQN, nous les alimentons dans différents NN). le$\max_a Q(s',a')$est effectuée sur la sortie de notre réseau cible. Cette valeur q est ensuite multipliée par$\gamma$ et $r$est ajouté au produit. Ensuite, cette somme remplace la valeur q de l'autre NN. Puisque ce NN de base produit$Q(s,a)$ mais aurait dû sortir $r + \gamma \max_a Q(s',a')$ nous formons le NN de base pour changer les poids, de sorte qu'il produise plus près de cette différence de cible temporelle.
Réponses
L'équation de Bellman dans RL est généralement définie $$v_\pi(s) = \sum_a \pi(a|s) \sum_{s', r} p(s', r|s, a)\left[r + v_\pi(s')\right] = \mathbb{E}_{s' \sim p, a \sim \pi}\left[r(s, a) + v_\pi(s')\right] \; .$$La façon dont vous l'avez écrit est correcte, mais je pensais juste que je voudrais le souligner. Quoi qu'il en soit, votre intuition est correcte en ce qu'elle exprime une relation récursive telle que la valeur de votre état actuel$s$ est égale à la somme de la récompense attendue de cet état plus la valeur attendue de l'état dans lequel vous passez.
En fait, vous implémentez la mise à jour Q-learning dans Deep Q-Learning. La fonction de perte que vous minimisez dans DQN est$$ L(\theta) = \mathbb{E}_{(s,a,r,s')\sim U(D)}\left[\left( r + \gamma \max_{a'}Q(s', a'; \theta^-) - Q(s, a; \theta)\right)^2 \right]\;$$ où $U(D)$ désigne uniformément au hasard à partir du tampon de relecture $D$ et $\theta$ sont vos paramètres réseau (le réseau paramètre la fonction Q), et $\theta^-$ sont une itération précédente des paramètres qui sont mis à jour chaque $c$ épisodes pour aider à la convergence du réseau.
Comme vous pouvez le voir, la fonction de perte minimise l'erreur «Erreur de Bellman» de votre équation 2. Voyons pourquoi.
La mise à jour TD que vous fournissez modifie progressivement la valeur Q pour $(s, a)$ envers $r + \max_a Q(s', a)$ - c'est ce que nous voulons après tout car il finit par converger vers la fonction Q optimale.
Pensons maintenant au cas de Deep Q-learning. Nous voulons que notre réseau se rapproche$Q(s, a)$ et donc si nous formons le réseau, en utilisant la perte MSE, avec $r + \max_a Q(s', a)$ comme notre objectif, notre réseau sera progressivement déplacé vers la prédiction $r + \max_aQ(s', a)$ (ce qui nous donnerait à nouveau des valeurs Q optimales pour les paires état-action), tout comme avec la mise à jour TD.
Cela suppose que vous sachiez comment l'entraînement des réseaux de neurones fonctionne, donc si vous ne le faites pas, je vous recommanderais de poser / rechercher une question pertinente qui explique cela.