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.
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
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