[PYTHON] Apprentissage par renforcement profond 2 Mise en œuvre de l'apprentissage par renforcement

Aidemy 2020/11/22

introduction

Bonjour, c'est Yope! Je suis une école littéraire croustillante, mais j'étais intéressé par les possibilités de l'IA, alors je suis allé à l'école spécialisée en IA "Aidemy" pour étudier. Je voudrais partager les connaissances acquises ici avec vous, et je les ai résumées dans Qiita. Je suis très heureux que de nombreuses personnes aient lu l'article de synthèse précédent. Merci! Ceci est le deuxième article de Deep Strengthening Learning. Ravi de vous rencontrer.

Quoi apprendre cette fois ・ Mise en œuvre d'un apprentissage amélioré

Mise en œuvre d'un apprentissage amélioré

Création d'environnement

-Dans le chapitre «Renforcer l'apprentissage», l'environnement, etc. a été défini par moi-même, mais cette fois nous allons créer l'environnement, etc. en utilisant la bibliothèque qui prépare divers environnements pour renforcer l'apprentissage. -La bibliothèque à utiliser est __ "keras-rl" __, qui se compose de Keras et __OpenAIGym (Gym) __. Cette fois, nous allons l'utiliser pour apprendre la démo __Cartpole __ avec DQN.

・ Tout d'abord, créez environment. La méthode est juste __ "env = gym.make ()" __. Spécifiez le type d'environnement dans l'argument. L'environnement du poteau du chariot est spécifié comme __ "" CartPole-v0 "" __. Après cela, il peut être exploité en accédant à l'instance env. -Dans ce poteau de chariot, il y a deux actions, __ "déplacer le chariot vers la droite" et "déplacer le chariot vers la gauche" __, et pour obtenir ce __ "env.action_space.n" Vous pouvez utiliser __.

