[PYTHON] J'ai essayé l'apprentissage par renforcement avec PyBrain

Pybrain est une bibliothèque Python qui implémente le mécanisme des réseaux de neurones.

Cette fois, j'ai fait l'apprentissage par renforcement, qui est sur le tutoriel, donc je vais le décrire avec la signification du mémorandum.

L'apprentissage intensifié est un cadre de contrôle de l'apprentissage qui s'adapte à l'environnement par essais et erreurs.

Screen Shot 2015-05-12 at 8.20.22.jpg

Par exemple

Le nouveau vendeur est l'agent et l'environnement est le client.

Action l'action que le nouveau vendeur vend à nouveau Observation étatique de la réaction du client aux ventes La récompense sera "si la volonté d'achat du client a augmenté".

Étant donné que les vendeurs débutants n'ont aucune expérience de la vente, ils ne peuvent pas savoir si la récompense, c'est-à-dire «si la volonté du client d'acheter» est exacte.

De plus, les nouveaux vendeurs ne peuvent pas saisir avec précision la réaction des clients aux ventes.

L'apprentissage amélioré utilisé dans des situations où il y a une forte incertitude et aucune donnée sur les enseignants est appelé POMDP.

Veuillez vous référer à ce qui suit pour une explication détaillée (Source: NTT Communication Science Laboratories, Yasuhiro Minami) http://www.lai.kyutech.ac.jp/sig-slud/SLUD63-minami-POMDP-tutorial.pdf

Le didacticiel ci-dessous utilise MDP, qui suppose que l'état observé est correct.

MDP (processus décisionnel de Markov) http://www.orsj.or.jp/~wiki/wiki/index.php/%E3%83%9E%E3%83%AB%E3%82%B3%E3%83%95%E6%B1%BA%E5%AE%9A%E9%81%8E%E7%A8%8B

Cette fois, j'ai pratiqué un tutoriel en Python pour effacer un jeu de labyrinthe en utilisant ce framework.

Veuillez vous référer à ce qui suit pour savoir comment démarrer PyBrain.

https://github.com/pybrain/pybrain/blob/master/docs/documentation.pdf

Installez les bibliothèques requises.

from scipy import *
import sys, time

from pybrain.rl.environments.mazes import Maze, MDPMazeTask
from pybrain.rl.learners.valuebased import ActionValueTable
from pybrain.rl.agents import LearningAgent
from pybrain.rl.learners import Q, SARSA
from pybrain.rl.experiments import Experiment
from pybrain.rl.environments import Task

Préparez-vous pour la visualisation.

import pylab
pylab.gray()
pylab.ion()

Puisque le but du didacticiel est d'effacer le jeu de labyrinthe, nous définirons la structure de labyrinthe suivante.

structure = array([[1, 1, 1, 1, 1, 1, 1, 1, 1],
                   [1, 0, 0, 1, 0, 0, 0, 0, 1],
                   [1, 0, 0, 1, 0, 0, 1, 0, 1],
                   [1, 0, 0, 1, 0, 0, 1, 0, 1],
                   [1, 0, 0, 1, 0, 1, 1, 0, 1],
                   [1, 0, 0, 0, 0, 0, 1, 0, 1],
                   [1, 1, 1, 1, 1, 1, 1, 0, 1],
                   [1, 0, 0, 0, 0, 0, 0, 0, 1],
                   [1, 1, 1, 1, 1, 1, 1, 1, 1]])

Définissez la structure du labyrinthe comme un environnement. Je vais vous passer la structure du labyrinthe et le but final que vous avez défini plus tôt.

environment = Maze(structure, (7, 7))

Ensuite, définissez l'action de l'agent. L'action de l'agent est désormais un agent avec une table de valeurs, avec 81 états et 4 actions. Et initialisez l'état de l'agent.

81 état: Parce que la structure du labyrinthe est une structure 9x9 4 actions: parce que les actions haut, bas, droite, bas sont possibles

Il existe ActionValueTable et ActionValueNetwork comme interfaces de définition d'action.

ActionValueTable: utilisé pour les actions discrètes ActionValueNetwork: utilisé pour les actions continues

controller = ActionValueTable(81, 4)
controller.initialize(1.)

