Aidemy 2020/11/22
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é
-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)
-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)
-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)
-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)
-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" __.
-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