訓練最精簡版 DQN
現在要在 Lunar Lander 環境中訓練一個最精簡版(Barebone)的 DQN 演算法。請記得這仍是基礎版,所以表現不會太好,但你之後會逐步改進。
就把它當作讓你的 Lunar Lander 成功在月球著陸的第一步吧!
你先前定義好的 q_network 實例已經可以使用。
在本課程的各個練習中,你的 Python 環境也提供 describe_episode() 函式,用來在每個 episode 結束時列印一些資訊,說明代理在該回合的表現。
本練習屬於課程
Python 的深度強化學習
練習說明
- 在內層迴圈中選出代理的動作。
- 計算 loss。
- 執行一次梯度下降步驟來更新網路權重。
動手互動練習
試著完成這個範例程式碼,體驗一下這個練習。
for episode in range(10):
state, info = env.reset()
done = False
step = 0
episode_reward = 0
while not done:
step += 1
# Select the action
action = ____(____, ____)
next_state, reward, terminated, truncated, _ = (env.step(action))
done = terminated or truncated
# Calculate the loss
loss = ____(q_network, state, action, next_state, reward, done)
optimizer.zero_grad()
# Perform a gradient descent step
loss.____
optimizer.____
state = next_state
episode_reward += reward
describe_episode(episode, reward, episode_reward, step)