為什麼原版 DQN 過度樂觀
目標 y = r + γ·maxₐ′ Q(s′, a′) 對一堆有雜訊的估計取最大值。由於同一個有雜訊的 Q 既挑選最佳動作、又回報它的值,這個 max 會系統性地落在剛好被高估的那個動作上。這就是最大化偏差(maximization bias);搭配函數近似器,它會累積成對動作值(action-value)的長期高估(overestimation)。
一个网格世界,每个格子显示随智能体探索而不断更新的已学习 Q 值。
Double DQN:把選擇與評估解耦
解方借自表格式的 Double Q-learning:用兩個網路分擔兩件工作。Double DQN讓線上網路選出下一步的最佳動作,卻交給目標網路去評估它。由於兩個網路的誤差不相關,被選中的動作就不再保證是被高估的那一個。
# vanilla DQN target (over-estimates): y = r + gamma * max_a2 Q_target(s2, a2) # Double DQN target (decoupled): a_star = argmax_a2 Q_online(s2, a2) # ONLINE net selects y = r + gamma * Q_target(s2, a_star) # TARGET net evaluates
Double DQN 的目标:在线网络选择下一个动作,目标网络为其打分,从而打破自我确认的最大值。
Dueling 架構:價值 + 優勢
很多時候動作的細節幾乎無關緊要——當你正墜落懸崖時,每個動作都很糟。Dueling 網路架構(dueling network architecture)把輸出頭拆成兩道分流:一個單一的狀態值 V(s) 和每個動作的優勢(advantage) A(s, a),再重組為 Q(s, a) = V(s) + (A(s, a) − meanₐ A(s, a))。
減掉的那個平均值,正是讓這個分解可被唯一辨識的關鍵。好處是:網路可以學到一個狀態是好是壞,而不必先把每個動作的值都釘死,這在動作差異不大的狀態裡能加快學習。
優先經驗回放
均勻回放把每筆轉移都當作同等有用——但一筆充滿意外(TD 誤差很大)的轉移,比一筆代理早已完美預測的轉移教得更多。優先經驗回放(prioritized experience replay, PER)依 TD 誤差大小成比例地抽樣轉移,讓代理更常複習它最大的錯誤。
TD 误差 δ 衡量一次转移的“意外程度”;优先经验回放更频繁地采样 |δ| 较大的转移。
何時該用哪一個
- 看到 Q 值被灌水、漂移?先加 Double DQN——它幾乎零成本,而且幾乎總是有幫助。
- 動作很多,但狀態整體好壞才是重點?Dueling 輸出頭能加速價值學習。
- 在已經學會的轉移上浪費運算?換成優先回放。
- 這三者彼此正交、可乾淨疊加——這正是指南 5 的 Rainbow 所用的組態。