[PYTHON] Verstärkungslernen in kürzester Zeit mit Keras mit OpenAI Gym

Einführung

Reinforcement Learning Ich bin mir nicht sicher, aber es ist für ungeduldige Menschen, die sich aufgrund der Theorie vorerst bewegen und sehen wollen. Mit anderen Worten, er ist ein Mensch wie ich. OpenAI Gym bietet eine Umgebung für intensives Lernen, daher werde ich sie verwenden. OpenAI Gym ist nur eine Umgebung, und Sie brauchen etwas anderes, um tatsächlich zu lernen. Als ich es nachgeschlagen habe, gab es eine Person, die keras-rl schrieb, um das Lernen mit Keras zu stärken, und es schien einfach zu sein, dies zu versuchen, also habe ich es verwendet. Ich werde. Danke an meine Vorfahren.

Umwelt vorbereiten

Diese Umgebung

Zuerst habe ich es auf einem Server ohne Display gemacht, aber es war nervig, also habe ich es in einer lokalen Umgebung gemacht. Übrigens sollten Sie mit Xvfb auch auf einem Server ohne Anzeige Ihr Bestes geben. Es scheint derjenige zu sein, der die Anzeige im virtuellen Speicher reproduziert.

Installation

pip install gym
pip install keras-rl

Beide Installationen können mit `` `pip``` durchgeführt werden. Es wird angenommen, dass Keras enthalten sind.

CartPole

Was ist CartPole?

CartPole ist ein Spiel, bei dem sich eine Stange auf dem Wagen befindet und der Wagen bewegt wird, um ihn auszugleichen, um ihn nicht umzuwerfen (?) ist.

Dies.

Screen Shot 2017-07-23 at 1.44.51.png

Der Wagen kann sich nur nach links und rechts bewegen. Daher gibt es zwei Werte für die Aufnahme eines Wagens: rechts und links. Wählen Sie je nach aktueller Umgebung rechts oder links, um eine gute Balance zu erzielen. Dies kann wie folgt bestätigt werden.

import gym
env = gym.make('CartPole-v0')
env.action_space
# Discrete(2)

env.action_space.sample()
# 0

Informationen zur Umgebung, in der der Wagen erhältlich ist,

env.observation_space
# Box(4,)

env.observation_space.sample()
# array([  4.68609638e-01, 1.46450285e+38, 8.60908446e-02, 3.05459097e+37])

Diese vier Werte. Die Position des Wagens, die Geschwindigkeit des Wagens, der Winkel der Stange und die Geschwindigkeit, mit der sich die Stange dreht. (Kart und Paul sind zu früh, oder?) sample()Die Methode ist eine Methode zur angemessenen Erfassung des Verhaltens und der Umgebung.

DQN example Es gibt ein Beispiel, das dies mit DQN in keras-rl tut. Verwenden Sie es also so, wie es ist. Ich wollte ein Diagramm, um diesen Artikel zu schreiben, also habe ich nur zwei Zeilen hinzugefügt. (Wo es heißt Hinzufügen)

Über DQN Gewöhnen Sie sich an Keras, während Sie [Python] Enhanced Learning (DQN) implementieren Stärkung des Lernens von null auf tief Die Gegend wird hilfreich sein.

Es scheint, dass die Aktionswertfunktion ein tiefes neuronales Netz ist. In diesem Fall ist es der Teil der Funktion, der ausdrückt, dass das Bewegen des Wagens nach rechts wertvoller ist, wenn die Stange nach rechts geneigt wird.

import numpy as np
import gym
from gym import wrappers #hinzufügen

from keras.models import Sequential
from keras.layers import Dense, Activation, Flatten
from keras.optimizers import Adam

from rl.agents.dqn import DQNAgent
from rl.policy import BoltzmannQPolicy
from rl.memory import SequentialMemory

ENV_NAME = 'CartPole-v0'

# Get the environment and extract the number of actions.
env = gym.make(ENV_NAME)
env = wrappers.Monitor(env, './CartPole') #hinzufügen
np.random.seed(123)
env.seed(123)
nb_actions = env.action_space.n

# Next, we build a very simple model.
model = Sequential()
model.add(Flatten(input_shape=(1,) + env.observation_space.shape))
model.add(Dense(16))
model.add(Activation('relu'))
model.add(Dense(16))
model.add(Activation('relu'))
model.add(Dense(16))
model.add(Activation('relu'))
model.add(Dense(nb_actions))
model.add(Activation('linear'))
print(model.summary())

# Finally, we configure and compile our agent. You can use every built-in Keras optimizer and
# even the metrics!
memory = SequentialMemory(limit=50000, window_length=1)
policy = BoltzmannQPolicy()
dqn = DQNAgent(model=model, nb_actions=nb_actions, memory=memory, nb_steps_warmup=10,
               target_model_update=1e-2, policy=policy)
dqn.compile(Adam(lr=1e-3), metrics=['mae'])

# Okay, now it's time to learn something! We visualize the training here for show, but this
# slows down training quite a lot. You can always safely abort the training prematurely using
# Ctrl + C.
dqn.fit(env, nb_steps=50000, visualize=True, verbose=2)

# After training is done, we save the final weights.
dqn.save_weights('dqn_{}_weights.h5f'.format(ENV_NAME), overwrite=True)

# Finally, evaluate our algorithm for 5 episodes.
dqn.test(env, nb_episodes=5, visualize=True)

