Rainbow:把改進組合起來
到這裡,你已認識了一整疊對原版 DQN 各自獨立的升級。Rainbow的洞見是:它們大多彼此正交,可以合併進單一代理——而且這麼做的表現勝過其中任何一個單獨使用。
- Double Q-learning——移除高估偏差。
- Dueling 架構——分開價值與優勢分流。
- 優先回放——複習高 TD 誤差的轉移。
- 多步(n 步)回報——從往後好幾步來自舉。
- 分布式 RL(C51)——學習回報分布。
- 噪聲網路——學習而來、依狀態而定的探索。
Rainbow 的每个组件都在改造这同一个时序差分更新——改变其中的最大值、回报或自举目标。
每種成分真正的貢獻
Rainbow 論文做了一次消融實驗:每次移除一個元件,觀察分數下滑。下滑最猛的來自優先回放、多步回報,以及分布式輸出頭;Double Q-learning和 Dueling 在疊加於其他元件之上時幫助較小(它們的功能與分布式觀點部分重疊)。
部分可觀測性與循環回放
影格堆疊能處理短期記憶,但四個影格記不住十秒前發生的事。許多真實任務其實是部分可觀測 MDP(partially observable MDP, POMDP):最佳動作取決於歷史,而不只是當前觀測。原理上的解法是維護一個信念狀態(belief state)——對目前為止所見一切的滾動摘要。
循環回放(recurrent replay)(即 R2D2 代理)給網路一個 LSTM,讓它把隱藏狀態跨時間攜帶,並在緩衝區裡儲存序列而非單步轉移。有個眉角:很久以前記下的隱藏狀態,等你回放時已經過時,所以 R2D2 會儲存隱藏狀態,並「燒入(burn-in)」幾步暖身,讓循環記憶重新同步後再計算損失。
一个循环网络沿多个时间步展开,将隐藏状态向前传递。
實務訓練筆記
- 為規模做預算:Atari 的結果是建立在數千萬影格之上。如果學得慢,先懷疑緩衝區太小或目標同步太罕見,再去怪演算法。
- 盯著 Q 值看,不要只看分數。Q 值穩定攀升後爆炸,是發散的經典徵兆。
- 一次只加一個元件並做消融。一個莫名表現不佳的 Rainbow,通常是某個元件接錯線。
- 讓緩衝區配合任務:稀疏獎勵用優先回放,部分可觀測用循環(序列)回放。
接下來往哪走
你現在握有現代以價值為基礎的根基:在像素上的深度 RL,靠回放與目標網路穩定,靠 Double/Dueling/PER 銳化,靠分布式學習與噪聲探索豐富,並在 Rainbow 中統合,再以循環記憶應對 POMDP。
强化学习循环:智能体执行动作,环境返回下一状态和奖励。