John Schulman

Fondamentaux de l'apprentissage par renforcement profond

27 septembre 2016

Intelligence Artificielle
Illustration de John Schulman

Introduction et Définitions

John Schulman

Bonjour à tous. Je vais parler de certaines des méthodes fondamentales de l'apprentissage par renforcement profond. Le but de cette présentation est le suivant. D'abord, je ferai une brève introduction à ce qu'est l'apprentissage par renforcement profond et s'il est judicieux de l'appliquer à votre problème. Je parlerai de certaines des techniques de base. D'une part, nous avons les méthodes de gradient de politique. D'autre part, nous avons les méthodes qui apprennent une fonction Q, incluant le Q-learning et SARSA. Je parlerai un peu à la fin des avantages et des inconvénients de ces différentes méthodes. D'abord, qu'est-ce que l'apprentissage par renforcement ? C'est une branche de l'apprentissage automatique qui s'intéresse à la prise de séquences d'actions. Il est souvent décrit en termes d'agent interagissant avec un environnement auparavant inconnu, et essayant de maximiser une sorte de fonction de récompense cumulative que nous avons définie, accumulée au fil du temps. À peu près n'importe quel type de tâche où vous avez un objectif à atteindre peut être formulé en ces termes. C'est une formulation extrêmement générale. Qu'est-ce que l'apprentissage par renforcement profond ? C'est simple. C'est juste de l'apprentissage par renforcement où vous utilisez des réseaux de neurones comme approximateurs de fonctions. La chose intéressante à propos de l'apprentissage par renforcement, contrairement à l'apprentissage supervisé, est qu'il n'est en fait pas totalement évident de savoir ce que votre réseau de neurones doit approximer. Il existe différents types d'algorithmes qui approximent différentes choses. Un choix est d'utiliser le réseau de neurones pour approximer votre politique, c'est-à-dire la façon dont l'agent choisit ses actions. Un autre choix est d'approximer les fonctions de valeur, qui mesurent à quel point différents états ou paires état-action sont bons ou mauvais. Enfin, vous pouvez essayer d'apprendre un modèle de dynamique du système, qui fera des prédictions sur les prochains états et les récompenses.

Domaines d'Application

John Schulman

Je vais maintenant donner quelques exemples de différents domaines où vous pourriez appliquer l'apprentissage par renforcement et ce que seraient les observations et les actions. Un exemple est la robotique. Ici, on pourrait imaginer un robot où les observations sont les images de la caméra et les angles des articulations du robot. Les actions sont les couples articulaires que vous appliquez. La récompense va dépendre de ce que vous voulez que le robot fasse. C'est quelque chose que nous, concepteurs de l'algorithme, pouvons définir. Les récompenses pourraient être de rester en équilibre, de naviguer vers un emplacement cible, ou quelque chose de plus abstrait comme servir et protéger les humains. L'apprentissage par renforcement a également été utilisé dans des applications plus pratiques, ou des applications qui ont été pratiques par le passé. Je pense que la robotique sera très pratique à l'avenir. Par exemple, un domaine est la gestion des stocks. C'est juste un exemple de la façon dont vous pourriez utiliser l'apprentissage par renforcement pour un problème de prise de décision. Vous devez décider de la quantité à stocker pour chaque article. Vos observations seraient vos niveaux de stock actuels, les actions seraient la quantité de chaque article que vous allez acheter, et la récompense est votre profit. Les personnes en recherche opérationnelle étudient beaucoup ce genre de problèmes. Il existe également de nombreux problèmes d'apprentissage automatique où les gens ont commencé à appliquer des techniques d'apprentissage par renforcement. Un exemple est l'attention. L'idée de l'attention est que vous ne voulez pas regarder l'intégralité de l'entrée en même temps ; vous voulez vous concentrer uniquement sur une partie. Un exemple de cela est une grande image dont vous pourriez vouloir ne recadrer qu'une partie et effectuer la détection sur cette partie de l'image. Ici, votre observation serait votre fenêtre d'image actuelle, l'action est l'endroit où regarder ou l'endroit où recadrer votre image, et la récompense est si vous faites une erreur de classification ou non. Ici, vous devez essayer de choisir la bonne zone de l'image à regarder pour faire la classification correcte. L'apprentissage par renforcement a également été utilisé dans des problèmes de prédiction structurée, qui par le passé n'étaient souvent pas considérés comme des problèmes d'apprentissage par renforcement, mais il s'avère que pour les résoudre correctement, c'est un problème d'apprentissage par renforcement. La traduction automatique, par exemple : vous recevez une phrase dans la langue source et vous devez émettre une phrase dans la langue cible. Vos observations sont la phrase dans la langue source, vous émettez un mot à la fois dans la langue cible, et vous avez une fonction de récompense qui regarde la phrase entière et vous dit si votre traduction est bonne. Puisque cela n'est pas différentiable, vous ne pouvez pas simplement dériver l'ensemble et faire une descente de gradient. Il s'avère que vous pouvez utiliser une méthode de gradient de politique pour optimiser votre système de traduction. Les gens ont commencé à faire cela. Ce ne sont que quelques exemples, pas du tout exhaustifs.

RL vs Apprentissage Supervisé et Bandits

John Schulman

Je veux juste dire un mot sur la façon dont l'apprentissage par renforcement s'intègre dans le tableau de tous les autres types de problèmes d'apprentissage automatique. Les cours précédents de cette série ont traité de l'apprentissage supervisé et de l'apprentissage non supervisé, alors comment l'apprentissage par renforcement s'y rapporte-t-il et en quoi est-il différent ? Comparons-le d'abord à l'apprentissage supervisé. En apprentissage supervisé, l'environnement échantillonne une paire entrée-sortie à partir d'une distribution rho. L'agent fait une prédiction, y-chapeau, en utilisant sa fonction f. Il reçoit une perte qui lui indique s'il a fait la bonne ou la mauvaise prédiction. L'interprétation est que l'environnement pose une question à l'agent et lui donne ensuite la bonne réponse. Les bandits contextuels rendent ce problème un peu plus difficile car ils donnent moins d'informations à l'agent apprenant. Maintenant, l'environnement échantillonne une entrée, mais remarquez qu'il n'y a pas de sortie correcte associée. Ensuite, l'agent entreprend une action et reçoit un coût provenant d'une certaine distribution de probabilité. c est le coût, échantillonné à partir d'une distribution de probabilité. L'agent ne sait pas quelle est cette distribution de probabilité, ce qui rend le problème difficile. L'environnement pose une question à l'agent, l'agent répond, et l'environnement lui donne un score bruité sur la réponse. Cela a de nombreuses applications ; les recommandations personnalisées en sont une importante, ainsi que la publicité. Vous avez un client et vous savez ce qu'il a aimé par le passé, vous devez donc faire une prédiction sur ce qu'il va aimer à l'avenir. Vous lui montrez des publicités ou des liens appropriés, comme le livre ou la vidéo dont vous voulez faire la promotion. La grande différence entre cela et le cadre de l'apprentissage supervisé est que vous n'avez pas accès à la fonction de perte que vous essayez d'optimiser. En particulier, vous ne pouvez pas la dériver. Nous ne connaissons pas le processus qui génère c, nous ne pouvons donc pas calculer le gradient de la fonction de perte et l'utiliser pour ajuster les paramètres de l'agent. Cela rend le problème un peu plus difficile, et vous devez utiliser un type d'algorithme différent. Enfin, l'apprentissage par renforcement est presque identique au cadre des bandits contextuels, sauf que maintenant l'environnement possède un état. Au lieu d'échantillonner l'état initial à partir de zéro à chaque étape temporelle à partir de la même distribution, l'état évolue au fil du temps. Vous avez une distribution de probabilité de transition appelée P où l'état x indice t est conditionné par l'état précédent et l'action précédente. Cela rend le problème plus difficile pour plusieurs raisons. D'une part, les entrées que vous recevez dépendent des actions que vous entreprenez. Cela rend plus difficile le développement d'un algorithme stable et fiable car, à mesure que l'agent commence à apprendre, il reçoit des entrées differentes. Cela peut conduire à un comportement incontrôlable. Cela signifie également que vous avez des effets différés car, comme le système possède un état, vous devrez peut-être entreprendre de nombreuses actions pour arriver dans le bon état. Vous ne pouvez pas vous contenter d'agir de manière gourmande à chaque étape ; vous devez anticiper efficacement. Pour résumer ces différences : premièrement, vous n'avez pas d'accès analytique complet à la fonction que vous essayez d'optimiser, vous devez donc l'interroger par l'interaction. Deuxièmement, vous interagissez avec un monde doté d'un état, ce qui signifie que l'entrée que vous recevez dépendra de vos actions précédentes. Si vous ne prenez que la première de ces différences entre l'apprentissage supervisé et l'apprentissage par renforcement, vous obtenez le cadre des bandits contextuels. C'est à mi-chemin.

