Apprentissage par renforcement avec des agents Tensorflow [2022]

Publié: 2021-01-01

L'apprentissage par renforcement a gagné en popularité avec le succès relativement récent de la méthode AlphaGo de DeepMind pour battre le champion du monde de go. La méthode AlphaGo a été éduquée en partie par l'apprentissage par renforcement sur les réseaux de neurones profonds.

Ce style d'apprentissage est une caractéristique distincte de l'apprentissage automatique par rapport aux paradigmes classiques supervisés et non supervisés. Dans l'apprentissage par renforcement, le réseau répond aux données environnementales (appelées l'état) à l'aide de réseaux de neurones profonds et influence le comportement d'un agent pour tenter d'optimiser une récompense.

Cette technique aide un réseau à apprendre à faire du sport, comme Atari ou d'autres jeux vidéo, ou un autre défi qui peut être réécrit comme une forme de jeu. Dans ce didacticiel, un modèle courant d'apprentissage par renforcement, je présenterai les grands principes de l'apprentissage Q et je montrerai comment intégrer l'apprentissage Q approfondi dans TensorFlow.

Table des matières

Introduction à l'apprentissage par renforcement

Comme mentionné ci-dessus, l'apprentissage par renforcement consiste en quelques entités ou principes de base. Ce sont : un environnement qui crée une condition et une récompense, et une entité qui exécute des actions dans l'environnement donné. Dans le diagramme ci-dessous, vous voyez cette interaction :

La tâche de l'agent dans un tel contexte est d'analyser l'état et les informations d'incitation qu'il reçoit et de choisir un comportement qui maximise l'entrée qu'il reçoit de la récompense. L'agent apprend par contact répétitif avec le monde, ou, en d'autres termes, par le jeu répété du jeu.

Pour réussir, il est nécessaire que l'agent :

1. Apprendre le lien entre les états, le comportement et les incitations qui en résultent

2. Déterminez quel est le meilleur coup à choisir (1)

La mise en œuvre (1) nécessite la définition d'un certain ensemble de principes qui peuvent être utilisés pour notifier (2) et (2) est appelée stratégie de fonctionnement. L'une des méthodes les plus courantes d'application de (1) et (2) à l'aide de Deep Q est le réseau Deep Q et la politique epsilon-gourmande.

Apprendre : les 5 projets TensorFlow les plus populaires pour les débutants

Apprentissage Q

L'apprentissage Q est un moyen basé sur la valeur de fournir des données pour indiquer quelle action un agent peut entreprendre. Créer un tableau résumant les avantages d'agir sur plusieurs jeux dans un état est un concept à l'origine intuitif de génération de principes sur lesquels baser les actions. Cela permettra de garder une trace des mouvements les plus bénéfiques. Pour commencer, considérons un jeu simple dans chaque état avec 3 états et deux actions potentielles - un tableau peut représenter les récompenses pour ce jeu :

Acte 1 Action 2
État 1 0 dix
État 2 dix 0
État 3 0 dix

Vous pouvez voir dans le tableau ci-dessus que pour ce jeu simple, lorsque l'agent est à l'état 1 et effectue l'action 2, s'il effectue l'action 1, il recevra une récompense de 10 mais aucune récompense. Dans l'état 2, la condition est inversée et l'état 3 ressemble finalement à l'état 1. Si un agent a arbitrairement exploré ce jeu et compté le comportement obtenu le plus de récompense dans l'un des trois états (stockant cette connaissance dans un tableau, par exemple), ainsi la forme pratique du tableau ci-dessus sera effectivement connue.

En d'autres termes, si l'agent avait effectivement sélectionné le comportement qu'il avait appris dans le passé et qui lui avait procuré la plus grande récompense (apprendre efficacement une forme du tableau ci-dessus), il aurait appris à jouer efficacement au jeu. Lorsqu'il convient de construire simplement des tableaux par sommation, pourquoi avons-nous besoin d'idées fantaisistes comme l'apprentissage Q puis les réseaux de neurones ?

Récompense différée

Eh bien, la première réponse apparente est que le jeu ci-dessus est tout simplement très simple, avec seulement 3 états et 2 actes par état. Les vrais jeux sont nettement plus complexes. Le principe de la récompense différée dans le cas ci-dessus est l'autre concept important qui est absent. Un agent doit apprendre à être capable de prendre des mesures pour jouer correctement aux jeux les plus réalistes, ce qui ne mènera pas nécessairement à une récompense, mais peut entraîner une récompense importante plus tard sur la route.

Acte 1 Action 2
État 1 0 5
État 2 0 5
État 3 0 5
État 4 20 0

