Boucle de formation DRL
Afin de permettre à l'agent d'expérimenter l'environnement à plusieurs reprises, il est nécessaire de configurer une boucle d'entraînement.
De nombreux algorithmes DRL partagent cette structure fondamentale :
- Parcourir les épisodes
- Parcourir les étapes de chaque épisode
- À chaque étape, sélectionnez une action, calculez la perte et mettez à jour le réseau.
Vous disposez des fonctions d'select_action(), calculate_loss() qui permettent au code de s'exécuter. Les variables Network et optimizer définies lors de l'exercice précédent sont également à votre disposition.
Cet exercice fait partie du cours
Apprentissage par renforcement profond en Python
Instructions
- Veuillez vous assurer que la boucle externe (sur les épisodes) s'exécute pendant dix épisodes.
- Veuillez vous assurer que la boucle interne (sur les étapes) s'exécute jusqu'à ce que l'épisode soit terminé.
- Veuillez effectuer l'action sélectionnée par
select_action()dans l'environnementenv. - À la fin d'une itération de boucle interne, veuillez mettre à jour l'état avant de passer à l'étape suivante.
Exercice interactif pratique
Essayez cet exercice en complétant cet exemple de code.
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.")