Zacznij terazZacznij za darmo

DQN z powtarzaniem doświadczeń

Teraz wprowadzisz mechanizm powtarzania doświadczeń (Experience Replay), aby wytrenować agenta przy użyciu głębokiej sieci Q. Użyjesz tego samego środowiska Lunar Lander, co podczas budowania podstawowego DQN.

W każdym kroku, zamiast aktualizować sieć wyłącznie na podstawie ostatniego przejścia, bufor powtarzania doświadczeń pozwala agentowi uczyć się z losowej paczki ostatnich doświadczeń. Znacznie poprawia to zdolność agenta do poznawania środowiska.

Klasy QNetwork i ReplayBuffer z poprzednich ćwiczeń są dostępne i zostały zainicjalizowane w następujący sposób:

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

Funkcja describe_episode() jest również dostępna – służy do wyświetlania metryk na końcu każdego epizodu.

To ćwiczenie jest częścią kursu

Głębokie uczenie ze wzmocnieniem w Pythonie

Zobacz kurs

Interaktywne ćwiczenie praktyczne

Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.

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)
Edytuj i uruchom kod