Si l'action 2 est effectuée dans tous les états du jeu mentionné ci-dessus, l'agent revient à l'état 1, c'est-à-dire qu'il revient au début. Dans les états 1 à 3, il obtient même un crédit de 5 comme il le fait. Si, par conséquent, l'action 1 est entreprise dans tous les États 1 à 3, l'agent se rendra dans l'État suivant, mais ne recevra pas de récompense avant d'entrer dans l'État 4, moment auquel il recevra une récompense de 20.

En d'autres termes, un agent est mieux loti s'il ne prend pas l'action 2 pour obtenir une récompense instantanée de 5, mais à la place, il peut choisir l'action 1 pour passer en continu à travers les états pour obtenir une récompense de 20. L'agent veut pouvoir pour choisir des actes qui entraînent une récompense différée lorsque la valeur de la récompense différée est trop élevée.

Lire aussi : Classification des images Tensorflow

La règle d'apprentissage Q

Cela nous encourage à clarifier les règles d'apprentissage Q. Dans l'apprentissage profond de Q, le réseau de neurones doit prendre l'état actuel, s, comme vecteur et renvoyer une valeur Q pour chaque comportement potentiel, a, dans cet état, c'est-à-dire qu'il est nécessaire de renvoyer Q(s, a) pour les deux s et a. Cette Q(s, a) doit être révisée dans la formation à travers la règle suivante :

