Explorez le labyrinthe avec l'apprentissage augmenté

introduction

Cette fois, j'aimerais explorer le labyrinthe en utilisant l'apprentissage par renforcement, en particulier l'apprentissage Q.

Apprentissage Q

Aperçu

En termes simples, une valeur appelée valeur Q est conservée pour chaque paire d '«état» et de «comportement», et la valeur Q est mise à jour en utilisant «récompense» ou autre. Les actions qui sont plus susceptibles d'obtenir une récompense positive convergeront vers une valeur Q. Dans le labyrinthe, la masse du passage correspond à l'état, et le déplacement vers le haut, le bas, la gauche et la droite correspond à l'action. En d'autres termes, la valeur Q doit être stockée dans la mémoire pour le nombre de cellules dans le passage * le nombre de modèles d'action (4 pour haut, bas, gauche et droite). Par conséquent, il ne peut pas être facilement adapté lorsqu'il existe de nombreuses paires d '"état" et d' "action", c'est-à-dire lorsque l'espace d'état et d'action explose.

Cette fois, nous traiterons le problème que le nombre de carrés dans le passage est de 60 et le nombre d'actions qui peuvent être effectuées est de quatre valeurs de 240 Q, haut, bas, gauche et droite.

algorithme

Mettre à jour la valeur Q

Initialement, toutes les valeurs Q sont initialisées à 0. La valeur Q est mise à jour à chaque fois que l'action $ a $ est effectuée dans l'état $ s_t $.

Q(s_t, a) \leftarrow Q(s_t, a) + \alpha(r_{t+1} + \gamma \max_{p}{Q(s_{t+1}, p)} -Q(s_t, a))

Sélection d'action

Cette fois, nous utiliserons ε-gourmand. Sélectionnez une action aléatoire avec une faible probabilité de ε, et sélectionnez une action avec la valeur Q maximale avec une probabilité de 1-ε.

Code source

Le code a été téléchargé sur Github. Faites-le en tant que python map.py. Je l'ai écrit il y a environ deux ans, mais c'est assez terrible.

Expérience

environnement

L'environnement expérimental est comme le montre l'image ci-dessous: le carré bleu clair en bas à droite est le but, le carré supérieur gauche est le début et les quatre coins bleus sont les agents d'apprentissage. Lorsque vous atteignez l'objectif, vous recevrez une récompense positive. De plus, la partie noire est le mur et l'agent ne peut pas entrer. L'agent n'a donc pas d'autre choix que de passer par le passage blanc. La valeur Q de chaque cellule est initialisée à 0, mais lorsque la valeur Q devient supérieure à 0, la plus grande valeur Q des quatre valeurs Q de cette cellule est la nuance de couleur et l'action est affichée par une flèche. C'est un mécanisme.

résultat

Les résultats expérimentaux sont publiés sur youtube. Vous pouvez voir que la valeur Q est propagée lorsque l'agent atteint l'objectif. IMAGE ALT TEXT HERE

en conclusion

Je veux essayer Q learning + neural net

Recommended Posts

Explorez le labyrinthe avec l'apprentissage augmenté
Apprentissage amélioré à partir de Python
Renforcer l'apprentissage 13 Essayez Mountain_car avec ChainerRL.
Apprentissage par renforcement dans les plus brefs délais avec Keras avec OpenAI Gym
Validez le modèle d'entraînement avec Pylearn2
[Renforcer l'apprentissage] DQN avec votre propre bibliothèque
[Python] Essayez facilement l'apprentissage amélioré (DQN) avec Keras-RL
[Renforcer l'apprentissage] Rechercher le meilleur itinéraire
Renforcer l'apprentissage 11 Essayez OpenAI acrobot avec ChainerRL.
[Introduction] Renforcer l'apprentissage
Apprentissage par renforcement futur_2
Apprentissage par renforcement futur_1
L'histoire de l'apprentissage profond avec TPU
Défier la rupture avec le modèle Actor-Critic renforçant l'apprentissage
[Mac] J'ai essayé de renforcer l'apprentissage avec Open AI Baselines
Apprendre Python avec ChemTHEATER 03
"Orienté objet" appris avec python
Apprentissage amélioré 1 installation de Python
Apprendre Python avec ChemTHEATER 05-1
Renforcer l'apprentissage 3 Installation d'OpenAI
Renforcer l'apprentissage de la troisième ligne
Apprendre Python avec ChemTHEATER 02
Apprentissage par renforcement 37 Démarrez automatiquement avec l'enrubanneuse Atari
Prédire le sexe des utilisateurs de Twitter grâce à l'apprentissage automatique
[Renforcer l'apprentissage] Tâche de bandit
Apprendre Python avec ChemTHEATER 01
Résumé du flux de base de l'apprentissage automatique avec Python
Bilan du premier défi du machine learning avec Keras
Apprentissage amélioré Python + Unity (apprentissage)
J'ai étudié l'algorithme d'apprentissage de renforcement du trading d'algorithmes
Renforcer l'apprentissage 1 édition introductive
J'ai appris les bases de l'apprentissage intensif et joué avec Cart Pole (implémentation simple de Q Learning)
Reconnaissez votre patron avec Deep Learning et masquez l'écran
J'ai capturé le projet Toho avec Deep Learning ... je le voulais.
[Apprentissage de renforcement d'introduction] Renforcement de l'apprentissage pour bouger pour le moment
Apprentissage par renforcement 23 Créez et utilisez votre propre module avec Colaboratory
Déplaçons word2vec avec Chainer et voyons la progression de l'apprentissage
Renforcer l'apprentissage 18 Colaboratory + Acrobat + ChainerRL
Essayez l'apprentissage en profondeur avec TensorFlow
Apprentissage amélioré 7 Sortie du journal des données d'apprentissage
Insérez le débogueur avec le nez
Renforcer l'apprentissage 17 Colaboratory + CartPole + ChainerRL
Renforcer l'apprentissage 28 collaboratif + OpenAI + chainerRL
Tuez le processus avec sudo kill -9
Renforcement de l'apprentissage 2 Installation de chainerrl
[Renforcer l'apprentissage] Suivi par multi-agents
Renforcer l'apprentissage 20 Colaboratoire + Pendule + ChainerRL
À propos de l'apprentissage avec Google Colab
Apprentissage automatique avec Python! Préparation
Essayez le Deep Learning avec FPGA
Apprentissage par renforcement 5 Essayez de programmer CartPole?
Apprentissage par renforcement 9 Remodelage magique ChainerRL
Renforcer l'apprentissage Apprendre d'aujourd'hui
Devinez le mot de passe avec klee
L'apprentissage le plus rapide sous Linux avec AWS
gethostbyaddr () communique avec l'extérieur
Démineur d'apprentissage automatique avec PyTorch
Gratter la moyenne du Nikkei avec le dramaturge-python
Vérifiez le code avec flake8