・ Code![Capture d'écran 2020-11-19 10.31.55.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698700/d10ad3fb-5063-56c5- aaf1-453352008e27.png)

Construire un modèle

-Une fois l'environnement créé, utilisez la fonction Keras pour construire un réseau neuronal __multilayer __. Le modèle est construit avec le modèle séquentiel. Ensuite, __Flatten () __ transforme une entrée multidimensionnelle en une dimension. Pour la forme d'entrée "input_shape", utilisez __ "env.observation_space.shape" __ pour spécifier l'état actuel du poteau du chariot. -Ajouter des couches avec __ "model.add ()" __. La couche entièrement connectée est Dense et la fonction d'activation est spécifiée par Activation (). Spécifiez "relu", "linear", etc. pour l'argument.

・ Code![Capture d'écran 2020-11-19 10.32.22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698700/a8af8cb2-4c1f-3956- 62f8-26e9086e06ff.png)

Paramètres de l'agent 1 Historique et mesures

-Ici, le paramètre __agent __, qui est le corps principal de l'apprentissage amélioré, est exécuté. Tout d'abord, définissez __history __ et policy __ requis pour ce paramètre. (L'histoire est "L'histoire de ce que vous avez fait dans le passé") - L'historique __ peut être défini avec __ "Mémoire séquentielle (limite, window_length)" __. limit est le nombre de mémoires à stocker. -Pour policy, utilisez __ "BoltzmannQPolicy ()" __ lorsque vous prenez la politique de Boltzmann, et utilisez __ "EpsGreedyQPolicy ()" __ lorsque vous utilisez la méthode ε-greedy.

・ Code![Capture d'écran 2020-11-19 10.41.15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698700/b834e4f7-d691-531d- e28c-98eda7808306.png)

Paramètres de l'agent 2

-Configurer un agent en utilisant l'historique et les mesures de la section précédente. Appelez __ "DQNAgent ()" __ qui implémente l'algorithme DQN et donnez les arguments suivants. -En tant qu'arguments, modèle __ "modèle" __, historique __ "mémoire" __, politique __ "politique" __, nombre d'actions __ "nb_actions" __, combien d'étapes au début ne doivent pas être utilisées pour l'apprentissage par renforcement Définissez le __ "nb_steps_warmup" __ spécifié. -Si vous mettez ce qui précède dans une variable appelée "dqn", spécifiez la méthode d'apprentissage de l'agent avec __ "dqn.compile ()" __. La fonction __optimization __ peut être spécifiée comme premier argument et la fonction d'évaluation représentée par metrics peut être spécifiée comme deuxième argument.

・ Code (utilisez celui de la section précédente pour le modèle etc.)![Screenshot 2020-11-19 11.12.57.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/ 0/698700 / ff94997e-3e16-3d04-961d-1f9fd389a025.png)

Réalisation du test

-Pour former l'agent dqn dans la section précédente, utilisez __ "dqn.fit ()" __. Comme arguments, environment (env dans le code), nombre d'épisodes __ "nb_steps" __, s'il faut visualiser __ "visualiser" __, s'il faut afficher les journaux __ "verbeux" __ y a-t-il. -Si vous laissez l'agent apprendre, faites ceci test. Le test exécute l'agent et évalue la récompense qu'il obtient réellement. Cela peut être fait avec __ "dqn.test ()" __. L'argument est le même que "dqn.fit ()", mais seul le nombre d'épisodes est de __ "nb_episodes" __.

Sommaire

-Utilisez keras-rl lors de l'exécution d'un apprentissage amélioré à l'aide de la bibliothèque. -Après avoir créé l'environnement avec __ "gym.make ()" __, créez un modèle et ajoutez des couches. Définissez également __history __ et __policy __ et utilisez-les pour créer un agent.

Cette fois, c'est fini. Merci d'avoir lu jusqu'ici.

Recommended Posts

Apprentissage par renforcement profond 2 Mise en œuvre de l'apprentissage par renforcement
Othello-De la troisième ligne de "Implementation Deep Learning" (3)
Deep learning 1 Pratique du deep learning
Othello-De la troisième ligne de "Implementation Deep Learning" (2)
[Mémo d'apprentissage] Apprentissage profond à partir de zéro ~ Mise en œuvre de l'abandon ~
Implémentation du modèle Deep Learning pour la reconnaissance d'images
Apprentissage profond appris par mise en œuvre (segmentation) ~ Mise en œuvre de SegNet ~
Renforcement de l'apprentissage 2 Installation de chainerrl
Deep running 2 Réglage de l'apprentissage profond
Apprentissage par renforcement profond 1 Introduction au renforcement de l'apprentissage
Othello ~ De la troisième ligne de "Implementation Deep Learning" (4) [Fin]
L'apprentissage en profondeur
Apprentissage profond appris par l'implémentation 1 (édition de retour)
Deep Strengthening Learning 3 Édition pratique: Briser des blocs
Implémentation du modèle de reconnaissance d'images d'apprentissage en profondeur 2
Apprenez en faisant! Apprentissage par renforcement profond_1
[Deep Learning from scratch] Implémentation de la méthode Momentum et de la méthode AdaGrad
Deep learning 2 appris par l'implémentation (classification d'images)
Apprentissage amélioré pour apprendre de zéro à profond
Signification des modèles et paramètres d'apprentissage en profondeur
Qiskit: mise en œuvre de l'apprentissage des circuits quantiques (QCL)
Implémentation d'un réseau neuronal à 3 couches (pas d'apprentissage)
<Cours> Deep Learning Day4 Renforcement de l'apprentissage / flux de tension
Mémorandum d'apprentissage profond
Commencer l'apprentissage en profondeur
Essayez l'apprentissage profond de la génomique avec Kipoi
Algorithme d'apprentissage automatique (implémentation de la classification multi-classes)
Visualisez les effets de l'apprentissage profond / de la régularisation
Apprentissage par renforcement futur_2
Apprentissage par renforcement futur_1
Analyse émotionnelle des tweets avec apprentissage en profondeur
Apprentissage en profondeur Python
Essayez de faire une stratégie de blackjack en renforçant l'apprentissage ((1) Implémentation du blackjack)
Enregistrement d'apprentissage de la lecture "Deep Learning from scratch"
Python vs Ruby "Deep Learning from scratch" Chapitre 4 Implémentation de la fonction de perte
L'histoire de l'apprentissage profond avec TPU
[Renforcement de l'apprentissage] Commentaire de vengeance (Keras-RL) qui a tenté de mettre en œuvre / d'expliquer R2D2
Apprentissage profond / rétropropagation d'erreur de la fonction sigmoïde
Un mémorandum d'étude et de mise en œuvre du Deep Learning
Apprentissage profond appris par la mise en œuvre ~ Détection d'anomalies (apprentissage sans enseignant) ~
Compréhension de base de l'estimation de la profondeur stéréo (Deep Learning)
Apprentissage parallèle du deep learning par Keras et Kubernetes
Premier apprentissage profond en C # -Imitation de l'implémentation en Python-
Premier apprentissage profond ~ Lutte ~
Python vs Ruby "Deep Learning from scratch" Chapitre 3 Implémentation d'un réseau neuronal à 3 couches
Apprentissage amélioré 1 installation de Python
Renforcer l'apprentissage 3 Installation d'OpenAI
Python: pratique du Deep Learning
Fonctions d'apprentissage en profondeur / d'activation
Apprentissage profond à partir de zéro
Renforcer l'apprentissage de la troisième ligne
Apprentissage profond / entropie croisée
Premier apprentissage profond ~ Préparation ~
Deep Learning from scratch La théorie et la mise en œuvre de l'apprentissage profond appris avec Python Chapitre 3
Première solution d'apprentissage en profondeur ~
[AI] Apprentissage métrique profond
Implémentation de la séquence de Fibonacci
J'ai essayé le deep learning