Quand utiliser (ou ne pas utiliser) l'apprentissage par renforcement profond

John Schulman

Cette diapositive est destinée à ce dernier groupe. Si vous vous demandez si vous devriez appliquer l'apprentissage par renforcement à un problème, la réponse pourrait être non ; cela pourrait être excessif, en particulier l'apprentissage par renforcement profond. Il s'agit d'un ensemble de techniques assez récentes qui ne fonctionneront pas très bien telles quelles, et qui nécessitent l'ajustement de nombreux paramètres. Il peut être intéressant d'étudier d'autres méthodes d'abord. Si votre problème comporte un petit nombre de paramètres que vous essayez d'optimiser et que vous disposez d'un simulateur sur lequel vous pouvez faire de nombreuses expériences, les méthodes d'optimisation sans gradient seront probablement meilleures que l'apprentissage par renforcement, ou du moins plus faciles à mettre en œuvre. Ces méthodes vous donnent une fonction boîte noire où vous introduisez un vecteur de paramètres et elle vous donne une estimation bruitée du score, et ces algorithmes optimiseront simplement les paramètres. Il existe une variété de méthodes différentes pour l'optimisation sans gradient, mais elles sont plus faciles à comprendre que l'apprentissage par renforcement et elles fonctionnent directement. De nombreux problèmes peuvent en fait être considérés comme des problèmes de bandits contextuels où l'état du monde n'est pas si pertinent. Par exemple, dans la publicité, les gens considèrent la publicité comme un problème de bandit contextuel parce que vous décidez quelle publicité présenter à l'utilisateur, puis il clique dessus ou non. Mais l'utilisateur a en quelque sorte un état car si vous lui montrez une publicité terrible, il pourrait simplement télécharger AdBlock. Vos actions ont des répercussions, mais souvent vous pouvez simplement l'approximer comme un problème de bandit contextuel sans état. Il existe une meilleure compréhension théorique des problèmes de bandits contextuels et des méthodes qui offrent certaines garanties, donc dans ce cas, vous pourriez préférer utiliser ces algorithmes. Enfin, le domaine de la recherche opérationnelle utilise depuis un certain temps des algorithmes de base comme l'itération de politique et l'itération de valeur sur des problèmes réels. Ils ont des méthodes bien développées pour l'ingénierie des caractéristiques pour ces problèmes qui fonctionnent assez décemment. Ces techniques méritent également d'être envisagées au lieu d'essayer d'y appliquer un grand réseau de neurones.

Succès Récents

John Schulman

Maintenant que j'ai expliqué pourquoi ne pas utiliser l'apprentissage par renforcement profond, je vais parler de quelques succès récents dans ce domaine qui n'auraient probablement pas été possibles avec ces autres techniques. Il y a quelques années, Mnih et al. de DeepMind ont obtenu un résultat très influent en utilisant un algorithme de Q-learning profond pour jouer à des jeux Atari en utilisant des images d'écran comme entrée. C'est difficile car vous essayez de faire des choses différentes dans tous ces jeux et certains sont compliqués. Il est remarquable que le même algorithme puisse tous les résoudre. Depuis lors, d'autres ont également résolu ce domaine en utilisant des gradients de politique et un autre algorithme appelé DAGGER. Un autre grand résultat révolutionnaire a été de battre un joueur de niveau champion au Go, également par DeepMind, en utilisant une combinaison d'apprentissage supervisé à partir de parties d'experts, de gradients de politique pour affiner la politique apprise, de recherche arborescente Monte Carlo et de fonctions de valeur pour améliorer la recherche. C'était une combinaison de techniques d'apprentissage par renforcement. Certains de mes collègues de Berkeley ont obtenu de très bons résultats en apprenant en temps réel comment effectuer des tâches de manipulation à l'aide d'un algorithme appelé recherche de politique guidée avec le robot PR2. Certains de mes collègues et moi-même avons travaillé sur la locomotion robotique en utilisant des méthodes de gradient de politique. On travaille sur la locomotion depuis un certain temps et on a pu obtenir d'assez bons résultats en utilisant des méthodes hautement spécialisées et spécifiques au domaine, mais auparavant il n'y avait pas eu beaucoup de succès en utilisant des méthodes générales pour résoudre ce problème. Enfin, il y a eu récemment des résultats sur des jeux en 3D utilisant des gradients de politique. En fait, j'ai même entendu parler d'un concours il y a quelques jours avec cette nouvelle tâche ViZDoom, qui est assez intéressante. Vous devriez jeter un œil à ViZDoom. C'est tout pour la partie présentation générale. Maintenant, je vais commencer à entrer dans le formalisme et les détails techniques.

Formalisme : Processus de Décision de Markov (MDP)

John Schulman

