HW3 — DQN 及其變體

Deep Reinforcement Learning in Action 第三章 Gridworld 為底,三階段實作並比較 DQN 的演進。

GitHub 原始碼 · PyTorch 2.5 + Lightning 2.6 · Windows / CPU 全程可重現

HW3-1 · Naive DQN + Experience Replay static 模式

Naive DQN 學習曲線
有 / 無 Experience Replay 的回合獎勵比較(100 回合移動平均)。
Naive DQN 勝率
最後 200 回合勝率 ≈ 99%
Naive DQN rollout
訓練完成的 Q-network 從起點走到 goal(7 步)。

HW3-2 · Double DQN 與 Dueling DQN player 模式 player 模式

三種 variant 學習曲線
Vanilla / Double / Dueling DQN 的每回合獎勵。
三種 variant 勝率
三者最終皆收斂至勝率 1.00
Dueling DQN rollout
Dueling DQN 於 player 模式下的一回合 greedy rollout。
改進重點
Double DQN online 網路挑動作、target 網路估值 ⇒ 緩解 max-operator 帶來的過度估計偏差。
Dueling DQN 拆成 V(s) + A(s, a) 兩個分支 ⇒ 即使各動作 Q 值差很小,也能正確學到「這個狀態本身多好」。

HW3-3 · PyTorch Lightning + Training Tips random 模式

Lightning 學習曲線
Dueling Double DQN + 穩定性技巧的學習曲線。
Lightning 勝率
最後 300 回合勝率 ≥ 60%(random mode 上限本身較低)。
Lightning rollout
隨機關卡下的 greedy rollout。

加入的訓練技巧

技巧設定為什麼有用
梯度裁剪gradient_clip_val = 1.0避免 Q-learning 早期目標震盪造成的梯度爆炸
Cosine LR annealing1e-3 → 1e-5末期細調 Q 值,避免 overshoot
Target soft updateτ = 0.005(每步)比 hard sync 更平滑,顯著減少訓練中途崩潰
ε 指數衰減0.05 + 0.95·exp(−3·t/5000)前期快探索、中期迅速收斂、後期仍保留少量探索
Warm-up buffer500 步才開始更新避免過早以偏誤樣本更新網路

結論