開始使用免費開始

具經驗回放的 DQN

現在你要加入 Experience Replay,用 Deep Q Network 來訓練一個代理人。你會繼續使用先前建立 Barebone DQN 時用到的 Lunar Lander 環境。

在每一步中,我們不再只用「最近一次轉換」的經驗來更新網路;透過 Experience Replay 緩衝區,代理人可以從「隨機取樣的一批近期經驗」中學習。這能大幅提升它對環境的學習能力。

前面練習中的 QNetwork 和 ReplayBuffer 類別已提供,並已如下建立實例:

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

describe_episode() 函式同樣可用,用於在每個 episode 結束時輸出各項指標。

本練習屬於課程

Python 的深度強化學習

檢視課程

動手互動練習

試著完成這個範例程式碼,體驗一下這個練習。

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)
編輯並執行程式碼