L'objet de base dans le domaine de l'apprentissage par renforcement est le processus de décision de Markov (MDP). Le processus de décision de Markov est défini par les composants suivants : vous avez un espace d'états, qui sont tous les différents états du système ; l'espace d'actions, qui sont toutes les actions que l'agent peut entreprendre ; et vous avez cette distribution de probabilité qui détermine la probabilité de l'état suivant et de la récompense. r est la récompense, s-prime est l'état suivant, s et a sont les actions. C'est une distribution de probabilité conditionnelle. Parfois, on sépare cela en une fonction de récompense distincte, mais c'est fondamentalement une formulation équivalente. Parfois, d'autres objets sont définis. Nous considérerons une distribution d'état initial, qui est l'état dans lequel le monde commence. Le problème d'optimisation typique que vous voulez résoudre étant donné ce MDP est de maximiser la récompense cumulative espérée, bien qu'il existe diverses manières de définir cela plus précisément, sur lesquelles je reviendrai plus tard. Il existe différents cadres d'apprentissage par renforcement où l'on définit un problème d'optimisation légèrement différent. Celui qui nous intéressera le plus est appelé le cadre épisodique. Ici, l'expérience de l'agent est divisée en une série d'épisodes qui ont une durée finie. Dans chaque épisode, nous échantillonnons d'abord l'état initial du monde à partir d'une distribution de probabilité mu, puis l'agent continue d'agir jusqu'à ce que le monde se retrouve dans un certain état terminal. Pour donner un exemple de ce à quoi pourraient ressembler des états terminaux et un problème d'apprentissage par renforcement épisodique : un exemple est lorsque la fin est une bonne chose et que vous voulez terminer l'épisode le plus vite possible. Si nous imaginons un robot taxi qui doit arriver à destination le plus vite possible, l'épisode serait un trajet et il essaierait de terminer l'épisode le plus rapidement possible. Un autre exemple est un robot serveur qui a une plage de travail de durée fixe, mais le serveur doit faire du mieux possible pendant cette plage. Là, l'épisode a une durée fixe et le serveur doit maximiser les pourboires ou la satisfaction des clients. Ensuite, on pourrait imaginer un autre type de tâche où la fin est une mauvaise chose et où l'on veut que l'épisode dure le plus longtemps possible. On peut voir la vie comme un exemple de cela, mais on pourrait aussi imaginer avoir un robot marcheur dont on veut qu'il marche le plus loin possible avant de tomber. Dans ce cadre, il est assez facile de définir quel est l'objectif : nous voulons simplement maximiser l'espérance de la récompense totale par épisode. Le dernier objet que nous allons introduire ici est la politique. La politique est simplement la fonction que l'agent utilise pour choisir ses actions. Nous avons des politiques déterministes où l'action est juste une fonction de l'état, et nous avons également des politiques stochastiques où la politique est une distribution de probabilité conditionnelle. Ici, nous allons juste rendre le cadre du MDP épisodique un peu plus précis. D'abord, nous échantillonnons l'état initial à partir de cette distribution mu, puis nous échantillonnons la première action à partir de la politique, a-zéro, puis nous échantillonnons l'état suivant et la récompense à partir de la distribution de probabilité de transition, et ainsi de suite jusqu'à ce que nous atteignions un état terminal s indice T. La quantité qui nous intéresse est la somme de toutes ces récompenses, et nous voulons maximiser eta de pi, qui est défini comme la récompense totale espérée de la politique pi. Voici l'image qui illustre exactement la même chose. Vous pouvez la voir comme un modèle graphique. Dans la section sur le gradient de politique, en particulier, nous allons nous intéresser aux politiques paramétrées. Ici, nous avons un vecteur de paramètres thêta qui spécifie exactement ce qu'est la politique. Par exemple, la famille de politiques pourrait être juste un réseau de neurones où thêta spécifie tous les poids. Nous pourrions avoir une politique déterministe ou une politique stochastique. Si vous vous demandez concrètement à quoi ressemblerait une politique — comment utiliser un réseau de neurones pour représenter votre politique — c'est exactement la même chose que vous feriez s'il s'agissait d'un problème de classification ou de régression. s, l'état, est votre entrée et l'action est votre sortie. Si vous avez un espace d'actions discret, vous utiliseriez un réseau qui produit un vecteur de probabilités des différentes actions. C'est exactement comme un classifieur. Si vous avez un espace d'actions continu, votre réseau de neurones produirait la moyenne et la diagonale d'une matrice de covariance d'une distribution gaussienne. C'est exactement comme faire de la régression. Vous pouvez utiliser le même type d'architectures que celles que vous utiliseriez en apprentissage supervisé. C'est tout pour le formalisme des MDP.

Méthodes de Gradient de Politique

John Schulman

Je vais maintenant aborder les méthodes de gradient de politique, qui constituent une classe large et générale de méthodes d'apprentissage par renforcement tout à fait efficaces. Pour donner un bref aperçu, voici l'intuition de ce que les méthodes de gradient de politique vont faire. Le R majuscule désigne la somme des récompenses de tout l'épisode. Notre problème d'optimisation est que nous voulons maximiser l'espérance de la récompense totale étant donné notre politique paramétrée pi indice thêta. L'intuition du fonctionnement de notre algorithme est que nous allons collecter un ensemble de trajectoires, ce qui signifie exécuter un ensemble d'épisodes en utilisant notre politique, puis nous voulons rendre les bonnes trajectoires plus probables. Certaines trajectoires ont été chanceuses et ont été très bonnes, tandis que dans d'autres, l'agent a été malchanceux et elles ont été mauvaises. Les bonnes, où il y avait une récompense élevée, signifient que l'agent a probablement pris de bonnes actions là-bas, nous voulons donc augmenter la probabilité des actions de ces trajectoires. La version la plus basique des méthodes de gradient de politique essaie simplement de rendre les bonnes trajectoires plus probables sans essayer de déterminer quelles étaient les bonnes actions et quelles étaient les mauvaises. Des méthodes légèrement meilleures ou plus élaborées tentent de déterminer quelles actions étaient bonnes et lesquelles étaient mauvaises, puis elles essaient de rendre les bonnes actions plus probables. Enfin, il existe une autre classe de méthodes qui essaient réellement de pousser les actions vers de meilleures actions. Elles dérivent la fonction de perte par rapport aux actions et essaient de pousser les actions vers de meilleures actions. Nous allons principalement parler des types un et deux ici. Oh, y a-t-il une question ?

John Schulman

Bonne question. Nous maximisons sur la politique, en essayant de trouver la meilleure politique, mais ici la politique est supposée être paramétrée. Il y a un vecteur de paramètres thêta qui spécifie la politique, et maintenant nous voulons simplement maximiser par rapport à thêta. D'autres questions ? Il existe un concept très fondamental appelé l'estimateur de gradient de la fonction de score qui sous-tend les méthodes de gradient de politique. Pour introduire cela, nous n'allons pas parler du tout de politiques et d'apprentissage par renforcement ; nous allons simplement supposer que nous avons une espérance de f(x) où x est échantillonné à partir d'une certaine distribution de probabilité paramétrée. Nous voulons calculer le gradient de cette espérance par rapport à thêta. Il existe une formule générale pour le faire. La façon dont vous la dérivez est d'écrire l'espérance comme une intégrale, de déplacer certaines choses, d'échanger l'intégrale avec la dérivée, et de la transformer à nouveau en une espérance. Ce que vous obtenez à la fin est cette dernière ligne qui dit que vous prenez l'espérance de la valeur de la fonction multipliée par le gradient du log de la probabilité. C'est un estimateur sans biais du gradient, ce qui signifie que si nous obtenons suffisamment d'échantillons, il convergera vers la bonne valeur. La façon dont vous pouvez calculer cet estimateur — c'est-à-dire la façon dont vous pouvez obtenir une estimation bruitée du gradient de l'espérance — est d'obtenir un échantillon de cette distribution et de multiplier f(x) par le gradient du log de la probabilité. La seule condition pour pouvoir utiliser cet estimateur est que nous devons être capables de calculer analytiquement la densité de probabilité et de la dériver par rapport à thêta. Souvent, elle doit être dérivable. Il existe une autre façon de le dériver en utilisant l'échantillonnage préférentiel. Vous écrivez l'estimateur d'échantillonnage préférentiel pour l'espérance, vous échangez la dérivée avec l'espérance, et vous obtenez la même chose. Laissez-moi juste donner un peu d'intuition sur cet estimateur. f(x) mesure à quel point l'échantillon x est bon. g-chapeau ici est notre estimateur de gradient, c'est-à-dire ce que nous obtenons si nous prenons un échantillon x indice i et calculons notre estimateur. Si nous nous déplaçons dans la direction g-chapeau, cela augmente la log-probabilité de notre échantillon x indice i proportionnellement à sa qualité. Si nous avons obtenu une très bonne valeur de fonction, nous allons essayer d'augmenter beaucoup sa log-probabilité. Si c'était une mauvaise valeur de fonction, nous n'allons pas essayer de l'augmenter beaucoup. C'est une intuition assez simple. Ce que nous avons vraiment bien, c'est que c'est valable même si f(x) est discontinue, ou si f(x) est inconnue (ce qui signifie que vous ne pouvez pas la dériver, vous voyez juste les valeurs de la fonction), ou si l'espace d'échantillonnage est un ensemble discret. Cela signifie que c'est un moyen de pouvoir dériver à travers un système qui comporte des éléments non dérivables. Par exemple, dans la locomotion robotique, le contact entre le pied du robot et le sol provoque un changement discontinu dans la dynamique. Lorsque vous utilisez ce type d'estimateur de gradient avec des gradients de politique, vous pouvez optimiser ce système même s'il contient des éléments non dérivables.

Calcul du Gradient et Réduction de la Variance

John Schulman

