Boucle d'entraînement DRL
Pour permettre à l'agent d'explorer l'environnement à répétition, vous devez mettre en place une boucle d'entraînement.
Beaucoup d'algorithmes de DRL partagent cette structure de base :
- Boucler sur les épisodes
- Boucler sur les étapes à l'intérieur de chaque épisode
- À chaque étape, choisir une action, calculer la perte et mettre à jour le réseau
On vous fournit des fonctions provisoires select_action() et calculate_loss() pour que le code s'exécute. Le Network et l'optimizer définis dans l'exercice précédent sont aussi à votre disposition.
Cette activité fait partie du cours
Deep Reinforcement Learning en Python
Instructions de l’exercice
- Assurez-vous que la boucle externe (sur les épisodes) s'exécute pendant dix épisodes.
- Assurez-vous que la boucle interne (sur les étapes) s'exécute jusqu'à la fin de l'épisode.
- Effectuez l'action sélectionnée par
select_action()dans l'environnementenv. - À la fin de chaque itération de la boucle interne, mettez l'état à jour avant de commencer l'étape suivante.
Exercice interactif pratique
Essayez cet exercice en complétant ce code d’exemple.
env = gym.make("LunarLander-v2")
# Run ten episodes
for episode in ____:
state, info = env.reset()
done = False
# Run through steps until done
while ____:
action = select_action(network, state)
# Take the action
next_state, reward, terminated, truncated, _ = ____
done = terminated or truncated
loss = calculate_loss(network, state, action, next_state, reward, done)
optimizer.zero_grad()
loss.backward()
optimizer.step()
# Update the state
state = ____
print(f"Episode {episode} complete.")