DRL-trainingslus
Om de agent het milieu herhaaldelijk te laten ervaren, moet je een trainingslus opzetten.
Veel DRL-algoritmen delen deze kernstructuur:
- Lus over episodes
- Lus over stappen binnen elke episode
- Kies bij elke stap een actie, bereken het verlies en werk het netwerk bij
Je krijgt tijdelijke functies select_action() en calculate_loss() waarmee de code kan draaien. De Network en optimizer die in de vorige oefening zijn gedefinieerd, zijn ook voor je beschikbaar.
Deze oefening maakt deel uit van de cursus
Deep Reinforcement Learning in Python
Oefeninstructies
- Zorg ervoor dat de buitenste lus (over episodes) tien episodes draait.
- Zorg ervoor dat de binnenste lus (over stappen) loopt totdat de episode is voltooid.
- Voer in de
env-omgeving de actie uit die doorselect_action()is gekozen. - Werk aan het eind van een iteratie van de binnenste lus de state bij voordat je aan de volgende stap begint.
Praktische interactieve oefening
Probeer deze oefening eens door deze voorbeeldcode in te vullen.
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.")