Voici une autre petite image de ce qui se passe. Nous avons notre fonction f(x) dont nous essayons de maximiser l'espérance, et notre densité de probabilité p(x). Nous échantillonnons un tas de valeurs de notre densité de probabilité — les points bleus sur l'axe des x — et nous regardons les valeurs de la fonction. Nous essayons de pousser la distribution de probabilité pour que la probabilité augmente à ces échantillons proportionnellement à la valeur de la fonction. Sur le côté droit de la courbe, nous essayons de pousser cette valeur de probabilité très fort, et sur le côté gauche, nous la poussons doucement. La densité de probabilité va glisser vers la droite. C'est l'estimateur de gradient de la fonction de score. C'est une technique générale qui peut être utilisée dans divers problèmes d'apprentissage automatique. Maintenant, nous allons l'appliquer au cadre de l'apprentissage par renforcement et prendre notre variable aléatoire x comme étant une trajectoire entière. La trajectoire se compose de l'état, de l'action et de la récompense jusqu'à la fin de l'épisode. Maintenant, pour obtenir le gradient de la récompense espérée, tout ce que nous avons à faire est de calculer le gradient du log de la probabilité multiplié par la récompense totale. Cette probabilité de la trajectoire semble être une quantité très peu conviviale car il y a un long processus compliqué qui génère cette trajectoire avec de nombreuses étapes temporelles. Mais nous pouvons écrire ce qu'est cette densité de probabilité. C'est juste un produit de probabilités : nous avons notre distribution d'état initial mu de s-zéro, et à chaque étape temporelle nous échantillonnons l'action selon pi et échantillonnons l'état suivant et la récompense selon notre modèle de dynamique. Le logarithme transforme ce produit en une somme. Voici la partie intéressante : tout ce qui ne contient pas thêta disparaît. En apprentissage par renforcement, nous ne supposons pas connaître le modèle dynamique du système ; nous le découvrons simplement en échantillonnant des épisodes. Puisque ce produit se transforme en somme, tous les éléments que nous ne connaissons pas disparaissent simplement. Cela n'a pas d'importance. Ce que nous obtenons à la fin est une somme de log-probabilités d'actions. Notre formule pour le gradient de l'espérance est simplement l'espérance sur les trajectoires de la récompense totale de la trajectoire multipliée par le gradient de la somme de toutes les log-probabilités. L'interprétation de ceci est que nous prenons nos bonnes trajectoires et essayons d'augmenter leur probabilité proportionnellement à leur qualité. On peut voir cela comme étant similaire à l'apprentissage supervisé où l'on traite les bonnes trajectoires avec des récompenses élevées comme des exemples positifs. Nous les utilisons pour entraîner la politique sur les actions qui sont bonnes. Nous pouvons améliorer un peu cette formule. Ce n'était que l'estimateur sans biais le plus basique pour le gradient de politique. Si nous prenons cette expression à l'intérieur de l'espérance et prenons un échantillon, elle a la bonne moyenne. Si nous en obtenons suffisamment, nous allons obtenir le gradient de politique. Mais nous pouvons aussi écrire d'autres formules qui ont la même moyenne mais une variance plus faible. C'est en fait très important car celle de la diapositive précédente est vraiment mauvaise lorsqu'on a un grand nombre d'étapes temporelles car elle a une variance très élevée. D'abord, nous pouvons utiliser la structure temporelle du problème. Pour dériver ces formules suivantes, il suffit de quelques manipulations simples où l'on déplace les espérances. Je ne vais pas détailler tous les calculs, mais je vais dire quelles sont les formules. Nous pouvons répéter le même argument que la diapositive précédente pour dériver l'estimateur de gradient pour un seul terme de récompense. En sommant cela, nous obtenons une nouvelle formule où nous avons une somme au fil du temps du gradient du log de la probabilité de l'action à ce moment-là multipliée par la somme des récompenses futures. Dans la formule de la diapositive précédente, nous aurions eu toutes les récompenses dans cette somme, mais maintenant nous n'avons plus que les récompenses futures. C'est logique car une action ne peut pas affecter les récompenses précédentes. Pour savoir si l'action est bonne, nous ne devrions regarder que les récompenses futures. C'est une formule légèrement meilleure que celle de la diapositive précédente, ce qui signifie qu'elle a exactement la même moyenne mais que l'expression à l'intérieur de l'espérance a une variance plus faible. Nous pouvons réduire davantage la variance en introduisant une ligne de base. Nous pouvons prendre n'importe quelle fonction b qui prend un état et produit un nombre réel, et la soustraire de notre somme de récompenses futures. Nous n'avons pas du tout affecté la moyenne de l'estimateur. Pour n'importe quel choix de b, cela nous donne un estimateur sans biais. Si vous n'êtes pas familier avec la terminologie, ce que je dis, c'est que nous avons une espérance du côté droit de cette formule, et la quantité à l'intérieur de cette espérance est appelée l'estimateur. Si nous obtenons un tas d'échantillons, nous pouvons obtenir une estimation de la chose du côté gauche, qui est ce qui nous intéresse. Quand je dis que c'est un estimateur sans biais, cela signifie simplement que cette équation est correcte. Cela fonctionne pour n'importe quel choix de ligne de base, et un choix quasi optimal est d'utiliser le rendement espéré — l'espérance de la somme des récompenses futures. L'interprétation de cela est que si nous avons entrepris une action, nous ne voulons augmenter la probabilité de l'action que si c'était une bonne action. Comment savoir si c'était une bonne action ? Eh bien, la somme des récompenses après cette action aurait dû être meilleure que prévu. b de s est la somme espérée des récompenses et nous prenons simplement la différence entre la chose mesurée et la chose espérée. C'était un point essentiel pour la réduction de la variance. Je vais introduire une dernière technique de réduction de la variance. Toutes les trois sont vraiment importantes ; fondamentalement, rien ne fonctionnera, sauf peut-être pour des problèmes à très petite échelle, à moins de faire ces choses. La dernière technique de réduction de la variance consiste à utiliser des remises (discounts). Ce que nous allons faire ici ressemble à une astuce, mais il y a une explication : au lieu de prendre la somme des récompenses, nous allons prendre une somme actualisée des récompenses, ce qui signifie que nous ajoutons un facteur exponentiel gamma. Lorsque nous multiplions le gradient du log de la probabilité par une récompense future, nous le multiplions par une quantité qui décroît avec le temps. On utilise typiquement gamma égal à 0,99 ou 0,95. Si vous utilisiez 0,99, cela signifie qu'après 100 étapes temporelles, vous allez réduire la récompense d'un facteur de 1 sur e. Vous faites décroître exponentiellement l'effet des récompenses futures. L'intuition est qu'une action ne devrait pas affecter les récompenses très loin dans le futur. L'hypothèse est que le système n'a pas de mémoire à très long terme et que les effets ne sont pas si différés. Vous pouvez simplement ignorer l'interaction entre une action et une récompense très lointaine. Au lieu de prendre la ligne de base comme étant l'espérance de la somme des récompenses futures, nous voulons faire une somme actualisée. Maintenant, nous mesurons si l'action était meilleure que prévu selon cette somme actualisée. Il existe une classe de formules plus générales qui ressemblent à celle que je viens d'écrire. Celle d'en haut est plutôt bonne, presque aussi bonne que tout ce que vous ferez à un petit facteur constant près. Mais il existe une classe de formules plus générales qui ressemblent au gradient du log de la probabilité multiplié par une certaine quantité A-chapeau, que nous appelons l'estimation de l'avantage. Il s'agit en général d'une estimation de la mesure dans laquelle cette action était meilleure que l'action moyenne entreprise par la politique. De manière informelle, cela signifie simplement dans quelle mesure l'action était meilleure que prévu cette formule a beaucoup de sens car nous voulons augmenter la probabilité des bonnes actions et diminuer celle des mauvaises.

Algorithmes et Optimisation (TRPO)

John Schulman

