Ich hatte nur ein Bild davon, das Lernen zu stärken, also habe ich es vorerst tatsächlich versucht. Dieses Mal führen wir den erweiterten Lernalgorithmus auf einem Tool namens OpenAI Gym aus.
Ich versuche nur, es vorerst zu verschieben, daher habe ich den Algorithmus zum Lernen der Verstärkung nicht im Detail erklärt.
――Ich möchte das Lernen der Verstärkung tatsächlich verschieben
Intensiviertes Lernen ist ein Mechanismus, der Aktionen lernt, um die Belohnungen durch Ausprobieren in einer bestimmten Umgebung zu maximieren **. Mit dem Aufkommen des tiefen Lernens kann mehr getan werden, und das berühmte AlphaGo verwendet auch verbessertes Lernen.
OpenAI Gym ist ein Tool zum Entwickeln / Vergleichen erweiterter Lernalgorithmen. Sie können den erweiterten Lernalgorithmus in verschiedenen Umgebungen wie Stockständen, Bergsteigen mit dem Auto und Space Invaders ausprobieren.
Referenz: Liste der Umgebungen, die mit dem Fitnessstudio verwendet werden können
Lassen Sie uns vorerst das Fitnessstudio bewegen. Hier wird es in einer Stockstandumgebung betrieben.
Die Aktion (ob die Stelle, an der der Stock steht, nach links oder rechts verschoben werden soll) wird nach dem Zufallsprinzip festgelegt.
import gym
#Umweltgenerierung
env = gym.make('CartPole-v0')
for i_episode in range(20):
#Initialisieren Sie die Umgebung und erhalten Sie Obsersavation
observation = env.reset()
for t in range(100):
env.render()
print(observation)
#Handlungsentscheidung(zufällig)
action = env.action_space.sample()
#Daten nach Aktion abrufen
observation, reward, done, info = env.step(action)
if done:
print("Episode finished after {} timesteps".format(t+1))
break
env.close()
Da die Aktion zufällig entschieden wird, wird sie sofort zusammenbrechen.
Verwenden Sie dann den erweiterten Lernalgorithmus, um die Aktion auszuwählen. Dieses Mal werden wir mit einem Algorithmus namens DQN (Deep Q-Learning) trainieren.
Verwenden Sie keras-rl für die erweiterte Lernbibliothek. Beachten Sie jedoch, dass Sie Keras-rl2 ** verwenden müssen, wenn Sie Keras verwenden, das aus ** tensorflow 2 integriert ist.
Die diesmal verwendete Version der Bibliothek lautet wie folgt.
keras-rl2==1.0.4
tensorflow==2.3.0
Lassen Sie uns tatsächlich mit DQN lernen.
Eine Episode entspricht dem Ende des Stockständers, und eine Aktion zum Verschieben der Stelle, an der der Stock nach links oder rechts steht, entspricht einem Schritt. Hier werden wir bis zu 50.000 Schritte trainieren.
import gym
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Activation, Flatten
from tensorflow.keras.optimizers import Adam
from rl.agents.dqn import DQNAgent
from rl.policy import BoltzmannQPolicy
from rl.memory import SequentialMemory
#Umweltgenerierung
env = gym.make('CartPole-v0')
nb_actions = env.action_space.n
#Modelldefinition
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'))
#Agenteneinstellungen
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'])
#Lernen
dqn.fit(env, nb_steps=50000, visualize=True, verbose=2)
#Testen Sie das Modell
dqn.test(env, nb_episodes=5, visualize=True)
Nach dem Lernen von 64 Folgen ...
Nach dem Lernen von 216 Folgen ...
Durch das Erlernen von 50.000 Schritten wurde es möglich, einen Stock wie folgt stabil zu halten.
Selbst bei kaggle, einer Plattform für Wettbewerbe zum maschinellen Lernen, gab es einen Wettbewerb, bei dem in intensivem Lernen trainierte Modelle gegeneinander antreten.
Dieser Wettbewerb findet in einem Format namens Connect Four statt, in dem die ausgebildeten Agenten gegeneinander kämpfen, um die Rate und den Rang zu bestimmen. Es ist ziemlich interessant, den Agenten, den Sie gemacht haben, kämpfen zu lassen, also versuchen Sie es bitte.
Es gibt auch einen Vortrag in Kaggle, in dem Sie durch den Connect X-Wettbewerb Spiel-KI und verbessertes Lernen lernen können. Ich denke, es ist eine gute Idee, es von hier aus zu versuchen. Learn Intro to Game AI and Reinforcement Learning Tutorials | Kaggle
In Zukunft möchte ich den Algorithmus im Inneren genau verstehen.
Recommended Posts