[PYTHON] Verstärkungslernen 10 Versuchen Sie es mit einem trainierten neuronalen Netz.

Es wird davon ausgegangen, dass Sie bis zur Stärkung des Lernens 9 abgeschlossen haben. Entwicklung verwendet Jupyter Notebook. Da VSCode nicht verwendet wird, ist es einfach zu wechseln.

Chainer RL Schnellstart wie er ist. Installieren Sie zuerst matplotlib.

pip install matplotlib

Das Folgende ist eine Kopie aus dem Jupyter-Notizbuch.

import chainer
import chainer.functions as F
import chainer.links as L
import chainerrl
import gym
import numpy as np
env = gym.make('CartPole-v0')
print('observation space:', env.observation_space)
print('action space:', env.action_space)

obs = env.reset()
#env.render()
print('initial observation:', obs)

action = env.action_space.sample()
obs, r, done, info = env.step(action)
print('next observation:', obs)
print('reward:', r)
print('done:', done)
print('info:', info)
class QFunction(chainer.Chain):

    def __init__(self, obs_size, n_actions, n_hidden_channels=50):
        super().__init__()
        with self.init_scope():
            self.l0 = L.Linear(obs_size, n_hidden_channels)
            self.l1 = L.Linear(n_hidden_channels, n_hidden_channels)
            self.l2 = L.Linear(n_hidden_channels, n_actions)

    def __call__(self, x, test=False):
        """
        Args:
            x (ndarray or chainer.Variable): An observation
            test (bool): a flag indicating whether it is in test mode
        """
        h = F.tanh(self.l0(x))
        h = F.tanh(self.l1(h))
        return chainerrl.action_value.DiscreteActionValue(self.l2(h))

obs_size = env.observation_space.shape[0]
n_actions = env.action_space.n
q_func = QFunction(obs_size, n_actions)
# Use Adam to optimize q_func. eps=1e-2 is for stability.
optimizer = chainer.optimizers.Adam(eps=1e-2)
optimizer.setup(q_func)
# Set the discount factor that discounts future rewards.
gamma = 0.95

# Use epsilon-greedy for exploration
explorer = chainerrl.explorers.ConstantEpsilonGreedy(
    epsilon=0.3, random_action_func=env.action_space.sample)

# DQN uses Experience Replay.
# Specify a replay buffer and its capacity.
replay_buffer = chainerrl.replay_buffer.ReplayBuffer(capacity=10 ** 6)

# Since observations from CartPole-v0 is numpy.float64 while
# Chainer only accepts numpy.float32 by default, specify
# a converter as a feature extractor function phi.
phi = lambda x: x.astype(np.float32, copy=False)

# Now create an agent that will interact with the environment.
agent = chainerrl.agents.DoubleDQN(
    q_func, optimizer, replay_buffer, gamma, explorer,
    replay_start_size=500, update_interval=1,
    target_update_interval=100, phi=phi)
# Start virtual display
from pyvirtualdisplay import Display
display = Display(visible=0, size=(1024, 768))
display.start()
import os
os.environ["DISPLAY"] = ":" + str(display.display) + "." + str(display.screen)
agent.load('agent')
frames = []
for i in range(3):
    obs = env.reset()
    done = False
    R = 0
    t = 0
    while not done and t < 200:
        frames.append(env.render(mode = 'rgb_array'))
        action = agent.act(obs)
        obs, r, done, _ = env.step(action)
        R += r
        t += 1
    print('test episode:', i, 'R:', R)
    agent.stop_episode()
env.render()

import matplotlib.pyplot as plt
import matplotlib.animation
import numpy as np
from IPython.display import HTML

plt.figure(figsize=(frames[0].shape[1] / 72.0, frames[0].shape[0] / 72.0), dpi = 72)
patch = plt.imshow(frames[0])
plt.axis('off')
animate = lambda i: patch.set_data(frames[i])
ani = matplotlib.animation.FuncAnimation(plt.gcf(), animate, frames=len(frames), interval = 50)
HTML(ani.to_jshtml())

Da Fenster sehr unterschiedlich sind, werde ich sie in Enhanced Learning 12 zusammen schreiben.

Eine kleine Zusammenfassung von bis zu 10. Der Kettenstart-Schnellstart war im Allgemeinen gut, mit einigen von mir. Ist Chainerrl ein Wrapper für Chainer? Es ist einfach umzubauen und ich finde es ausgezeichnet. Ich werde in Zukunft Tensorflow verwenden, aber vorerst denke ich, dass ich Chainerrl verwenden werde. Bis zu ungefähr 30 werde ich OpenAI Fitnessstudio machen.

Der Grund für Chainer ist, dass ich hohe Erwartungen an bevorzugte Netzwerke habe. In den USA gibt es ein System, das Forschern wie Google viel Geld gibt, in Japan gibt es jedoch nur wenige. Ein unerforschtes Projekt, das Forschungsgelder als Inkubator bezahlt, hat auch einen Stundenlohn von 1600 Yen. Das bevorzugte Praktikum beträgt 2500 Yen. Darüber hinaus gibt es verschiedene Zulagen. Hier ist ihre Ernsthaftigkeit. Und der Benchmark ist immer hoch. Ich freue mich darauf in der Zukunft.

