Dieses Mal habe ich Reinforcement Learning durchgeführt, das sich im Tutorial befindet, daher werde ich es mit der Bedeutung des Memorandums beschreiben.
Zum Beispiel
Der neue Verkäufer ist der Agent und die Umgebung ist der Kunde.
Aktion die Aktion, die der neue Verkäufer erneut verkauft Staatliche Beobachtung der Reaktion des Kunden auf Verkäufe Die Belohnung lautet "ob die Kaufbereitschaft des Kunden gestiegen ist".
Da unerfahrene Verkäufer keine Verkaufserfahrung haben, können sie nicht wissen, ob die Belohnung, dh "ob die Kaufbereitschaft des Kunden" korrekt ist.
Darüber hinaus können neue Verkäufer die Reaktion der Kunden auf Verkäufe nicht genau erfassen.
Verbessertes Lernen in Situationen, in denen eine hohe Unsicherheit besteht und keine Lehrerdaten vorliegen, wird als POMDP bezeichnet.
Eine ausführliche Erklärung finden Sie im Folgenden (Quelle: NTT Communication Science Laboratories, Yasuhiro Minami). http://www.lai.kyutech.ac.jp/sig-slud/SLUD63-minami-POMDP-tutorial.pdf
Das folgende Tutorial verwendet MDP, bei dem davon ausgegangen wird, dass der beobachtete Status korrekt ist.
MDP (Markov-Entscheidungsprozess) 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
Im Folgenden erfahren Sie, wie Sie PyBrain starten.
https://github.com/pybrain/pybrain/blob/master/docs/documentation.pdf
Installieren Sie die erforderlichen Bibliotheken.
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
Machen Sie sich bereit für die Visualisierung.
import pylab
pylab.gray()
pylab.ion()
Da das Ziel des Tutorials darin besteht, das Labyrinthspiel zu löschen, definieren wir die folgende Labyrinthstruktur.
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]])
Definieren Sie die Labyrinthstruktur als Umgebung. Ich werde Ihnen die Labyrinthstruktur und das endgültige Ziel übergeben, das Sie zuvor definiert haben.
environment = Maze(structure, (7, 7))
Definieren Sie als Nächstes die Aktion des Agenten. Die Aktion des Agenten ist jetzt ein Agent mit einer Wertetabelle mit 81 Status und 4 Aktionen. Und initialisieren Sie den Status des Agenten.
81 Zustand: Weil die Labyrinthstruktur eine 9x9-Struktur ist 4 Aktionen: Weil Up-, Down-, Right- und Down-Aktionen möglich sind
Es gibt ActionValueTable und ActionValueNetwork als Schnittstellen für die Aktionsdefinition.
ActionValueTable: Wird für diskrete Aktionen verwendet ActionValueNetwork: Wird für kontinuierliche Aktionen verwendet
controller = ActionValueTable(81, 4)
controller.initialize(1.)
Definiert, wie der Agent lernt. Definieren Sie die Aktionen des Agenten, die mithilfe von Q-Learning für Belohnungen optimiert werden sollen.
learner = Q()
agent = LearningAgent(controller, learner)
Definieren Sie die Aufgaben, die den Agenten mit der Umgebung verbinden.
task = MDPMazeTask(environment)
Der folgende Code übt tatsächlich 100-mal das Lernen der Verstärkung und zeichnet die Position des Agenten für jede Übung erneut auf.
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()
Das ist es.
Recommended Posts