Q(s,a) = Q(s,a) + alp[r+γmax Q(s',a ') – Q(s,a)] + alp[r+ γmax Q(s',a')

Cette loi a besoin d'un peu de déballage pour la mise à niveau. Deuxièmement, vous pouvez voir que la nouvelle valeur de Q(s, a) nécessite de changer sa valeur existante en insérant quelques bits supplémentaires sur le côté droit de l'équation ci-dessus. Basculer de gauche à droite. Oubliez l'alpha pendant un moment. À l'intérieur des crochets, nous voyons que le premier mot est r, qui représente le prix gagné pour avoir agi dans les États.

C'est la récompense instantanée ; aucune satisfaction différée n'est encore impliquée. Le mot suivant est l'estimation de l'incitation différée. Tout d'abord, nous avons la valeur γ qui actualise l'effet de récompense différée, qui est toujours comprise entre 0 et 1. Plus d'informations à ce sujet dans une seconde. Le terme suivant maxa'Q(s, 'a') est la valeur maximale de Q disponible dans la condition suivante.

Rendons les choses un peu plus faciles : l'agent commence dans les états, effectue l'action a, se termine dans les états, puis le code spécifie la valeur maximale de Q dans les états, c'est-à-dire max a 'Q(s',a'). Pourquoi le sens Max a 'Q(s',a') est-il alors pris en considération ? S'il prend effet et dans l'état s, il est connu qu'il représente la récompense complète possible pour le gestionnaire.

Cependant, γ actualise cette valeur pour tenir compte du fait qu'attendre indéfiniment une éventuelle incitation n'est pas souhaitable pour l'agent - il est préférable pour l'agent de cibler le plus gros prix avec le moins de temps possible. Notez que la valeur Q(s',a)' conserve également implicitement l'incitation actualisée la plus élevée pour l'économie après cela, c'est-à-dire Q(s',a)' car elle maintient la motivation actualisée pour l'état Q(s',a) ' etc.

En effet, l'agent sélectionnera l'action non seulement sur la base de la récompense immédiate r, mais également sur la base des incitations futures potentielles actualisées.

Apprentissage Q approfondi

Le Deep Q learning suit la loi de mise à jour du Q learning tout au long de la phase de formation. En d'autres termes, un réseau neuronal est créé qui prend l'état s comme entrée, puis le réseau est formé pour produire des valeurs Q(s, a) appropriées pour chaque comportement dans l'état s. L'action de l'agent sera alors sélectionnée en prenant l'action avec la plus grande valeur de Q(s, a) (en prenant un argmax à partir de la sortie du réseau de neurones). Cela peut être vu dans la première étape du diagramme ci-dessous :

Étapes de sélection et de formation des actions - Apprentissage Deep Q

Une fois ce transfert effectué et une action sélectionnée, l'agent effectuera l'action. L'agent obtiendra alors un retour d'information sur l'incitation donnée pour prendre l'action à partir de cet état. Conformément à la directive d'apprentissage Q, la prochaine étape que nous voulons faire maintenant est de former le réseau. Dans la deuxième partie, cela peut être vu dans le schéma ci-dessus.

Le vecteur d'état s est le tableau d'entrée x pour l'apprentissage du réseau, et l'échantillon d'apprentissage de sortie y est le vecteur Q(s, a) collecté pendant le processus de sélection de l'action. Cependant, l'une des valeurs Q(s,a), correspondant à l'action a, est définie pour avoir un objectif de r+γQ(s',a '), comme on peut le voir sur la figure ci-dessus. En entraînant le réseau de cette manière pour dire à l'agent quel comportement sera le meilleur à sélectionner pour son bénéfice à long terme, le vecteur de sortie Q(s, a) du réseau se renforcera avec le temps.

Avantages de l'apprentissage par renforcement :

  • L'apprentissage par renforcement peut être utilisé pour résoudre des défis très difficiles qui ne peuvent être surmontés par les approches conventionnelles.
  • Cette stratégie est choisie afin de produire des résultats à long terme, qui sont très difficiles à atteindre.
  • Ce modèle d'apprentissage est quelque peu similaire à l'apprentissage des êtres humains. Par conséquent, il est proche d'atteindre la perfection.
  • Le modèle corrigerait les erreurs survenues lors de la phase de test.
  • Si une erreur est corrigée par le modèle, les chances que la même erreur se produise sont légèrement inférieures.
  • Cela créerait le meilleur paradigme pour résoudre un problème particulier.

Inconvénients de l'apprentissage par renforcement

  • L'apprentissage par renforcement en tant que schéma est incorrect à bien des égards, mais c'est précisément cette qualité qui le rend utile.
  • Trop d'apprentissage par renforcement peut entraîner le dépassement des états, ce qui peut réduire les résultats.
  • L'apprentissage par renforcement n'est pas préférable à l'utilisation pour résoudre des problèmes fondamentaux.
  • L'apprentissage par renforcement nécessite beaucoup d'intelligence et beaucoup de calcul. C'est avide de données. C'est pourquoi il s'intègre si bien dans les jeux vidéo, vous pouvez donc jouer au jeu encore et encore, et il semble possible d'obtenir beaucoup de détails.
  • L'apprentissage par renforcement suppose que l'univers est markovien, ce qui n'est pas le cas. Le modèle markovien décrit une séquence d'événements possibles dans laquelle la probabilité de chaque occurrence ne dépend que de la condition atteinte lors de l'événement précédent.

Et ensuite ?

Si vous souhaitez maîtriser l'apprentissage automatique et apprendre à former un agent à jouer au tic tac toe, à former un chatbot, etc., consultez le cours de diplôme PG d'apprentissage automatique et d'intelligence artificielle d'upGrad.

Qu'est-ce que TensorFlow ?

Python, le langage de programmation couramment utilisé dans l'apprentissage automatique, est livré avec une vaste bibliothèque de fonctions. TensorFlow est l'une de ces bibliothèques Python lancée par Google, qui prend en charge des calculs numériques rapides et efficaces. Il s'agit d'une bibliothèque open source créée et gérée par Google qui est largement utilisée pour développer des modèles d'apprentissage en profondeur. TensorFlow est également utilisé avec d'autres bibliothèques wrapper pour simplifier le processus. Contrairement à certaines autres bibliothèques numériques également utilisées dans le Deep Learning, TensorFlow a été développé à la fois pour la recherche et le développement d'applications et pour les fonctions d'environnement de production. Il peut s'exécuter sur des machines avec des processeurs uniques, des appareils mobiles et des systèmes informatiques distribués.

Quelles sont les autres bibliothèques comme TensorFlow dans l'apprentissage automatique ?

Auparavant, les ingénieurs en apprentissage automatique écrivaient manuellement tout le code des différents algorithmes d'apprentissage automatique. Désormais, écrire les mêmes lignes de code à chaque fois pour des algorithmes similaires, des modèles statistiques et mathématiques était non seulement chronophage, mais aussi inefficace et fastidieux. En guise de solution de contournement, des bibliothèques Python ont été introduites pour réutiliser les fonctions et gagner du temps. La collection de bibliothèques de Python est vaste et polyvalente. Certaines des bibliothèques Python les plus couramment utilisées sont Theano, Numpy, Scipy, Pandas, Matplotlib, PyTorch, Keras et Scikit-learn, à l'exception de TensorFlow. Les bibliothèques Python sont également facilement compatibles avec les bibliothèques C/C++.

Quels sont les avantages d'utiliser TensorFlow ?

Les nombreux avantages de TensorFlow en font une option extrêmement populaire pour développer des modèles informatiques dans l'apprentissage en profondeur et l'apprentissage automatique. Premièrement, il s'agit d'une plate-forme open source qui prend en charge des formats de visualisation de données améliorés avec sa présentation graphique. Les programmeurs peuvent également l'utiliser facilement pour déboguer les nœuds, ce qui fait gagner du temps et élimine le besoin d'examiner toute la longueur du code du réseau neuronal. TensorFlow prend en charge toutes sortes d'opérations et les développeurs peuvent créer n'importe quel type de modèle ou de système sur cette plate-forme. Il est facilement compatible avec d'autres langages de programmation comme Ruby, C++ et Swift.