Je viens de vous dire qu'il existe cet estimateur de gradient qui vous donne une estimation bruitée du gradient de politique. Comment transformer cela concrètement en un algorithme ? Voici à quoi ressemble l'algorithme. C'est à peu près ce à quoi on pourrait s'attendre. Vous initialisez les paramètres de votre politique et votre fonction de ligne de base. À chaque itération, vous exécutez la politique actuelle pour obtenir un ensemble de trajectoires complètes. À chaque étape temporelle de chaque trajectoire, vous calculez le rendement — c'est-à-dire la somme des récompenses actualisées suivant cette étape temporelle — et l'estimation de l'avantage, qui est la somme des récompenses actualisées moins la ligne de base. Ensuite, vous réajustez la ligne de base en essayant de rendre la fonction de ligne de base égale aux rendements. Ensuite, vous mettez à jour la politique à l'aide d'un estimateur de gradient de politique. Vous faites simplement de la SGD tout en mettant à jour la ligne de base au fur et à mesure. C'est l'algorithme de gradient de politique classique (vanilla). Cela a été utilisé pour obtenir d'assez bons résultats, mais il existe plusieurs directions différentes pour l'améliorer. L'un des problèmes que l'on rencontre concerne la taille des pas. En apprentissage supervisé, la taille des pas n'est pas un si gros problème car si vous faites un pas trop grand, vous le corrigerez lors de la prochaine mise à jour. Votre classifieur actuel n'affecte pas les entrées que vous recevez. Même si votre réseau s'agite pendant un moment parce que vous faites un pas trop grand, cela ne causera aucun problème. Mais en apprentissage par renforcement, si vous faites un pas trop grand, vous risquez de détruire votre politique. Même si vous ne modifiez pas tant que cela le réseau, vous pourriez simplement trop modifier son comportement. Maintenant, il va faire quelque chose de totalement différent et visiter une partie totalement différente de l'espace d'états. Comme le système possède un état et que votre distribution d'états dépend de votre politique, cela pose un problème vraiment différent. Après avoir fait ce pas, le prochain lot de données que vous allez obtenir aura été collecté par la mauvaise politique, et maintenant vous ne vous en remettrez jamais parce que vous avez tout oublié. Une façon de corriger cela est d'essayer d'empêcher la politique de faire un pas trop grand. Vous pouvez examiner la divergence KL entre l'ancienne politique et la nouvelle politique avant et après la mise à jour et vous assurer que les distributions ne sont pas si différentes. C'est une chose évidente à faire. Mes collègues et moi avons développé un algorithme appelé Optimisation de politique par région de confiance (TRPO), qui examine les distributions d'actions et essaie de s'assurer que la divergence KL n'est pas trop grande. C'est très proche des précédentes méthodes de gradient de politique naturel, qui font quelque chose de similaire, mais généralement ce n'est pas configuré comme une contrainte stricte sur la divergence KL. Une autre extension des méthodes de gradient de politique consiste à utiliser des fonctions de valeur pour réduire davantage la variance. Au lieu de les utiliser simplement comme ligne de base, vous pouvez également les utiliser de manière plus agressive et introduire un certain biais. On les appelle parfois méthodes acteur-critique. Il existe également une autre approche où, au lieu d'essayer simplement d'augmenter la probabilité des bonnes actions, on dérive réellement sa perte par rapport aux actions. C'est comme l'astuce de reparatrétrisation utilisée pour la modélisation de densité en apprentissage non supervisé. Ici, vous essayez de pousser les actions vers de meilleures actions. Dans ces deux points, vous réduisez potentiellement beaucoup votre variance, mais au prix d'une augmentation du biais. Cela rend en fait les algorithmes un peu plus difficiles à comprendre et à faire fonctionner. Avec une variance élevée, si vous augmentez simplement la quantité de données, vous pouvez toujours faire baisser votre variance. Mais avec le biais, quelle que soit la quantité de données que vous obtenez, vous n'allez pas vous en débarrasser. Si votre gradient pointe dans la mauvaise direction, vous n'apprendrez rien. C'est tout pour la section sur le gradient de politique. Je voulais montrer une courte vidéo de certains travaux que mes collègues et moi avons réalisés sur l'apprentissage de contrôleurs de locomotion avec des méthodes de gradient de politique, ce que j'ai trouvé assez passionnant.

Démonstrations de Locomotion Robotique

John Schulman

Ici, nous avons un robot humanoïde simulé dans un simulator physique réaliste appelé MuJoCo. Il possède une politique de réseau de neurones qui prend en entrée les angles des articulations et d'autres informations cinématiques comme les vitesses des articulations et les positions des segments du robot. C'est ce qu'est l'entrée ; c'est pratiquement l'état brut du robot, sans ingénierie de caractéristiques astucieuse. La sortie sera les couples articulaires, qui sont réglés 100 fois par seconde. Nous faisons simplement une correspondance entre les angles des articulations et les couples articulaires. Nous définissons une fonction de récompense pour avancer le plus vite possible. L'épisode se termine lorsque sa tête descend en dessous d'une certaine hauteur, ce qui signifie qu'il est tombé. Il y a eu un peu d'ajustement pour la fonction de récompense, mais pas trop. Vous pouvez voir qu'au début, il tombe simplement vers l'avant de nombreuses fois, puis lentement il commence à développer une marche à peu près correcte. Finalement, il y parvient assez bien. À la toute fin, il pourrait continuer à courir indéfiniment. C'était en fait stable au sens fort, ce qui signifie que je pouvais le laisser pendant 15 minutes et il ne tombait pas. Voici un autre modèle de robot que nous avons créé sans trop réfléchir. Nous avons décidé de mettre un tas de jambes sur cette chose. Nous ne savons même pas comment cette chose est censée marcher, nous la donnons simplement au même algorithme et il trouve une manière folle de marcher. C'est l'avantage de l'apprentissage par renforcement : vous n'avez même pas besoin de savoir ce que vous voulez qu'il fasse. Je pense que la physique est un peu irréaliste ici. Ici, nous utilisons un modèle similaire mais nous lui donnons juste une récompense pour avoir sa tête à une certaine hauteur. Il y a une récompense qui lui dit de lever la tête aussi haut que possible, et puis il trouve comment se relever du sol. Ma batterie est faible ; est-ce que quelqu'un a un chargeur que je pourrais brancher ? Merci beaucoup, vous me sauvez la vie. Des questions sur les gradients de politique avant de passer à la partie suivante ?

?

Le système est-il invariant dans le temps ?

John Schulman

La question était : le système est-il invariant dans le temps ? Oui, on suppose qu'il est stationnaire et qu'il ne change pas d'un épisode à l'autre. Dans certains problèmes du monde réel, cela pourrait ne pas être le cas, c'est donc un cadre de problème intéressant où l'on a un environnement non stationnaire.

?

Comment calculez-vous réellement la ligne de base ? Devez-vous connaître la dynamique du système ou seulement les observations ?

John Schulman

La question était : pour la ligne de base, pour apprendre une bonne ligne de base, faut-il connaître la dynamique du système ? Non, on peut l'apprendre simplement en faisant de la régression. On estime simplement les rendements empiriques, puis on fait une régression pour ajuster une fonction à cela.

?

Lorsque vous introduisez le facteur gamma où vous retardez la récompense pour une action future, n'est-ce pas contre-intuitif pour ce type qui essaie de se lever ? Cela peut prendre beaucoup de temps car il n'y a pas de limite de temps. Par rapport aux problèmes, cela peut en fait ralentir considérablement vos actions de contrôle.

John Schulman

