Skip to content

從 MDP 到 Reinforcement Learning 更新規則|CMU 10-301 作業 8

2026年8月22日1 分鐘
TL;DRHW8 把 state、action、reward、transition 與 value update 接起來,驗收你能否區分環境動態、policy 與估計誤差。

🌏 English version

官方 handout 完整題名是 Homework 8: Reinforcement Learning,屬於 written+programming。Written 題組包含 synchronous/asynchronous value iteration、演算法比較與選擇、REINFORCE walkthrough、actor-critic/A2C 與 empirical questions;程式要在 Atari Pong 實作 policy/value networks、n-step returns、policy/value loss 與 A2C 訓練。ZIP 提供 agent.py starter、environment.py、utils.py、test_runner.py 與 requirements.txt;本次公開 bundle 未見 reference output,正式 hidden tests 仍在 Gradescope。

先把 MDP 元件分開

逐一寫出 state、action、reward、transition、discount 與 terminal condition。接著才推 Bellman target 或更新規則。最常見錯誤是把 terminal state 繼續 bootstrap、混淆即時 reward 與 return,或用 evaluation 的資料改變 policy。

第一個可執行動作與完成判準

先在 bundle 目錄建立環境並安裝明列依賴:

conda create -n HW8 python=3.12
conda activate HW8
pip install -r requirements.txt

先跑 test_runner.py,再嘗試 Pong training。完成判準是公開 tests 覆蓋的 network shapes、n-step return 與 loss 計算通過,固定 seed 能啟動並持續訓練,且 reward curve 與設定都有紀錄;沒有 reference output 與 hidden tests,不能以單次高分宣稱完成官方驗收。

terminal 不再往後 bootstrap

以下是本文自編的教學例子,不是官方作業答案。

自編兩步軌跡,reward 依序為 1、2,第二步後終止,discount=0.5。第一步 return 是 1+0.5×2=2;最後一步 return 就是 2,沒有下一狀態價值。若錯把 terminal 後的 value=10 接上,最後 target 會變成 2+0.5×10=7。

檢查與答案: discount 改成 1 時,第一步 return 是多少?答案 3;最後一步仍為 2。改 discount 不會取消 terminal boundary。

更新紀錄

  • 2026-10-11:補上自編例子、完整計算或推理,以及理解檢查答案。

參考資料