Définit la manière dont l'agent apprend. Définissez les actions de l'agent à optimiser pour les récompenses à l'aide de Q-learning.

learner = Q()
agent = LearningAgent(controller, learner)

Définissez les tâches qui connectent l'agent à l'environnement.

task = MDPMazeTask(environment)

Avec le code ci-dessous, j'ai en fait pratiqué l'apprentissage par renforcement 100 fois et tracé à nouveau la position de l'agent pour chaque pratique.


experiment = Experiment(task, agent)

while True:
    experiment.doInteractions(100)
    agent.learn()
    agent.reset()

    pylab.pcolor(controller.params.reshape(81,4).max(1).reshape(9,9))
    pylab.draw()
    pylab.show() 

C'est tout.

Recommended Posts

J'ai essayé l'apprentissage par renforcement avec PyBrain
J'ai essayé l'apprentissage en profondeur avec Theano
J'ai essayé d'utiliser paramétré
J'ai essayé d'utiliser argparse
J'ai essayé d'utiliser la mimesis
J'ai essayé d'utiliser anytree
J'ai essayé d'utiliser Summpy
J'ai essayé d'utiliser coturn
J'ai essayé d'utiliser Pipenv
J'ai essayé d'utiliser matplotlib
J'ai essayé d'utiliser "Anvil".
J'ai essayé d'utiliser Hubot
J'ai essayé d'utiliser ESPCN
J'ai essayé d'utiliser openpyxl
J'ai essayé le deep learning
J'ai essayé d'utiliser Ipython
J'ai essayé d'utiliser PyCaret
J'ai essayé d'utiliser cron
J'ai essayé d'utiliser ngrok
J'ai essayé d'utiliser face_recognition
J'ai essayé d'utiliser Jupyter
J'ai essayé d'utiliser doctest
J'ai essayé d'utiliser du folium
J'ai essayé d'utiliser jinja2
J'ai essayé d'utiliser du folium
J'ai essayé d'utiliser la fenêtre de temps
[Mac] J'ai essayé de renforcer l'apprentissage avec Open AI Baselines
[J'ai essayé d'utiliser Pythonista 3] Introduction
J'ai essayé d'utiliser easydict (mémo).
J'ai essayé la reconnaissance faciale avec Face ++
J'ai essayé d'utiliser RandomForest
J'ai essayé d'utiliser BigQuery ML
J'ai essayé d'utiliser magenta / TensorFlow
J'ai essayé d'utiliser AWS Chalice
J'ai essayé d'utiliser l'émojinateur Slack
J'ai essayé d'apprendre mon propre ensemble de données en utilisant Chainer Trainer
J'ai essayé de compresser l'image en utilisant l'apprentissage automatique
J'ai essayé d'utiliser Rotrics Dex Arm # 2
J'ai essayé l'apprentissage automatique avec liblinear
J'ai essayé d'utiliser Rotrics Dex Arm
J'ai essayé d'utiliser GrabCut d'OpenCV
J'ai essayé d'utiliser Tensorboard, un outil de visualisation pour l'apprentissage automatique
Renforcer l'apprentissage 8 Essayez d'utiliser l'interface utilisateur de Chainer
[TF] J'ai essayé de visualiser le résultat de l'apprentissage en utilisant Tensorboard
J'ai essayé de communiquer avec le client serveur en utilisant tmux
J'ai essayé d'utiliser le notebook jupyter d'une manière ou d'une autre
J'ai essayé d'apprendre LightGBM avec Yellowbrick
[Kaggle] J'ai essayé le sous-échantillonnage en utilisant un apprentissage déséquilibré
J'ai essayé de photographier une vague de tortue en utilisant OpenPose
J'ai essayé d'utiliser l'API checkio
J'ai essayé le traitement asynchrone en utilisant asyncio
J'ai essayé l'apprentissage par renforcement profond (Double DQN) avec ChainerRL
J'ai essayé d'utiliser Amazon SQS avec django-celery
[Renforcer l'apprentissage] J'ai implémenté / expliqué R2D3 (Keras-RL)
J'ai essayé de jouer au jeu ○ ✕ en utilisant TensorFlow
J'ai essayé d'utiliser l'API de données YOUTUBE V3