Je n'avais qu'une image de renforcement de l'apprentissage, alors je l'ai essayé pour le moment. Cette fois, nous exécutons l'algorithme d'apprentissage amélioré sur un outil appelé OpenAI Gym.
J'essaie juste de le déplacer pour le moment, donc je n'ai pas expliqué en détail l'algorithme d'apprentissage par renforcement.
――Je veux réellement déplacer l'apprentissage par renforcement
L'apprentissage intensifié est un mécanisme qui apprend des actions pour maximiser les récompenses par essais et erreurs dans un certain environnement **. Avec l'avènement de l'apprentissage profond, vous pouvez faire plus, et le célèbre AlphaGo utilise également l'apprentissage amélioré.
OpenAI Gym est un outil pour développer / comparer des algorithmes d'apprentissage améliorés. Vous pouvez essayer l'algorithme d'apprentissage amélioré dans divers environnements tels que les bâtons, l'alpinisme en voiture et les envahisseurs de l'espace.
Référence: Liste des environnements pouvant être utilisés avec Gym
Pour le moment, déplaçons la salle de gym. Ici, il est utilisé dans un environnement de support de bâton.
L'action (de déplacer l'endroit où se trouve le bâton vers la gauche ou la droite) est décidée au hasard.
import gym
#Génération d'environnement
env = gym.make('CartPole-v0')
for i_episode in range(20):
#Initialisez l'environnement et obtenez l'observation
observation = env.reset()
for t in range(100):
env.render()
print(observation)
#Décision d'action(Aléatoire)
action = env.action_space.sample()
#Obtenez des données après l'action
observation, reward, done, info = env.step(action)
if done:
print("Episode finished after {} timesteps".format(t+1))
break
env.close()
Puisque l'action est décidée au hasard, elle s'effondrera immédiatement.
Utilisez ensuite l'algorithme d'apprentissage amélioré pour sélectionner l'action. Cette fois, nous nous entraînerons à l'aide d'un algorithme appelé DQN (Deep Q-Learning).
Utilisez keras-rl pour la bibliothèque d'apprentissage améliorée. Cependant, veuillez noter que si vous utilisez ** Keras intégré à partir de tensorflow 2, vous devez utiliser keras-rl2 **.
La version de la bibliothèque utilisée cette fois est la suivante.
keras-rl2==1.0.4
tensorflow==2.3.0
Apprenons en fait à utiliser DQN.
Un épisode correspond à la fin du stand de bâton, et une action pour déplacer l'endroit où se tient le bâton vers la gauche ou la droite correspond à un pas. Ici, nous formerons jusqu'à 50 000 pas.
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
#Génération d'environnement
env = gym.make('CartPole-v0')
nb_actions = env.action_space.n
#Définition du modèle
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'))
#Paramètres de l'agent
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'])
#Apprentissage
dqn.fit(env, nb_steps=50000, visualize=True, verbose=2)
#Tester le modèle
dqn.test(env, nb_episodes=5, visualize=True)
Après avoir appris 64 épisodes ...
Après avoir appris 216 épisodes ...
Suite à l'apprentissage de 50 000 pas, il est devenu possible de tenir un bâton de manière stable comme suit.
Même chez kaggle, qui est une plate-forme pour les compétitions d'apprentissage automatique, il y avait une compétition dans laquelle des modèles formés à l'apprentissage intensif se faisaient concurrence.
Cette compétition est dans un format appelé Connect Four, dans lequel les agents formés se battent les uns contre les autres pour déterminer le taux et le rang. C'est assez intéressant de laisser l'agent que vous avez créé se battre, alors essayez-le.
Il y a aussi une conférence en kaggle où vous pouvez apprendre l'IA de jeu et un apprentissage amélioré grâce au concours Connect X, donc je pense que c'est une bonne idée de l'essayer à partir d'ici. Learn Intro to Game AI and Reinforcement Learning Tutorials | Kaggle
À l'avenir, j'aimerais bien comprendre l'algorithme à l'intérieur.
Recommended Posts