Playing Atari with Deep Reinforcement Learning
《Computer Science》, 2013
Abstract:
本文提出了一種深度學習方法,利用強化學習的方法,直接從高維的感知輸入中學習控制策略。模型是一個卷積神經網絡,利用 Q-learning的一個變種來進行訓練,輸入是原始像素,輸出是預測將來的獎勵的 value function。將此方法應用到 Atari 2600 games 上來,進行測試,發現在所有游戲中都比之前的方法有效,甚至在其中3個游戲中超過了一個人類玩家的水平。
Introduction:
從高維感知輸入中學習控制agents,像視覺或者speech 是強化學習中一個長期的挑戰。大部分成功的涉及到這幾個領域的 RL 應用都依賴於手工設計的feature 和 線性策略函數或者策略表示的組合。明顯,這種系統的性能嚴重的依賴於特征表示的質量。
最近深度學習的發展,對於從原始感知數據中提取高層feature 稱為可能,並且在計算機視覺和語音識別上面取得了很大的進展。這些方法利用神經網絡結構,包括 神經網絡,多層感知機,RBM 和 RNN,已經涉及到監督學習和非監督學習領域。大家很自然的就會問,是否可以利用相似的技術來解決 RL 中感知數據的問題。
然而, RL 從深度學習的角度,體現了幾個挑戰:
首先,大部分成功的 深度學習算法都依賴於海量標注的數據, RL 算法,從另一個角度,必須從一個變換的獎勵信號中進行學習,而且這種信號還經常是稀疏的,有噪聲的,且是延遲的。動作 和 導致的獎勵 之間的延遲,可能有幾千步那么長,看起來在監督學習中,當直接將輸入和目標聯系起來非常嚇人。
另一個問題是,大部分深度學習算法都假設 data samples 是相互獨立的,然而, RL 經常遇到 高度相關的狀態。
此外,在 RL 中數據分布隨着算法學習到新的行為而改變,這對於深度學習假設固定的潛在分布是有問題的。
這篇文章表明,一個 CNN 可以克服這些挑戰,並且在復雜的 RL 環境下從原始視頻數據中學習到控制策略。該網絡是用變種的 Q-learning 算法訓練的,利用 SGD 來更新權重。為了降低相關數據和非靜態分布的問題,我們使用了一種 經驗重播機制 (experience replay mechanism),該機制隨機的采樣之前的轉換,所以就在許多過去的行為上平滑了訓練分布。
Background:
我們考慮到 agent 和 環境交互,即:Atari emulator,是一個動作,觀察 和 獎勵的序列。在每一個時間步驟,agent 選擇一個動作 $a_t$ 從合法的動作集合 $\mathcal{A} = {1, 2, ..., K}$. 該動作被傳遞到模擬器,然后修改其初始狀態和游戲得分。總的來說 環境可能是隨機的。模擬器的中間狀態, agent 是無法看到的;但是 agent 可以觀察到一張圖像 xt,由原始像素值構成的表示當前屏幕的向量。此外,他也接收到表示游戲得分的獎勵 rt。注意到,總的來說,游戲得分依賴於動作和觀察的整個序列;關於一個動作的反饋可能得在幾千次時間步驟上才能收到。
由於該 agent 僅僅觀察到當前屏幕的圖像,所以任務是部分觀察到的,許多模擬器狀態是感官上有鋸齒的,即:僅僅從當前的屏幕,無法完全理解當前的情形。我們所以就考慮 動作和觀察的序列, $s_t = x_1, a_1, x_2, ... , a_{t-1}$,然后依賴於這些序列去學習游戲策略。模擬器中的序列都認為會在有限的時間步驟內結束。這就是說在每一個序列,一個large 但是有限的 MDP 是一個清楚的狀態。結果,我們采用標准的 RL 方法來處理 MDPs,利用完整的序列 $s_t$ 作為時刻 t 的狀態表示。
agent的目標是和模擬器交互,然后選擇動作,使得將來的獎勵最大化。我們做出假設,即:將來的獎勵每一個時間步驟都會打一個折扣 $\gamma$,定義將來的時刻 t 的折扣 return 為:
我們定義一個最優 動作-值函數 $Q^*(s, a)$ 作為采用任何策略后最大期望 return,在看了一些序列 s 然后采取了一些動作 a,
$Q^*(s, a) = max_{\pi} E [R_t|s_t = s, a_t = a, \pi]$,其中,$\pi$ 是一個從序列到動作的映射。
最優的動作值函數 服從一個重要的等式,叫做:Bellman equation. 這個基於如下的觀察:如果下一個時間步驟的序列 s'的 最優值 Q^*(s', a') 對於所有可能的動作 a' 都是已知的,然后最優策略就是選擇動作 a' 使得期望值 $r + \gamma Q^*(s', a')$最大化:
許多強化學習算法背后基本的 idea 是預測 the action-value function,利用 Bellman equation 作為一次迭代更新,
$Q_{i+1}(s, a) = E[ r + \gamma_{a'} Q_i(s, a) ]$.
如此 value iteration 算法收斂到一個最優的 動作值函數,$Q_i -> Q^*$。
實際上,這個基礎的方法是完全不實用的,因為:動作值函數是對每一個序列分別預測的,而沒有任何泛化。(the action-value function is estimated separately for each sequence, without any generalisation.) 相反,實用 function approximator 去預測 action-value function的值確實很常見的,即:
$Q(s, a; \theta) = Q^*(s, a)$
在強化學習領域,這通常是一個線性函數,但是有時候非線性函數估計也用,如:神經網絡。我們將帶有權重的神經網絡函數記為:Q-network。一個Q-network 可以通過一個序列的損失函數 $L_i(\theta_i)$ 最小化來實現每一次迭代 i 的改變。
其中, 是第i次迭代的目標,也就是當做 label 來用。當優化損失函數 $L_i(\theta_i)$,前一次迭代的參數固定。注意到,target 依賴於網絡的權重,這是和監督學習當中的 target對比而來的,在學習開始之前是固定的。區分開損失函數與對應的權重,我們得到如下的梯度:
不是在上述梯度中,計算全部的期望,比較適合的方法是利用 SGD 的方法來優化損失函數。If the weights are updated after every time-step, and the expectations are replaced by single samples from the behaviour distribution and the emulator, respectively, then we arrive at the familiar Q-learning algorithm.
注意到,該算法是 "model-free"的,即:直接從模擬器中利用采樣,解決了 RL 學習任務,而沒有顯示的構建 estimate。本算法也是“off-policy”的,即:學習貪婪策略 $a = max_a Q(s, a; \theta)$,服從一個行為分布,確保狀態空間的足夠探索。實際上,行為分布經常被貪婪策略選擇,有 1-x 的概率進行探索,以 x 的概率隨機選擇一個動作。
Deep Reinforcement Learning
最近在計算機視覺和語音識別領域的突破,主要依賴於有效的深度學習在海量訓練數據上的學習。最成功的方法是直接從原始輸入上進行訓練,基於 SGD 進行權重更新。通過喂養深度神經網絡足夠的數據,通常可以學習到比手工設計特征要好得多的特征表達(feature representation)。這些成功激發了我們在 RL 相關的工作。我們的目標是將 RL 算法和深度神經網絡進行聯系,也是直接處理 RGB 圖像,並且利用 隨機梯度更新來有效的處理訓練數據。
和 TD-Gammon 以及類似的 online方法相對,我們利用一種稱為 experience replay 的技術,我們將 agent 每一個時間步驟的經驗存儲起來,$e_t = (s_t, a_t, r_t, s_{t+1})$,將許多 episodes 存儲進一個 replay memory。在算法內部循環中,我們采用 Q-learning 更新,或者 minibatch updates,來采樣 experience,從存儲的樣本中隨機的提取。在執行 experience replay之后,agent 根據貪婪算法,選擇並且執行一個動作。由於采用任意長度的 histories 作為神經網絡的輸入是非常困難的,我們的 Q-function 作用在由函數作用之后,固定長度表示的 histories。算法的全稱,我們稱為 Deep Q-learning。
該算法與傳統的 Q-learning 相比,有以下幾個優勢:
首先,experience 的每一個步驟都在權重更新上有潛在的應用,可以允許更好的數據效率。
第二,從連續的樣本上直接進行學習是 inefficient的,由於樣本之間較強的相關性;隨機提取這些樣本,就打算了他們之間的聯系,所以減少了更新的方差。
第三,當學習 on-policy 的時候,當前參數決定了下一個數據樣本( when learning on-policy the current parameters determine the next data sample that the parameters are trained on)。例如,如果最大值動作是向左移動,那么訓練樣本就主要由左側的樣本構成;如果最大化動作是向右移動,然后訓練分布也隨之改變。It is easy to see how unwanted feedback loops may arise and the parameters could get stuck in a poor local minimum, or even diverge catastrophically. 通過利用 experience replay,行為分布就在之前許多狀態上取了平均,使得學習更加平滑,而不至於震盪或者不收斂的情況。
在我們的方法之中,我們的算法僅僅存儲最近 N 個 experience tuples,當執行更新的時候,隨機的從 D 上均勻的采樣。
數據的預處理,就是對輸入的圖像進行降分辨率等相關處理,使得盡可能的減少計算量。
模型的結構主要是:2層卷積層,后面接2層全連接層,輸出是 動作空間,即:所有的可能要采取的動作。
算法的流程如下圖所示:
實驗部分: