官方 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:補上自編例子、完整計算或推理,以及理解檢查答案。
參考資料
Loading...