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 與循環回放:把一切組合起來,再處理記憶與部分可觀測性。