Jai lu larticle DeepMind Atari de Google et jessaye pour comprendre le concept de «relecture d’expérience». La relecture d’expérience est évoquée dans de nombreux autres articles d’apprentissage par renforcement (en particulier, l’article AlphaGo), je veux donc comprendre comment cela fonctionne. Voici quelques extraits.
Premièrement, nous avons utilisé un mécanisme dinspiration biologique appelé répétition dexpérience qui randomise les données, supprimant ainsi les corrélations dans la séquence dobservation et lissant les changements dans la distribution des données.
Le papier élabore ensuite comme suit:
Bien que dautres méthodes stables existent pour la formation des réseaux de neurones dans le cadre de lapprentissage par renforcement, comme la Q-itération à ajustement neuronal, ces méthodes impliquent lentraînement répété de réseaux de novo des centaines ditérations. Par conséquent, ces méthodes, contrairement à notre algorithme, sont trop inefficace pour être utilisé avec succès avec de grands réseaux de neurones. Nous paramétrons une fonction de valeur approximative $ Q (s, a; \ theta_i) $ en utilisant le réseau de neurones convolutif profond illustré sur la figure 1, dans lequel $ \ theta_i $ sont les paramètres (cest-à-dire les poids) du Q-network à litération $ i $ . Pour effectuer une relecture dexpérience, nous stockons les expériences de lagent $ e_t = (s_t, a_t, r_t, s_ {t + 1}) $ à chaque pas de temps $ t $ dans un ensemble de données $ D_t = \ {e_1, \ dots, e_t \} $ . Pendant apprentissage, nous appliquons des mises à jour Q-learning, sur des échantillons (ou mini-lots) dexpérience $ (s, a, r, s « ) \ sim U (D) $ , prélevés uniformément au hasard dans le pool déchantillons stockés. La mise à jour Q-learning à litération $ i $ utilise la fonction de perte suivante:
$$ L_i (\ theta_i) = \ mathbb {E} _ {(s, a, r, s « ) \ sim U (D)} \ left [\ left (r + \ gamma \ max_ {a »} Q (s « , a « ; \ theta_i ^ -) – Q (s, a; \ theta_i) \ right) ^ 2 \ right] $$
Quest-ce que la relecture dexpérience et quels sont ses avantages, en termes simples?
Réponse
Lélément clé de la le texte entre guillemets est:
Pour effectuer une relecture dexpérience, nous stockons les expériences de lagent $ e_t = (s_t, a_t, r_t, s_ {t + 1} ) $
Cela signifie quau lieu dexécuter Q-learning sur des paires état / action telles quelles se produisent pendant la simulation ou lexpérience réelle, le système stocke les données découvertes pour [état, action, récompense, état suivant] – généralement dans une grande table. Notez que cela ne stocke pas les valeurs associées – ce sont les données brutes à alimenter ultérieurement dans les calculs de valeur daction.
La phase dapprentissage est alors logiquement séparée de lacquisition dexpérience, et basée sur la prise déchantillons aléatoires de cette table. Vous voulez toujours entrelacer les deux processus – agir et apprendre – parce que lamélioration de la politique conduira à des comportements différents qui devraient explorer des actions plus proches de celles optimales, et vous voulez en tirer des leçons. Cependant, vous pouvez diviser cela comme vous le souhaitez – par exemple faites un pas, apprenez de trois étapes précédentes aléatoires, etc. Les cibles Q-Learning lors de lutilisation de la relecture dexpérience utilisent les mêmes cibles que la version en ligne, il ny a donc pas de nouvelle formule pour cela. La formule de perte donnée est également celle que vous utiliseriez pour DQN sans relecture dexpérience. La différence est seulement quel s, a, r, s « , a » vous y alimentez.
Dans DQN, léquipe DeepMind a également maintenu deux réseaux et commuté lequel était lapprentissage et lequel alimente les estimations actuelles de la valeur daction en tant que «bootstraps». Cela a contribué à la stabilité de lalgorithme lors de lutilisation dun approximateur de fonction non linéaire. Cest ce que représente la barre dans $ {\ theta} ^ {\ overline {\ space}} _ i $ – elle désigne la version alternative gelée des poids.
Avantages de la relecture dexpérience:
-
Utilisation plus efficace de lexpérience précédente, en apprenant plusieurs fois avec elle. Cest essentiel lorsque lacquisition dune expérience du monde réel est coûteuse, vous pouvez profiter pleinement de Les mises à jour Q-learning sont incrémentielles et ne convergent pas rapidement, donc plusieurs passes avec les mêmes données sont bénéfiques, en particulier lorsquil y a une faible variance des résultats immédiats (récompense, état suivant) étant donné le même état, paire dactions.
-
Meilleur comportement de convergence lors de lapprentissage dun approximateur de fonction. Ceci est en partie dû au fait que les données ressemblent davantage aux données iid supposées dans les preuves de convergence dapprentissage les plus supervisées.
Inconvénient de la relecture dexpérience:
- Il est plus difficile dutiliser des algorithmes dapprentissage en plusieurs étapes, tels que Q ($ \ lambda $) , qui peut être ajustée pour donner de meilleures courbes dapprentissage en équilibrant le biais (dû au bootstrap) et la variance (due aux retards et au caractère aléatoire des résultats à long terme). DQN en plusieurs étapes avec expérience-rejeu Le DQN est lune des extensions explorées dans larticle Rainbow: Combining Improvements in Deep Reinforcement Learning .
Lapproche utilisée dans DQN est brièvement décrite par David Silver dans certaines parties de cette conférence vidéo (vers 01h17: 00, mais cela vaut la peine de voir les sections avant). Je recommande de regarder toute la série, qui est un cours de niveau supérieur sur lapprentissage par renforcement, si vous avez le temps.
Commentaires
- Let ‘ s disent pendant la formation que nous sommes dans un état et que nous prenons une action selon la politique epsilon-gourmande et que vous vous retrouvez dans un autre état. Ainsi, vous obtenez des récompenses et létat suivant. Ici, la récompense peut être le score du jeu et les états peuvent être les motifs de pixels de lécran. Et puis nous reprenons lerreur entre notre aproximateur de fonction et la valeur que nous avons obtenue de la politique gourmande en utilisant à nouveau un approximateur de fonction déjà figé. Mais avec la relecture de lexpérience lors de loptimisation de lapproximateur, nous prenons un ensemble de données daction détat aléatoire. Ai-je raison?
- @ShamaneSiriwardhana: Oui, je pense que vous avez raison. Ce sont exactement les mêmes données de la trajectoire réelle, mais au lieu dapprendre uniquement à partir de létape la plus récente, vous les enregistrez dans une grande table et échantillonnez à partir de cette table (généralement plusieurs échantillons, avec un magasin de 1000 étapes précédentes à choisir ). Si vous avez besoin de plus de précisions, posez peut-être une question sur le site.
- Oui, jai parcouru à nouveau le journal. Il indique également que cette méthode peut également améliorer lapprentissage hors politique. Parce que dans Q apprendre avec agir selon la politique epsilon-gourmand mais mettre à jour les valeurs fonctionne selon la politique gourmande. Ainsi, à chaque pas de temps, nos paramètres de réseau neuronal sont mis à jour par des statistiques de mini-lots qui ne sont surtout pas liées aux statistiques de pas de temps exactes, mais ce qui sest passé avant cela aide également à décorréler les données.
- @Neil Slater, I ‘ jai parcouru le papier Rainbow et je nai ‘ voir aucun commentaire spécial sur lutilisation dune astuce spéciale pour combiner la relecture dexpérience et le multi- méthode par étapes. Jai également ‘ entendu dire que la méthode en plusieurs étapes est à lorigine impossible à combiner avec la relecture dexpérience, mais pourquoi ne pas choisir aléatoirement n expériences consécutives au lieu d1 à partir de la relecture dexpérience, mais à partir de la relecture afin quentre chaque n-expériences, aucune corrélation na été trouvée? Nest-ce pas ‘ t cette répétition dexpérience en plusieurs étapes?
- @NeilSlater Pourquoi est-il » plus difficile dutiliser plusieurs algorithmes dapprentissage par étapes « ? Que vouliez-vous dire?
Réponse
Lalgorithme (ou au moins une version de celui-ci, tel quimplémenté dans le projet de synthèse Coursera RL ) est le suivant:
-
Créez un « Buffer » de relecture qui stocke le dernier
#buffer_size
SRAS (État, action, récompense, nouvel état) expériences. -
Exécutez votre agent et laissez-le accumuler des expériences dans le tampon de relecture jusquà ce quil (le tampon) ait au moins
#batch_size
expériences .- Vous pouvez sélectionner des actions selon une certaine politique (par exemple soft-max pour lespace daction discret, gaussien pour continu, etc.) sur votre $ \ hat {Q} (s, a; \ theta) $ estimateur de fonction.
-
Une fois quil atteint
#batch_size
, ou plus:-
faites une copie de lestimateur de fonction ( $ \ hat {Q} (s, a; \ theta) $ ) à lheure actuelle, cest-à-dire une copie des poids $ \ theta $ – que vous «gelez» et ne mettez pas à jour, et utilisez pour calculer les « vrais » états $ \ hat {Q} (s « , a »; \ theta) $ . Exécuter pour
num_replay
mises à jour:-
échantillon
#batch_size
expériences à partir du tampon de relecture. -
Utilisez les expériences échantillonnées pour effectuez une mise à jour par lots de votre estimateur de fonction (par ex. dans Q-Learning où $ \ hat {Q} (s, a) = $ Réseau neuronal – mettre à jour les poids du réseau). Utilisez les poids figés comme la « vraie » fonction des valeurs daction, mais continuez à améliorer la fonction non figée.
-
-
faites-le jusquà ce que vous atteindre un état terminal.
-
noubliez pas dajouter constamment les nouvelles expériences au tampon de relecture
-
-
Courez autant dépisodes que vous le souhaitez.
Ce que jentends par « vrai »: chaque expérience peut être considérée comme un duo dapprentissage « supervisé », où vous avez une fonction de valeur vraie $ Q (s, a) $ et un estimateur de fonction $ \ hat {Q} (s, a) $ . Votre objectif est de réduire lerreur de valeur, par ex. $ \ sum (Q (s, a) – \ hat {Q} (s, a)) ^ 2 $ . Puisque vous navez probablement pas accès aux valeurs daction true , vous utilisez à la place une version améliorée amorcée du dernier estimateur , en tenant compte de la nouvelle expérience et de la récompense donnée. En Q-learning, la valeur de laction « vraie » est $ Q (s, a) = R_ {t + 1} + \ gamma \ max_ {a « } \ hat {Q} (s », a « ; \ theta) $ où $ R $ est la récompense et $ \ gamma $ est le facteur de remise.
Voici un extrait du code:
def agent_step(self, reward, state): action = self.policy(state) terminal = 0 self.replay_buffer.append(self.last_state, self.last_action, reward, terminal, state) if self.replay_buffer.size() > self.replay_buffer.minibatch_size: current_q = deepcopy(self.network) for _ in range(self.num_replay): experiences = self.replay_buffer.sample() optimize_network(experiences, self.discount, self.optimizer, self.network, current_q, self.tau) self.last_state = state self.last_action = action return action