Recommended Posts

Verstärkungslernen 10 Versuchen Sie es mit einem trainierten neuronalen Netz.
Stärkung des Lernens 8 Versuchen Sie, die Chainer-Benutzeroberfläche zu verwenden
Versuchen Sie, ein Deep Learning / Neuronales Netzwerk mit Scratch aufzubauen
Versuchen Sie, ein neuronales Netzwerk in Python aufzubauen, ohne eine Bibliothek zu verwenden
Versuchen Sie es mit TensorFlow-Part 2-Convolution Neural Network (MNIST).
Lernen eines neuronalen Netzes mit Chainer - Erstellen eines Web-API-Servers
Implementierung eines Faltungs-Neuronalen Netzwerks mit nur Numpy
Implementieren Sie ein dreischichtiges neuronales Netzwerk
Verstärkungslernen 5 Versuchen Sie, CartPole zu programmieren?
Rank Learning über ein neuronales Netzwerk (RankNet-Implementierung von Chainer)
Lernen stärken 13 Probieren Sie Mountain_car mit ChainerRL aus.
Implementierung eines zweischichtigen neuronalen Netzwerks 2
Was ist das Convolutional Neural Network?
Ich habe versucht, ein zweischichtiges neuronales Netzwerk zu implementieren
Ich habe versucht, mit PyBrain verstärkt zu lernen
Erstellen eines Lernmodells mit MNIST
Versuchen Sie, ein neues Bild mit dem trainierten StyleGAN2-Modell zu bearbeiten
Versuchen Sie, eine Blackjack-Strategie zu entwickeln, indem Sie das Lernen stärken ((1) Implementierung von Blackjack)
Überlebensvorhersage unter Verwendung des titanischen neuronalen Netzes von Kaggle [80,8%]
Komponieren Sie mit einem neuronalen Netzwerk! Führen Sie Magenta aus
Implementierung eines 3-Schicht-Neuronalen Netzwerks (kein Lernen)
Versuchen Sie es mit einer probabilistischen Programmiersprache (Pyro).
Implementierung von "verschwommenen" neuronalen Netzen mit Chainer
Einfache Implementierung eines neuronalen Netzwerks mithilfe der Chainer-Datenaufbereitung
Python & Machine Learning Study Memo ③: Neuronales Netz
Versuchen wir die neuronale maschinelle Übersetzung mit Transformer
Versuchen Sie es mit Platypus, einer Mehrzweckoptimierungsbibliothek
Einfache Implementierung eines neuronalen Netzwerks mithilfe der Beschreibung des Chainer-Modells
Probieren Sie den erweiterten Standard-Lernalgorithmus PPO von OpenAI aus
Erstellt ein Bildunterscheidungsmodell (cifar10) unter Verwendung eines Faltungs-Neuronalen Netzwerks
Stärkung des Lernens 11 Probieren Sie OpenAI Acrobot mit ChainerRL aus.
[Deep Learning von Grund auf neu] Anfangswert des Gewichts des neuronalen Netzwerks unter Verwendung der Sigmoid-Funktion
[Python / Maschinelles Lernen] Warum Deep Learning # 1 Perceptron Neural Network
Eine Geschichte über einfaches maschinelles Lernen mit TensorFlow
Experimentieren Sie mit verschiedenen Optimierungsalgorithmen im neuronalen Netz
Eine andere Stilkonvertierungsmethode unter Verwendung des Convolutional Neural Network
Visualisieren Sie die innere Schicht des neuronalen Netzwerks
Versuchen Sie, QR-Code mit Raspberry Pi zu verwenden
Versuchen Sie es mit Sourcetrail, einem Quellcode-Visualisierungstool
Versuchen Sie es mit dem Jupyter Notebook von Azure Machine Learning
Versuchen Sie es mit Tkinter
[Einführung] Stärkung des Lernens
Versuchen Sie es mit Docker-Py
Versuchen Sie es mit einem Ausstecher
Versuchen Sie es mit PDFMiner
Versuchen Sie, eine Blackjack-Strategie zu entwickeln, indem Sie das Lernen stärken (② Registrieren Sie die Umgebung im Fitnessstudio).
Versuchen Sie es mit Geopandas
Versuchen Sie es mit Selen
Versuchen Sie es mit scipy
Zukünftiges Verstärkungslernen_2
Zukünftiges Verstärkungslernen_1
Versuchen Sie es mit pandas.DataFrame
Versuchen Sie es mit Django-Swiftbrowser
Versuchen Sie es mit matplotlib
Versuchen Sie es mit tf.metrics
Versuchen Sie es mit PyODE
[Deep Learning von Grund auf neu] Anfangsgewicht des neuronalen Netzwerks bei Verwendung der Relu-Funktion
Parametrisches neuronales Netzwerk
Trainieren Sie MNIST-Daten mit PyTorch mithilfe eines neuronalen Netzwerks
Versuchen Sie, eine komprimierte Datei mit Python und zlib zu erstellen