Aan de slagGa gratis aan de slag

DQN met experience replay

Je gaat nu Experience Replay introduceren om een agent te trainen met een Deep Q Network. Je gebruikt dezelfde Lunar Lander-omgeving als bij het bouwen van je Barebone DQN.

In plaats van bij elke stap alleen de leerervaring van de meest recente transitie te gebruiken om het netwerk te updaten, laat de Experience Replay-buffer de agent leren van een willekeurige batch recente ervaringen. Dit verbetert de mogelijkheid om over de omgeving te leren aanzienlijk.

De QNetwork- en ReplayBuffer-klassen uit eerdere oefeningen zijn beschikbaar en als volgt geïnstantieerd:

  • q_network = QNetwork(8, 4)
  • replay_buffer = ReplayBuffer(10000)

De functie describe_episode() is ook weer beschikbaar om aan het einde van elke episode de statistieken te beschrijven.

Deze oefening maakt deel uit van de cursus

Deep Reinforcement Learning in Python

Cursus bekijken

Praktische interactieve oefening

Probeer deze oefening eens door deze voorbeeldcode in te vullen.

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)
Code bewerken en uitvoeren