具經驗回放的 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)