[PYTHON] Ich habe versucht, mit PyBrain verstärkt zu lernen

Pybrain ist eine Python-Bibliothek, die den Mechanismus neuronaler Netze implementiert.

Dieses Mal habe ich Reinforcement Learning durchgeführt, das sich im Tutorial befindet, daher werde ich es mit der Bedeutung des Memorandums beschreiben.

Intensiviertes Lernen ist ein Rahmen für die Lernkontrolle, der sich durch Ausprobieren an die Umgebung anpasst.

Screen Shot 2015-05-12 at 8.20.22.jpg

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

Dieses Mal habe ich ein Tutorial in Python geübt, um ein Labyrinthspiel mit diesem Framework zu löschen.

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

Ich habe versucht, mit PyBrain verstärkt zu lernen
Ich habe versucht, mit Theano tief zu lernen
Ich habe versucht, parametrisiert zu verwenden
Ich habe versucht, Argparse zu verwenden
Ich habe versucht, Mimesis zu verwenden
Ich habe versucht, anytree zu verwenden
Ich habe versucht, Summpy zu verwenden
Ich habe versucht, Coturn zu verwenden
Ich habe versucht, Pipenv zu verwenden
Ich habe versucht, Matplotlib zu verwenden
Ich habe versucht, "Anvil" zu verwenden.
Ich habe versucht, Hubot zu verwenden
Ich habe versucht, ESPCN zu verwenden
Ich habe versucht, openpyxl zu verwenden
Ich habe versucht, tief zu lernen
Ich habe versucht, Ipython zu verwenden
Ich habe versucht, PyCaret zu verwenden
Ich habe versucht, Cron zu verwenden
Ich habe versucht, ngrok zu verwenden
Ich habe versucht, face_recognition zu verwenden
Ich habe versucht, Jupyter zu verwenden
Ich habe versucht, doctest zu verwenden
Ich habe versucht, Folium zu verwenden
Ich habe versucht, jinja2 zu verwenden
Ich habe versucht, Folium zu verwenden
Ich habe versucht, das Zeitfenster zu verwenden
[Mac] Ich habe versucht, das Lernen mit Open AI Baselines zu stärken
[Ich habe versucht, Pythonista 3 zu verwenden] Einführung
Ich habe versucht, easydict (Memo) zu verwenden.
Ich habe versucht, das Gesicht mit Face ++ zu erkennen
Ich habe versucht, RandomForest zu verwenden
Ich habe versucht, BigQuery ML zu verwenden
Ich habe versucht, Magenta / TensorFlow zu verwenden
Ich habe versucht, AWS Chalice zu verwenden
Ich habe versucht, Slack Emojinator zu verwenden
Ich habe versucht, meinen eigenen Datensatz mit Chainer Trainer zu lernen
Ich habe versucht, das Bild mithilfe von maschinellem Lernen zu komprimieren
Ich habe versucht, Rotrics Dex Arm # 2 zu verwenden
Ich habe maschinelles Lernen mit liblinear versucht
Ich habe versucht, Rotrics Dex Arm zu verwenden
Ich habe versucht, GrabCut von OpenCV zu verwenden
Ich habe versucht, Tensorboard zu verwenden, ein Visualisierungstool für maschinelles Lernen
Stärkung des Lernens 8 Versuchen Sie, die Chainer-Benutzeroberfläche zu verwenden
[TF] Ich habe versucht, das Lernergebnis mit Tensorboard zu visualisieren
Ich habe versucht, mit dem Server-Client über tmux zu kommunizieren
Ich habe irgendwie versucht, ein Jupyter-Notebook zu verwenden
Ich habe versucht, LightGBM mit Yellowbrick zu lernen
[Kaggle] Ich habe versucht, mit unausgeglichenem Lernen zu unterabtasten
Ich habe versucht, mit OpenPose eine Schildkrötenwelle zu schießen
Ich habe versucht, die checkio-API zu verwenden
Ich habe versucht, asynchrone Verarbeitung mit Asyncio
Ich habe mit ChainerRL Deep Enforcement Learning (Double DQN) ausprobiert
Ich habe versucht, Amazon SQS mit Django-Sellerie zu verwenden
[Lernen stärken] Ich habe R2D3 (Keras-RL) implementiert / erklärt.
Ich habe versucht, ○ ✕ mit TensorFlow zu spielen
Ich habe versucht, YOUTUBE Data API V3 zu verwenden