La question est : il y a un facteur d'actualisation qui devrait amener la politique à ignorer tout effet retardé de plus de 100 étapes temporelles. Comment se fait-il que ce type apprenne quand même à se lever alors que cela pourrait prendre plus de 100 étapes temporelles ? Vous avez raison. En fait, ces méthodes ne sont pas garanties de bien fonctionner si vous avez plus de 100 étapes temporelles. Parfois, elles fonctionnent quand même, mais il n'y a aucune garantie. Je pense qu'il manque quelque chose de fondamental dans la façon de gérer les échelles de temps très longues. Les gens ont récemment réfléchi à l'apprentissage par renforcement hiérarchique où l'on a différents niveaux de détails et cela permet de planifier sur des horizons beaucoup plus longs. C'est actuellement un domaine de recherche actif. Je dirais qu'aucune de ces méthodes ne va donner de résultat raisonnable si vous avez plus de 1 sur 1 moins gamma étapes temporelles entre l'action et la récompense.

?

Donc, si vous introduisez une anomalie dans l'environnement, peut-il toujours la gérer ? Par exemple, le terrain.

John Schulman

Dans ce genre de tâche, si vous ne l'avez pas entraîné à gérer le terrain, il échouerait probablement. En fait, ces politiques sont très robustes car on les entraîne avec une politique stochastique. Il y a beaucoup de bruit généré par la politique elle-même. En pratique, elle est tout à fait capable de gérer le bruit introduit par la politique, et j'ai constaté que si l'on modifie un peu les paramètres de dynamique, cela peut généralement continuer à fonctionner. Mais il n'y a aucune garantie qu'elle fera quoi que ce soit si vous lui donnez quelque chose pour lequel vous ne l'avez pas entraînée. On pourrait probablement l'entraîner avec du terrain. Je n'avais pas de terrain, donc je n'ai pas essayé, mais ce serait bien d'essayer. Je vais passer à la partie suivante. N'hésitez pas à me retrouver après si vous avez d'autres questions.

Fonctions Q et Équations de Bellman

John Schulman

Je vais parler d'un type différent d'algorithme d'apprentissage par renforcement. Les méthodes précédentes se distinguent par le fait qu'elles représentent explicitement une politique et tentent de l'optimiser par rapport aux paramètres de la politique. L'avantage des méthodes de gradient de politique est que vous optimisez la chose qui vous intéresse avec la descente de gradient. Cela permet de mieux comprendre ce qui se passe car si vous obtenez une estimation de gradient correcte et faites des pas suffisamment petits, vous devriez vous améliorer. Bien sûr, on peut toujours rester bloqué dans un minimum local, mais au moins on peut utiliser notre compréhension de l'optimisation pour comprendre ce qui se passe. Cette classe de méthodes suivante est différente car elles n'optimisent pas directement la politique ; elles apprennent une fonction Q, qui mesure la qualité des paires état-action. Elle mesure simplement à quel point les actions sont bonnes. Ces méthodes sont en fait capables de résoudre exactement les MDP de manière efficace dans le cadre où vous avez un nombre fini d'états et d'actions. Ce sont les méthodes privilégiées pour les résoudre exactement dans ces cadres. On peut aussi les appliquer avec des états et des actions continus en utilisant des approximateurs de fonctions expressifs comme les réseaux de neurones, mais il est un peu plus difficile de comprendre quand elles vont fonctionner et quand elles ne vont pas fonctionner. Je vais définir les quantités pertinentes ici. La fonction Q est définie comme la somme espérée des récompenses lorsque nous conditionnons sur le premier état et la première action. La fonction Q est la somme espérée actualisée des récompenses en agissant sous la politique pi. Par convention, je commence par l'étape temporelle zéro. Comme nous supposons que le système est stationnaire, cela devrait être exactement la même chose quelle que soit l'étape temporelle de départ. Je vais toujours utiliser le temps 0, 1, 2, 3 juste pour faciliter la notation. La fonction Q vous indique simplement la qualité de cette paire état-action sous votre politique actuelle. La fonction de valeur d'état, généralement appelée V, se conditionne simplement sur l'état ; elle vous indique la récompense espérée à cet état. Enfin, la fonction d'avantage est la différence entre la fonction Q et la fonction de valeur d'état, c'est-à-dire dans quelle mesure cette action est meilleure que ce que la politique aurait fait. Nous n'allons pas parler des fonctions d'avantage dans cette section, mais cela correspond à la notion d'estimation de l'avantage mentionnée précédemment. Nous allons envisager des méthodes qui stockent et mettent à jour explicitement la fonction Q au lieu de la politique et les mettent à jour en utilisant ce qu'on appelle les équations de Bellman. Une équation de Bellman en général est une équation de cohérence qui doit être satisfaite par une fonction de valeur. J'écris l'équation de Bellman pour Q pi ; elle dit que la somme espérée des récompenses devrait être la première récompense plus la somme espérée des récompenses après la première étape temporelle. Elle dit quelque chose d'assez simple. R0 est la première récompense et V pi de S1 additionne toutes les récompenses après l'étape temporelle zéro. Dans la deuxième équation, nous écrivons cette relation impliquant uniquement la fonction Q. Nous avons une équation de cohérence que la fonction Q doit satisfaire. Nous pouvons généraliser légèrement cela pour utiliser k étapes temporelles au lieu d'une seule. Nous pouvons développer l'espérance pour écrire k récompenses explicitement, puis terminer par la fonction de valeur à la fin, qui rend compte de toutes les récompenses après cela. Je vais introduire un concept très important appelé mise à jour de Bellman (Bellman backup). Nous avons cette équation que la fonction de valeur Q pi doit satisfaire, mais supposons que nous ne connaissions pas Q pi. Supposons que nous ayons une autre fonction Q. Nous définissons cet opérateur de mise à jour de Bellman qui fait correspondre une fonction Q à une nouvelle fonction Q, définie en prenant le côté droit de l'équation de Bellman et en y insérant notre fonction Q au lieu de Q pi. Q pi est un point fixe de cet opérateur, ce qui signifie que si nous appliquons l'opérateur de mise à jour, nous obtenons la même chose en retour. Heureusement, si nous continuons à appliquer cet opérateur de mise à jour de manière répétée à n'importe quelle fonction Q initiale arbitraire, la série convergera vers Q pi. De cette façon, vous pouvez utiliser un algorithme itératif pour estimer Q pi en prenant n'importe quelle fonction Q initiale et en appliquant de manière répétée cet opérateur de mise à jour. Maintenant, il existe un autre type de fonction Q appelé Q-star. La fonction Q précédente Q pi vous indiquait la fonction de valeur sous une politique fixe pi particulière. Q-star va impliquer la politique optimale à la place. Q-star est définie comme la fonction Q de la politique optimale. Il se trouve qu'elle est également le maximum ponctuel sur toutes les politiques de la fonction Q à chaque paire état-action. La politique optimale est déterministe et elle devrait satisfaire cette équation qu'elle prend l'arg max de la fonction Q optimale. Rappelez-vous que la fonction Q vous indique votre rendement espéré si vous entreprenez l'action donnée. Évidemment, la politique optimale devrait entreprendre l'action qui a le meilleur rendement espéré. Maintenant que nous connaissons cette propriété de la politique optimale, nous pouvons réécrire l'équation de Bellman. Cette première équation est juste l'équation de Bellman pour une politique pi donnée. Maintenant, nous pouvons prendre cette espérance sur les actions et la remplacer par ce que la politique optimale va faire, c'est-à-dire prendre l'arg max de la fonction Q optimale. Il y a une erreur sur ma diapositive ; il devrait y avoir écrit Q-star sur le côté droit. Nous avons maintenant une équation de Bellman que la politique optimale doit satisfaire. Nous pouvons faire la même chose avec un opérateur de mise à jour. Nous prenons cette équation de Bellman et insérons une fonction Q arbitraire sur le côté droit au lieu de Q-star. Q-star est un point fixe de cet opérateur de Bellman. Encore une fois, si nous appliquons cet opérateur de Bellman de manière répétée à une fonction Q initiale arbitraire, il converge vers Q-star. Le théorème du point fixe de Banach peut être utilisé pour le prouver dans les deux cas.

Algorithmes de Programmation Dynamique et Q-Learning

John Schulman

