開始使用免費開始

DRL 訓練迴圈

為了讓代理人能反覆體驗環境,你需要建立一個訓練迴圈。

許多 DRL 演算法共用以下核心結構:

  1. 逐一執行多個 episode
  2. 在每個 episode 中逐步執行多個 step
  3. 每個 step:選擇動作、計算 loss,並更新網路

已提供 select_action() 與 calculate_loss() 這兩個佔位函式,讓程式碼可以執行。你也可以使用前一個練習中定義的 Network 與 optimizer。

本練習屬於課程

Python 的深度強化學習

檢視課程

練習說明

  • 確保外層迴圈(遍歷 episodes)執行 10 個 episode。
  • 確保內層迴圈(遍歷 steps)持續執行,直到該 episode 結束。
  • 在 env 環境中執行 select_action() 選出的動作。
  • 在每次內層迴圈結束時,開始下一個 step 前先更新 state。

動手互動練習

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

env = gym.make("LunarLander-v2")
# Run ten episodes
for episode in ____:
    state, info = env.reset()
    done = False    
    # Run through steps until done
    while ____:
        action = select_action(network, state)        
        # Take the action
        next_state, reward, terminated, truncated, _ = ____
        done = terminated or truncated        
        loss = calculate_loss(network, state, action, next_state, reward, done)
        optimizer.zero_grad()
        loss.backward()
        optimizer.step()        
        # Update the state
        state = ____
    print(f"Episode {episode} complete.")
編輯並執行程式碼