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

為什麼需要深度強化學習?從 Q 表到 Q 網路

當狀態是一整個畫面的像素時,查表法救不了你。看看由神經網路接手後會發生什麼改變。

查表法撞上的那堵牆

經典的表格式 Q-learning為每一組(狀態、動作)保存一個數字。當狀態只有幾百個時,這很美好。但把鏡頭對準一個 Atari 畫面,單一影格就有 210×160 個像素——可能的畫面多到以兆計。地球上沒有任何一張表能為每個畫面存一列,而且你也永遠不會看到完全相同的狀態兩次。

网格世界上的交互式表格型 Q 学习:每个状态-动作格子存一个值——在这里够用,可一旦状态变成整屏像素就无能为力。

一个小网格,每个格子显示随智能体探索而更新的动作价值。

解方是泛化(generalization):與其死記每個值,不如學一個函數,把狀態映射到動作值,並在相似的狀態之間共享學到的東西。這就是函數近似(function approximation);當這個函數是一個深度神經網路時,我們就把整件事稱為深度強化學習(deep reinforcement learning)

「深度」到底買到了什麼

深度網路是一個可學習的特徵抽取器。前面的卷積層會發現邊緣,接著是會動的物件,再來是與遊戲相關的概念,例如「球正往左飛」——這些都不需要任何人手寫程式碼。然後你早已熟悉的同一套Q-learning更新,就跑在這些特徵之上。

卷积流水线把原始像素变成与游戏相关的特征——这正是深度强化学习所依赖的可学习特征提取器。

图像经过卷积和池化层变成紧凑的特征向量,再送入分类器。

Atari 這個挑戰

點燃深度 RL 的基準,是建立在街機學習環境(Arcade Learning Environment)上的 Atari 基準(Atari benchmark):約 57 款遊戲、一套網路架構,輸入只有像素和分數。不允許針對個別遊戲調參——同一個代理必須學會打磚塊、乒乓和太空侵略者。

單一影格不足以當作狀態:從一張靜止影像你分不出球往哪個方向移動。標準技巧是影格堆疊(frame stacking)——把最近 4 個影格一起餵進去,讓速度與方向對網路而言變得可見。這是一個便宜又實用的辦法,把一個近乎部分可觀測(partially observable)的問題變得像具有馬可夫性質。

陷阱:天真的深度 Q-learning 會崩掉

如果你只是把 Q 表換成網路再跑 Q-learning,它通常會發散——值爆掉、代理遺忘、訓練劇烈震盪。罪魁禍首是致命三要素(deadly triad):把函數近似、自舉(用自己的預測來學習)以及離策略更新三者結合,穩定性就不再有保證。

Q(s,a) \leftarrow Q(s,a) + \alpha\,\big[\, r + \gamma \max_{a'} Q(s',a') - Q(s,a) \,\big]

自举的 Q 学习目标会重用网络自身的估计——这正是让朴素深度 Q 学习发散的“致命三要素”之一。

接下來的路

  1. 指南 2——DQN 配方:經驗回放 + 目標網路,這兩個點子才讓深度 Q-learning 第一次穩定下來。
  2. 指南 3——修正高估:Double DQN、Dueling 架構,以及優先回放。
  3. 指南 4——超越期望值:分布式 RL(C51、QR-DQN)與噪聲網路探索。
  4. 指南 5——Rainbow 與循環回放:把一切組合起來,再處理記憶與部分可觀測性。