In diesem Beispiel wird die Richtlinie "BoltzmannQPolicy ()" verwendet, dies ist jedoch eine Aktion gemäß Future Strengthing Learning. Es scheint, dass dies durch die Softmax-Funktion des Werts der Aktionswertfunktion bei der Auswahl bestimmt wird. Je mehr Action Sie haben, desto besser wählen Sie.

Ergebnis

1. Folge

openaigym.video.0.43046.video000001.gif

Eine Episode ist eine Lerneinheit des verstärkenden Lernens, und eine Episode ist so lange, bis der Sieg oder die Niederlage des Spiels klar wird. Und da dies das Ergebnis der ersten Folge ist, habe ich noch nichts gelernt und es ist völlig zufällig.

Der Wagen bewegt sich nach links, obwohl Paul im Begriff ist, nach rechts zu fallen.

Der Grund, warum es ein bisschen verrückt ist, ist, dass das Spiel endet, wenn der CartPole um 15 Grad oder mehr geneigt ist, sodass kein weiteres Zeichnen erfolgt. Es endet auch dann, wenn es sich zu stark nach links oder rechts bewegt.

Folge 216

openaigym.video.0.43046.video000216.gif

Oh ... es hält ...

Am Ende

Recommended Posts

Verstärkungslernen in kürzester Zeit mit Keras mit OpenAI Gym
Entdecken Sie das Labyrinth mit erweitertem Lernen
Stärkung des Lernens 11 Probieren Sie OpenAI Acrobot mit ChainerRL aus.
Löse OpenAI Gym Copy-v0 mit Sarsa
Öffnen Sie AI Gym, um mit PD-gesteuertem Cart Pole zu lernen
Seq2Seq (1) mit Chainer
Erstellen Sie eine Open AI Gym-Umgebung mit Bash unter Windows 10
Verwenden Sie Tensorboard mit Chainer
Verstärkungslernen in kürzester Zeit mit Keras mit OpenAI Gym
[Mac] Ich habe versucht, das Lernen mit Open AI Baselines zu stärken
9 Schritte, um in kürzester Zeit Experte für maschinelles Lernen zu werden [Völlig kostenlos]
Stärkung des Lernens 3 OpenAI-Installation
Ändern Sie die Zeitzone in Oracle Database Docker
Aufzeichnung der ersten Herausforderung des maschinellen Lernens mit Keras
Versuchen Sie, eine Blackjack-Strategie zu entwickeln, indem Sie das Lernen stärken (② Registrieren Sie die Umgebung im Fitnessstudio).
[TensorFlow 2 / Keras] Ausführen des Lernens mit CTC Loss in Keras
Stärkung des Lernens 28 colaboratory + OpenAI + chainerRL
Verbessertes Lernen ab Python
[In kürzester Zeit verstehen] Python-Grundlagen für die Datenanalyse
Versuchen Sie, eine Blackjack-Strategie zu entwickeln, indem Sie das Lernen stärken (③ Stärkung des Lernens in Ihrer eigenen OpenAI Gym-Umgebung).
[Einführung in die Stärkung des Lernens] Stärkung des Lernens, um sich vorerst zu bewegen
Ich habe versucht, den Datenverkehr mit WebSocket in Echtzeit zu beschreiben
Erstellen Sie in kürzester Zeit eine Selenium-Umgebung unter Amazon Linux 2
[Lernen stärken] Wie zeichnet man OpenAI Gym auf Google Corab (Version 2020.6)?
Lernen stärken 13 Probieren Sie Mountain_car mit ChainerRL aus.
Löse OpenAI Gym Copy-v0 mit Sarsa
Probieren Sie Cython in kürzester Zeit aus
Validieren Sie das Trainingsmodell mit Pylearn2
Fordern Sie die Bildklassifizierung mit TensorFlow2 + Keras CNN 1 heraus ~ Bewegen Sie sich vorerst ~
So ermitteln Sie mit Python den Unterschied zwischen Datum und Uhrzeit in Sekunden
Abrufen und Konvertieren der aktuellen Zeit in der lokalen Systemzeitzone mit Python
Ich habe GAN mit Keras gemacht, also habe ich ein Video des Lernprozesses gemacht.
[Stärkung des Lernens] DQN mit Ihrer eigenen Bibliothek
Verhalten bei der Rückkehr in den with-Block
Zeigen Sie Python 3 im Browser mit MAMP an
MongoDB mit Python zum ersten Mal
[Python] Probieren Sie mit Keras-RL ganz einfach erweitertes Lernen (DQN) aus
[Lernen stärken] Suche nach der besten Route
Visualisieren Sie Informationen zum Beschleunigungssensor von der Mikrocomputerplatine in Echtzeit mit mbed + Python
Versuchen Sie die Feinabstimmung (Transferlernen), die bei Bildern mit Keras der Mainstream ist, mit Datenlernen
Verstehen Sie die Bilder verschiedener Matrixoperationen, die in Keras (Tensorflow) verwendet werden, anhand von Beispielen
Was ich getan habe, als ich mit Lambda Python im Zeitlimit steckte
Drehen Sie in Python mehrere Listen mit for-Anweisung gleichzeitig
Einführung in das Buch "Erstellen einer profitablen KI mit Python", mit dem Sie in kürzester Zeit maschinelles Lernen erlernen können