Sur la base de ces idées, il existe deux algorithmes classiques pour résoudre exactement les MDP. On les appelle parfois algorithmes de programmation dynamique car ils sont liés au type de programmation dynamique utilisé pour résoudre les problèmes de recherche. L'un est appelé itération de valeur, où vous initialisez votre fonction Q arbitrairement et effectuez de manière répétée des mises à jour de Bellman jusqu'à ce qu'elle converge. Le second est appelé itération de politique. Vous initialisez votre politique arbitrairement, puis à chaque étape, vous calculez soit exactement, soit approximativement la fonction Q de cette politique. Ensuite, vous mettez à jour votre politique pour qu'elle devienne la politique gourmande (greedy) pour la fonction Q que vous venez de calculer. Cela signifie que votre nouvelle politique prend simplement l'arg max de la fonction Q — elle entreprend l'action qui est la meilleure selon cette fonction Q. Une façon de calculer Q pi est de la calculer exactement car il se trouve que l'équation de Bellman pour Q pi est un système linéaire d'équations. Souvent, vous pouvez simplement les résoudre exactement. Plus couramment, si vous avez un problème à grande échelle, vous pourriez ne pas être en mesure de résoudre ce système, donc ce que les gens font souvent est un nombre fini de mises à jour de Bellman, ce qui vous donne quelque chose d'approximativement égal à Q pi. Je viens de vous présenter des algorithmes que vous pouvez implémenter si vous avez un accès complet au MDP, par exemple si vous connaissez tout le tableau des probabilités. Mais en apprentissage par renforcement, on suppose que vous ne connaissez pas la fonction de récompense ni les probabilités de transition. Toutes ces choses doivent être estimées à partir des données, ou vous ne pouvez accéder au système que par l'interaction. Il s'avère que ces algorithmes peuvent également être mis en œuvre si vous n'accédez au système que par des interactions, ce qui est remarquable. En rappelant nos formules de mise à jour pour Q pi et Q star : dans les deux cas, nous avons une certaine quantité à l'intérieur d'une espérance. Nous pouvons calculer un estimateur sans biais de cette quantité à l'intérieur de l'espérance en utilisant un seul échantillon. Si nous avons échantillonné des données de notre système en utilisant n'importe quelle ancienne politique, nous pouvons obtenir une estimation sans biais de la quantité à l'intérieur de ces espérances. Fondamentalement, nous pouvons faire une version approximative de cette mise à jour de Bellman qui est sans biais. Même avec ce bruit, il peut être prouvé que si vous choisissez la taille de vos pas avec le bon calendrier, vous convergerez toujours vers Q pi ou Q star selon l'algorithme que vous implémentez. C'est l'idée fondamentale. Maintenant, vous pouvez concevoir des algorithmes qui peuvent être appliqués dans le cadre de l'apprentissage par renforcement où vous accédez au système par échantillonnage et vous pouvez également commencer à introduire l'approximation de fonctions ici. Au lieu de fixer les valeurs de la sortie du réseau de neurones, le mieux que nous puissions faire est d'essayer d'encourager le réseau de neurones à avoir certaines valeurs de sortie. Nous faisons cette mise à jour en configurant un problème de moindres carrés. Nous écrivons cet objectif quadratique qui dit que la fonction Q doit être approximativement égale à la valeur mise à jour, puis nous la minimisons avec la SGD. Une version de cet algorithme, l'itération Q ajustée par neurones, fonctionne exactement comme on pourrait s'y attendre. Vous échantillonnez des trajectoires à l'aide de votre politique actuelle, puis vous résolvez le problème des moindres carrés où vous essayez de minimiser cette erreur quadratique qui est basée sur la mise à jour pour Q-star. Une chose que je n'ai pas mentionnée est ce que vous utilisez réellement comme politique. Si vous avez une fonction Q, vous pouvez la transformer en politique en choisissant l'action qui a la valeur Q la plus élevée. C'est ce qu'on fait typiquement. Comme la fonction Q mesure la qualité de toutes vos actions, vous pouvez transformer cela en politique en prenant votre meilleure action, ou en prenant des actions où la probabilité est proportionnelle à la qualité. C'est ce qu'on appelle l'exploration de Boltzmann, alors que si vous utilisez simplement l'arg max, c'est ce qu'on appelle la politique gourmande. Avec ces algorithmes de Q-learning, vous n'avez pas besoin d'exécuter la politique gourmande pour que l'apprentissage fonctionne. Vous avez en fait une certaine liberté dans le choix de la politique que vous exécutez. Une propriété très intéressante de ces algorithmes est que vous pouvez utiliser une technique d'exploration où votre politique essaie activement d'atteindre de nouveaux états ou de faire quelque chose de nouveau, tout en apprenant les valeurs correctes pour Q-star ou Q-pi. L'itération Q ajustée par neurones est une manière basique de procéder. Un algorithme plus récent qui a attiré beaucoup d'attention est l'algorithme DQN de DeepMind, qui est essentiellement une version en ligne avec quelques ajustements utiles. Quand on regarde les deux astuces, elles ont beaucoup de sens si l'on pense à ce que fait l'itération de valeur. Une technique consiste à utiliser un pool de relecture (replay pool) qui est un historique roulant de vos données passées. Cela garantit que vous disposez d'un échantillon représentatif de données pour ajuster votre fonction Q. La deuxième idée est d'utiliser un réseau cible. Au lieu d'utiliser votre fonction Q actuelle et d'effectuer simplement des mises à jour de Bellman sur celle-ci, vous avez une version décalée de votre fonction Q. L'utilisation du réseau cible est la chose naturelle à faire si vous essayez d'implémenter l'itération de valeur de manière en ligne. De nombreuses extensions ont été proposées depuis lors. L'algorithme DQN utilise la mise à jour B pour Q-star. Rappelez-vous que j'ai également introduit l'autre mise à jour B pi pour Q-pi. Il existe un autre algorithme classique appelé SARSA, qui est essentiellement une version en ligne de la mise à jour B pi. C'est une version en ligne de l'itération de politique. On a constaté qu'il fonctionnait aussi bien ou mieux que DQN dans certains cadres, mais pas tous. Je pense que le débat est toujours ouvert sur la comparaison exacte entre ces méthodes. Il vaut la peine d'envisager à la fois l'itération de politique et l'itération de valeur ainsi que toutes les différentes versions en ligne, car on ne sait pas encore exactement comment elles se comparent toutes dans le cadre de l'approximation de fonctions.

Synthèse et Conclusion

John Schulman

