DQN avec expérience de relecture
Vous allez maintenant présenter Experience Replay afin de former un agent à l'aide d'un réseau Deep Q. Vous utiliserez le même environnement Lunar Lander que celui utilisé pour construire votre Barebone DQN.
À chaque étape, au lieu d'utiliser uniquement les enseignements tirés de la transition la plus récente pour mettre à jour le réseau, le tampon Experience Replay permet à l'agent d'apprendre à partir d'un lot aléatoire d'expériences récentes. Cela améliore considérablement sa capacité à apprendre sur son environnement.
Les classes QNetwork et ReplayBuffer des exercices précédents sont à votre disposition et ont été instanciées comme suit :
q_network = QNetwork(8, 4)replay_buffer = ReplayBuffer(10000)
La fonction « describe_episode() » est également disponible pour décrire les métriques à la fin de chaque épisode.
Cet exercice fait partie du cours
<cours>Apprentissage par renforcement profond en Python</cours>Exercice interactif pratique
Essayez cet exercice en complétant ce code d’exemple.
for episode in range(10):
state, info = env.reset()
done = False
step = 0
episode_reward = 0
while not done:
step += 1
q_values = q_network(state)
action = torch.argmax(q_values).item()
next_state, reward, terminated, truncated, _ = env.step(action)
done = terminated or truncated
# Store the latest experience in the replay buffer
replay_buffer.____
state = next_state
episode_reward += reward
describe_episode(episode, reward, episode_reward, step)