JOVANA
Explore Library Glossary Getting Started Three Levels Fields How it works Mission
Join the mission
All guides

修正高估:Double、Dueling 與更聰明的回放

原版 DQN 天生偏向過度樂觀。三個對症下藥的升級,讓它的價值估計變誠實、學習更銳利。

為什麼原版 DQN 過度樂觀

目標 y = r + γ·maxₐ′ Q(s′, a′) 對一堆有雜訊的估計取最大值。由於同一個有雜訊的 Q 既挑選最佳動作、又回報它的值,這個 max 會系統性地落在剛好被高估的那個動作上。這就是最大化偏差(maximization bias);搭配函數近似器,它會累積成對動作值(action-value)的長期高估(overestimation)

网格世界上的交互式 Q-learning:观察价值如何从 DQN 继承的“对动作取最大值”目标中传播——而这一步正是过度乐观的来源。

一个网格世界,每个格子显示随智能体探索而不断更新的已学习 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
只改一行:把「誰挑動作」和「誰打分數」分開。
y = r + \gamma\, Q\!\left(s',\; \operatorname*{arg\,max}_{a'} Q(s', a'; \theta);\; \theta^{-}\right)

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 誤差大小成比例地抽樣轉移,讓代理更常複習它最大的錯誤。

\delta = r + \gamma \max_{a'} Q(s', a'; \theta^{-}) - Q(s, a; \theta)

TD 误差 δ 衡量一次转移的“意外程度”;优先经验回放更频繁地采样 |δ| 较大的转移。

何時該用哪一個

  1. 看到 Q 值被灌水、漂移?先加 Double DQN——它幾乎零成本,而且幾乎總是有幫助。
  2. 動作很多,但狀態整體好壞才是重點?Dueling 輸出頭能加速價值學習。
  3. 在已經學會的轉移上浪費運算?換成優先回放。
  4. 這三者彼此正交、可乾淨疊加——這正是指南 5 的 Rainbow 所用的組態。