Deep Q-Networks/zh
| Article | |
|---|---|
| Topic area | Reinforcement Learning |
| Prerequisites | Neural Networks, Stochastic Gradient Descent, Backpropagation |
概述
深度 Q 網絡(DQN)是一種強化學習算法,它將經典的 Q 學習與作為函數逼近器的深度神經網絡相結合。該方法由 Mnih 等人於 2013 年提出,並在 2015 年發表於 Nature 的論文中得到完善:一個統一的架構直接以原始像素和遊戲分數作為輸入,學會了以人類水平玩 49 款 Atari 2600 遊戲。[1] DQN 證明了同一個網絡通過隨機梯度下降進行端到端訓練,便可掌握各種各樣的任務,無需針對具體任務進行特徵工程,並因此被廣泛視為開啟了深度強化學習的現代紀元。
其核心思想是用一個參數化的神經網絡 $ Q(s, a; \theta) $ 來逼近最優動作價值函數 $ Q^*(s, a) $——即在狀態 $ s $ 下採取動作 $ a $、此後遵循最優策略所能獲得的期望折扣回報。兩項工程上的關鍵技術——經驗回放與周期性更新的目標網絡——穩定了訓練過程,避免了以往將 Q 學習與非線性函數逼近器相結合時長期存在的發散問題。
背景:Q 學習
強化學習問題通常被形式化為一個馬爾可夫決策過程,包含狀態 $ s \in \mathcal{S} $、動作 $ a \in \mathcal{A} $、獎勵 $ r $ 以及折扣因子 $ \gamma \in [0, 1) $。最優動作價值函數滿足貝爾曼最優方程:
- $ {\displaystyle Q^*(s, a) = \mathbb{E}_{s'} \left[ r + \gamma \max_{a'} Q^*(s', a') \mid s, a \right]} $
表格化的 Q 學習通過採樣得到的轉移 $ (s, a, r, s') $ 迭代更新估計 $ Q(s, a) $:
- $ {\displaystyle Q(s, a) \leftarrow Q(s, a) + \alpha \left[ r + \gamma \max_{a'} Q(s', a') - Q(s, a) \right]} $
在每個狀態-動作對都被無限次訪問的溫和條件下,該過程收斂到 $ Q^* $;但表格化方法在大規模或連續狀態空間中並不可行。自然的做法是用參數化函數 $ Q(s, a; \theta) $ 替代表格,並通過梯度下降來學習參數——這種做法在使用非線性逼近器時,實際上可能發散。DQN 的貢獻正是一套使該做法能夠可靠運作的穩定化技巧。
DQN 算法
DQN 用一個卷積神經網絡對 $ Q(s, a; \theta) $ 進行參數化,其輸入為若干最近觀測的堆疊(對於 Atari 而言為連續四幀灰度圖像),輸出為一個Q 值向量,每個離散動作對應一個分量。在每一步與環境的交互中,智能體按照epsilon 貪婪策略選擇動作:以概率 $ \epsilon $ 在所有動作中均勻隨機採樣,否則選擇 $ \arg\max_a Q(s, a; \theta) $。探索率 $ \epsilon $ 在最初的數百萬幀內由 1.0 退火至一個較小的終值(通常為 0.1 或 0.05)。
轉移 $ (s, a, r, s') $ 被存入經驗回放緩衝區,並從中採樣一個由過去轉移組成的小批量來執行梯度更新。Q 網絡的訓練目標是最小化其預測與一個由自身的緩慢更新副本計算得到的自舉目標之間的時序差分誤差。
經驗回放
經驗回放緩衝區是一個固定容量的循環存儲結構,通常保留最近 $ 10^6 $ 條轉移。每一步梯度更新都從該緩衝區中均勻隨機採樣一個小批量,而不是使用最新的轉移。此舉解決了在線學習面對相關軌跡時的三個問題:
- 樣本效率 —— 每條轉移都可以參與多次梯度更新。
- 去相關 —— 相鄰的轉移高度相關;採樣打破了這種依賴關係,使數據更接近獨立同分布,這正是隨機梯度下降所假定的條件。
- 平滑 —— 訓練數據的分布變化更為平緩,減少了振盪和反饋循環,避免最近一次策略變化使下一批數據偏向相似狀態。
隨後,優先經驗回放對該方案進行了改進,按照TD 誤差的絕對值大小成比例地採樣轉移,使學習更多聚焦於令人意外的經驗。[2]
目標網絡
如果自舉目標 $ r + \gamma \max_{a'} Q(s', a'; \theta) $ 用與正在更新的同一組參數來計算,那麼每一次梯度更新都會改變它所追逐的目標——這是一個移動目標問題,常常導致發散。DQN 為此引入了一個獨立的目標網絡,其參數 $ \theta^- $ 在 $ C $ 步(通常為 10 000 步)內保持不變,之後再從在線網絡中拷貝過來。於是目標變為:
- $ {\displaystyle y = r + \gamma \max_{a'} Q(s', a'; \theta^-)} $
將目標與當前在用參數解耦,可以顯著提升穩定性,代價是學習略慢,因為目標落後於最新的知識。
損失函數與訓練
對採樣得到的小批量 $ \mathcal{B} $,損失為均方TD 誤差:
- $ {\displaystyle \mathcal{L}(\theta) = \mathbb{E}_{(s, a, r, s') \sim \mathcal{B}} \left[ \left( r + \gamma \max_{a'} Q(s', a'; \theta^-) - Q(s, a; \theta) \right)^2 \right]} $
對終止轉移,捨去自舉項:$ y = r $。梯度僅相對 $ \theta $ 求取——目標參數 $ \theta^- $ 視為常量。最初的 DQN 論文使用了 RMSProp 優化器、梯度裁剪(將平方誤差項裁剪到 $ [-1, 1] $,等價於在線性區間之外使用Huber 損失)以及跳幀(智能體每四幀選擇一次動作,並在其間的幀中重複執行)。
偽代碼如下:
初始化在线网络 theta 与目标网络 theta_minus = theta
初始化经验回放缓冲区 D
for episode = 1 to M:
观测 s
当未到达终止状态:
以概率 epsilon 随机选取动作 a,否则 a = argmax Q(s, a; theta)
执行 a,观测 r 与 s'
将 (s, a, r, s') 存入 D
从 D 中采样一个小批量
计算目标 y 并对 theta 执行一次梯度更新
每 C 步: theta_minus <- theta
s <- s'
變體與擴展
隨後湧現的一批工作針對原始 DQN 的具體失效模式進行了改進:
- Double DQN —— 使用在線網絡選擇下一動作,再用目標網絡對其進行評估,從而緩解最大化算子導致的 Q 值系統性高估。[3]
- Dueling DQN —— 將 $ Q(s, a) $ 分解為狀態價值 $ V(s) $ 與動作優勢 $ A(s, a) $,使網絡可以在不學習每個動作具體作用的情況下評估狀態價值。[4]
- 優先經驗回放 —— 見上文。
- 多步回報 —— 用 $ n $ 步回報替代單步自舉,在偏差與方差之間作權衡。
- 分布式 DQN(C51) —— 預測回報的分布而不僅僅是其期望值,從而捕捉與風險相關的信息。[5]
- Noisy Nets —— 用施加在網絡權重上的參數化噪聲替代epsilon 貪婪策略,提供與狀態相關的探索。
- Rainbow —— 將上述六種改進集成到單一智能體之中,性能顯著優於其中任何一項單獨使用。[6]
與策略梯度方法的比較
DQN 屬於基於價值的方法:它學習一個 Q 函數,並通過貪婪選擇動作得到策略。由於 $ \max_{a'} $ 算子在連續動作空間上不可解,DQN 僅適用於離散動作空間。而策略梯度方法——如 REINFORCE、A2C 和 PPO——則直接對策略進行參數化,並通過對期望回報進行梯度上升來對其進行優化。演員-評論家方法把二者結合起來,在學習策略的同時學習一個價值基線。對於連續控制,標準做法是採用確定性的演員-評論家方法(如 DDPG),它可以視為 DQN 在連續動作上的對應版本:用一個學習得到的演員網絡的輸出取代離散的 max 操作。
局限性
DQN 繼承了離策略自舉的脆弱性。當環境、回放緩衝區中的內容與移動目標之間相互作用不佳時,訓練可能不穩定;細微的實現細節(損失函數、優化器、網絡架構、探索計劃)都會對最終性能產生可觀察的影響。該算法的樣本效率也較低:在 Atari 上通常需要數千萬幀,遠多於人類玩家所需的數據量。在不加修改的情況下,離散動作限制了它在連續控制中的適用性。最後,函數逼近、自舉與離策略學習共同構成了 Sutton 與 Barto 所稱的致命三元組——已知該組合會破壞表格化情形下的收斂保證,而 DQN 的穩定化技巧只是經驗性的啟發式方法,並非嚴格的收斂證明。
參見
- Neural Networks
- Convolutional Neural Networks
- Stochastic Gradient Descent
- Backpropagation
- Loss Functions
參考文獻
- ↑ Mnih, V. et al. (2015). "Human-level control through deep reinforcement learning". Nature 518, 529–533.
- ↑ Schaul, T., Quan, J., Antonoglou, I. and Silver, D. (2016). "Prioritized Experience Replay". ICLR.
- ↑ van Hasselt, H., Guez, A. and Silver, D. (2016). "Deep Reinforcement Learning with Double Q-learning". AAAI.
- ↑ Wang, Z. et al. (2016). "Dueling Network Architectures for Deep Reinforcement Learning". ICML.
- ↑ Bellemare, M. G., Dabney, W. and Munos, R. (2017). "A Distributional Perspective on Reinforcement Learning". ICML.
- ↑ Hessel, M. et al. (2018). "Rainbow: Combining Improvements in Deep Reinforcement Learning". AAAI.