C'est l'aperçu de toutes les parties techniques. Maintenant, j'ai juste quelques diapositives de conclusion pour résumer l'état actuel des choses. J'ai présenté deux types d'algorithmes : les algorithmes de gradient de politique, qui représentent explicitement une politique et l'optimisent ; et les algorithmes d'apprentissage de fonction Q, qui représentent explicitement une fonction Q et l'utilisent pour représenter implicitement une politique. Les méthodes de gradient de politique ont connu des succès avec différentes variantes. Vous avez les méthodes de gradient de politique classiques et la récente méthode A3C, qui est une implémentation asynchrone qui obtient de très bons résultats. Un autre type de méthode sont les méthodes de gradient de politique naturel et les méthodes de région de confiance. La vidéo que j'ai montrée a été obtenue en utilisant l'optimisation de politique par région de confiance. Ces méthodes de région de confiance et de gradient de politique naturel sont plus économes en échantillons que les méthodes classiques car vous effectuez plus d'une mise à jour de gradient avec chaque petit morceau de données que vous collectez. Avec le gradient de politique classique, vous calculez une estimation de gradient et vous la jetez. Avec le gradient de politique naturel, vous résolvez un petit problème d'optimisation avec, vous en tirez donc plus de profit. Dans le monde de la fonction Q, nous avons l'algorithme DQN et certains de ses proches. Ceux-ci sont des descendants de l'itération de valeur où vous approximez la mise à jour de Bellman. SARSA est également lié à l'itération de politique. Ils traitent différentes équations de Bellman, il est donc intéressant que les deux types de méthodes fonctionnent et aient des comportements assez similaires. Ce sont des preuves anecdotiques, mais je pense que c'est le consensus actuel. Les méthodes de fonction Q sont plus économes en échantillons quand elles fonctionnent, mais elles ne fonctionnent pas de manière aussi générale que les méthodes de gradient de politique, et il est plus difficile de comprendre ce qui se passe quand elles ne fonctionnent pas. C'est logique car, dans les méthodes de gradient de politique, vous optimisez exactement ce qui vous intéresse avec la descente de gradient. Avec les méthodes de fonction Q, vous faites quelque chose d'indirect en apprenant une fonction Q et en espérant qu'elle vous donne une bonne politique. Je voudrais également souligner qu'il existe des facteurs de confusion, il est donc difficile de tirer une conclusion définitive à ce stade car les gens utilisent des horizons temporels différents. Ils effectuent des anticipations à une étape sur les fonctions Q et des anticipations à plusieurs étapes sur les gradients de politique, de sorte qu'on ne sait pas si les différences proviennent de l'utilisation d'horizons temporels différents ou de la façon dont les algorithmes fonctionnent. Pour résumer, voici certains de nos algorithmes fondamentaux d'apprentissage par renforcement sans modèle. Il manque un mot dans la première colonne, qui devrait selon moi dire fiabilité et robustesse. Cela signifie simplement : cela fonctionnera-t-il sur de nouveaux problèmes sans ajustement de paramètres, ou cela fonctionnera-t-il ou non mystérieusement ? Je dirais qu'il y a encore de la marge pour s'améliorer. Il pourrait y avoir des améliorations dans les méthodes de base car il existe des propriétés intéressantes des méthodes de fonction Q que nous n'avons pas dans les méthodes de gradient de politique, comme le fait de pouvoir explorer facilement avec une politique différente de celle pour laquelle vous apprenez la fonction Q. On ne peut pas faire cela très facilement avec les méthodes de gradient de politique, bien qu'elles semblent plus susceptibles de fonctionner directement et que ce qui s'y passe soit bien compris. Je ne sais pas s'il est possible d'obtenir le meilleur des deux mondes, mais c'est l'espoir. C'est tout pour ma présentation. Merci. Des questions ?

Session de Questions-Réponses

?

Dans l'apprentissage par renforcement basé sur un modèle, quelles pistes de recherche trouvez-vous les plus intéressantes actuellement ?

John Schulman

La question était : dans l'apprentissage par renforcement basé sur un modèle, quelles pistes de recherche est-ce que je trouve les plus intéressantes ? Je pense que le travail de mes collègues sur la recherche de politique guidée est très intéressant. Je dirais qu'est une sorte d'apprentissage par renforcement basé sur un modèle. J'aime aussi les méthodes qui utilisent le modèle pour un apprentissage plus rapide, comme pour la réduction de la variance. Il y a un article intitulé Gradients de Valeur Stochastiques que j'aime beaucoup. Je pense que c'est un domaine très ouvert. Je ne pense pas qu'il y ait eu beaucoup de résultats vraiment convaincants où l'on est capable d'apprendre avec une bien meilleure efficacité d'échantillonnage en utilisant un modèle. Cela devrait être possible, mais je ne pense pas que cela ait encore été démontré. Peut-être que dans les deux prochaines années, nous verrons cela arriver.

?

Bonjour ? Salut. Merci pour la présentation. Est-il vrai que la plupart de ces problèmes nécessitent une sorte de monde simulé pour y mener des expériences ?

John Schulman

Vous demandez : est-ce que cela fonctionne dans le monde réel ?

?

Oui.

John Schulman

Cela fonctionne si vous avez beaucoup de patience et que vous êtes prêt à exécuter cette chose pendant un certain temps. Les résultats de locomotion que j'ai montrés représentent environ deux semaines de temps réel. Ce n'est en fait pas si mal, surtout quand on considère que les tout-petits mettent un certain temps à apprendre à marcher correctement même si l'évolution a déjà intégré beaucoup d'informations. Je dirais que cela peut être exécuté dans le monde réel. Certains de mes collègues à Berkeley exécutent des algorithmes d'apprentissage par renforcement ordinaires dans le monde réel. C'est très courageux, mais j'espère voir de bons résultats de cela bientôt. Merci.

?

Salut. Merci pour votre présentation. Par ici, de l'autre côté. Je me demandais quelle était votre intuition sur la surface de perte de ces problèmes d'optimisation d'apprentissage par renforcement profond et comment elle évolue au fur et à mesure que la politique apprend, en particulier dans le cas du gradient de politique.

John Schulman

La situation est un peu différente en apprentissage par renforcement par rapport à l'apprentissage supervisé. En apprentissage par renforcement, vous avez des minima locaux dans l'espace des politiques. Disons que vous voulez que votre robot marche — je vais revenir à l'exemple de la locomotion parce que j'y ai passé beaucoup de temps. Il y a un minimum local où il reste simplement debout et ne prend pas la peine de marcher parce qu'il y a trop de pénalité pour une chute. Il y a un autre minimum local où il plonge simplement en avant parce qu'il obtient une petite récompense avant de tomber. La partie difficile du problème d'optimisation est en fait due aux différents espaces de comportements et n'a rien à voir avec le réseau de neurones. J'ai aussi constaté que l'architecture du réseau de neurones que vous utilisez importe étonnamment peu, car je pense que la majeure partie de la difficulté et de l'étrangeté du problème vient de ce à quoi ressemble l'espace des comportements plutôt que du paysage d'optimisation numérique réel. Super. Merci.

?

Il y a de nombreux problèmes où la récompense n'est observée qu'à la fin de la tâche, dans l'état terminal final, et vous ne voyez pas de récompenses dans les états intermédiaires. À quel point ces problèmes deviennent-ils plus difficiles pour l'apprentissage par renforcement profond selon votre expérience ? Merci.

John Schulman

Si vous n'obtenez pas la récompense avant la fin, il est probablement plus difficile d'apprendre. Je n'ai rien de précis à dire à ce sujet, mais je pense que ce sera plus difficile si vos récompenses sont plus éloignées.

?

Pour le dernier exemple consistant à avoir la tête au-dessus d'une certaine hauteur, serait-ce plus difficile si vous n'obteniez qu'un plus-un lorsque vous étiez au-dessus de cette hauteur et rien en dessous, par rapport à quelque chose de partiel à mesure que vous levez la tête plus haut ?

John Schulman

Nous avons conçu une récompense comme la distance par rapport à la hauteur au carré, ce qui a facilité le problème. Le problème aurait été beaucoup plus difficile si vous aviez obtenu une récompense de zéro jusqu'à ce que vous ayez la tête au-dessus de la hauteur. Ce serait un problème d'exploration — devoir explorer tous les différents états avant de comprendre où vous allez obtenir une récompense. Merci.

?

J'ai une question sur la façon dont vous choisissez de quantifier votre espace-temps, car dans votre exemple de locomotion, vous avez clairement un système continu.

John Schulman

C'est en fait très important la façon dont on discrétise le temps parce que l'algorithme se soucie de ce qu'est l'étape temporelle. Vous avez des facteurs d'actualisation et vous échantillonnez également une action différente à chaque étape temporelle. Si vous choisissez une étape temporelle trop petite, les récompenses seront retardées de plus d'étapes, ce qui rend l'attribution du mérite plus difficile, et votre exploration ressemblera davantage à une marche aléatoire car vous changez d'avis très fréquemment. L'étape temporelle est assez importante et je dirais que c'est un défaut des méthodes actuelles. Merci.

?

Remercions encore John. Merci. Nous allons faire une courte pause et nous réunir à nouveau dans 15 minutes.