太空侵略者的深度 Q 學習

深度 Q 學習(DQN)透過以神經網路取代傳統的 Q 表,使強化學習代理能在具有龐大狀態空間的環境中運作。此方法讓代理能學習複雜任務,例如玩 Atari 遊戲《太空侵略者》,其可能的狀態數量過於龐大,無法以表格方式處理。

從 Q 學習到深度 Q 學習

傳統的 Q 學習是一種表格方法,使用 Q 表來儲存每個可能的狀態-動作對的價值。雖然在小型環境(例如具有 14 個狀態的 FrozenLake 或具有 500 個狀態的 Taxi-v3)中有效,但無法擴展至複雜環境。

在 Atari 環境中,觀測空間為 (210, 160, 3),像素值介於 0 到 255,導致狀態空間為 $256^{100800}$。由於為如此多的狀態建立表格是不可能的,深度 Q 學習使用參數化的 Q 函數 $Q_{\theta}(s, a)$——一個神經網路,用於近似在給定狀態下每個可能動作的 Q 值。

深度 Q 網路(DQN)架構

DQN 架構以四張預處理過的影格堆疊作為輸入,並輸出每個可能動作的 Q 值向量。代理接著使用 epsilon-greedy 策略選擇估計值最高的動作。

輸入前處理與時間資訊

為了降低計算複雜度與訓練時間,輸入影格會經過以下前處理:

  • Downsampling and Grayscaling:影像被縮小至 84x84 像素並轉為灰階,將三個 RGB 通道合併為一個。
  • Cropping:移除螢幕上不必要的部分。
  • Frame Stacking:將連續四個影格堆疊在一起,以解決時間限制的問題。單一影格無法傳達運動(例如 Pong 中球的方向);堆疊四個影格使網路能捕捉速度與方向。

經過處理的輸入會通過三個卷積層,以利用影格之間的空間關係,接著經過全連接層輸出最終的 Q 值。

深度 Q 學習演算法

與直接更新狀態-動作對的標準 Q 學習不同,深度 Q 學習使用損失函數計算預測 Q 值與 Q 目標之間的差異,然後透過梯度下降更新網路權重,以最小化此損失。

訓練包含兩個交替的階段:

  1. Sampling:代理執行動作,並將產生的經驗元組(state, action, reward, next state)儲存在回放記憶體中。
  2. Training:從回放記憶體中隨機抽取一小批元組,以執行梯度下降更新。

穩定訓練

將非線性函數近似器(神經網路)與自舉(bootstrapping)結合可能導致不穩定。DQN 實作了三項主要解決方案以緩解此問題:

1. 經驗回放

經驗回放使用回放緩衝區來儲存經驗樣本以供重複使用。這帶來兩大好處:

  • Efficiency:代理可以多次從相同的經驗中學習。
  • Decorrelation:從緩衝區隨機抽樣可防止網路僅從最近的連續經驗學習,從而避免災難性遺忘,並防止行動值振盪或發散。

2. 固定 Q 目標

在基本的 Q 學習中,目標值會在每次權重更新時變動,產生「移動目標」問題,導致訓練振盪。DQN 透過使用具有固定參數的獨立目標網路來估計 TD 目標以解決此問題。目標網路的參數僅每 $C$ 步更新一次,以匹配深度 Q 網路。

3. 雙重 DQN

雙重 DQN 解決 Q 值過度估計的問題。在標準 DQN 中,使用下一狀態的最大 Q 值來計算目標,若噪聲估計使非最佳動作獲得較高值,可能導致偽陽性。雙重 DQN 將動作選擇與目標生成分離:

  • DQN network:為下一狀態選擇最佳動作。
  • Target network:計算該特定動作的 Q 值。

此分離減少了過度估計,並促進更快速且更穩定的學習。

Sources