論文筆記之:Human-level control through deep reinforcement learning

weixin_34162629發表於2016-06-13


Human-level control through deep reinforcement learning

Nature 2015 Google DeepMind

 

Abstract 


 

  RL 理論 在動物行為上,深入到心理和神經科學的角度,關於在一個環境中如何使得 agent 優化他們的控制,提供了一個正式的規範。為了利用RL成功的接近現實世界的複雜度的環境中,然而,agents 遇到了一個難題:他們必須從高維感知輸入中得到環境的有效表示,然後利用這些來將過去的經驗應用到新的場景中去。顯著地,人類和其他動物看起來可以通過一個和諧的RL 和 層次感知處理系統的有效組合進而解決這個問題。前者通過豐富的神經資料解釋了由多巴胺能神經產生的相位訊號和 TD Reinforcement learning 演算法之間的顯著的並行得到驗證。於此同時, RL agents 在一些領域已經取得了很多的成果,之前他們的應用基本上被限制在領域內,即:手工設計的有用的特徵,全部觀測到的domains,低維的狀態空間等等。此處,我們利用最近發展迅速的深度神經網路來開發一種新穎的智慧 agent,叫做: deep Q-network, 利用end-to-end 的RL, 可以直接從高維感知輸入中學習到成功的策略。我們在具有挑戰性的經典Atari 2600 games,測試了該 agent。實驗證明,該 deep Q-network agent,僅僅接收畫素 和 遊戲得分 作為輸入,利用相同的演算法,網路設計 和 超引數可以超過之前任何的演算法,達到和專業遊戲玩家的水平。該工作橋接了 高維感知輸入 和 動作,能夠處理各種具有挑戰性的任務。

  

     我們要設計一個演算法,其能夠開發一個廣泛的處理多種任務的能力 ---- 一般的人工智慧,無法達到這個效果。為此,我們發展了一種新的 agent, a deep Q-network(DQN),可以結合RL 和 深度神經網路。特別注意的是,最近深度神經網路的發展,幾個層的結點用來建立逐漸更加抽象的資料表示,已經使得其可以直接從原始感知資料中,學習到像物體的種類這樣的概念。我們用一個特別成功的結構,深度卷積網路,其利用平鋪的卷積濾波來模仿感受野的效果---> uses hierarchical layers of tiled convolutional filters to mimic the effect of receptive fields. 所以,探索影像的區域性空間關係,構建對自然轉換的魯棒性,像:視角和尺寸的變換。

 

  我們通過一系列的 observations, actions and rewards,考慮 agent 和 環境互動的任務。該 agent的目標是:為了得到最大的累積獎賞,而選擇動作。正式的,我們利用一個深度卷積網路來近似最優的動作-值函式(the optimal action-value function):

  $Q(s, a) = max_{\pi} E [ r_t + \gamma r_{t+1} + \gamma^2 r_{t+2} + ... + |s_t = s, a_t = a, \pi ]$,

  

  RL 比較出名的一個問題就是:當用一個非線性函式估計,如:一個神經網路來表示 動作-值函式時,就會導致不穩定或者不收斂。這個不穩定主要有幾個原因導致的:序列觀察的相關性(the correlations present in the sequence of observations), Q值的小的更新,可能會顯著的改變策略,從而改變資料分佈,以及動作-值(Q) 和 目標值之間的關係。我們利用新穎的Q-Learning的變種來解決上述不穩定的問題,主要用到兩個idea:

  1. 我們利用由生物學啟發出來的機制,稱為:experience replay,在資料中生成不規則分佈。從而消除了觀測序列的相關性,使得在資料分佈上光滑的變化。

  2. 我們利用一個迭代更新來朝向目標值(target values) 調整 動作-值 Q ( the action-value),僅僅週期性更新,從而減少了與目標的聯絡。

 

  於此同時,在RL之中存在其他穩定的方法來訓練神經網路,像: netral fitted Q-iteration,這些方法涉及到上百次迭代的訓練網路。所以,這些方法不像我們的演算法,不適合用於大型神經網路。我們利用像圖1中所示的深度卷積神經網路來引數化估計的值函式 $Q(s, a; \delta_i)$,其中 $\delta_i$ 是第i次迭代的Q-network的引數。為了實現經驗重現,我們在一個資料結合$D_t$中,在每一次時間步驟 t,儲存 agent 的經驗,$e_t = (s_t, a_t, r_t, S_{t+1})$。在學習的過程當中,我們採用 Q-leaning 更新,在經驗樣本上 (s, a, r, s') ~ U(D),從儲存的樣本中隨機均勻的繪製。第i次迭代的Q-learning 更新,採用下列的損失函式:

  其中,$\gamma$ 是折扣因子,決定了 agent的視野。

 

     

 

 

 

 


 

  The Methods:

  

  Preprocessing:直接處理 Atari 2600 幀,影像大小是 210*160。我們為了降低輸入的維度,採取了一個基礎的預處理的步驟,用 Atari 2600 模擬器來進行人為處理。首先,為了編碼單張影像,我們採用當前編碼幀和前一幀每一個畫素點色彩值的最大值。移除閃爍是很有必要的,因為一些物體僅僅出現在奇數幀,而有一些則只出現在偶數幀,由於有限數量的精靈導致的 artefact 會立馬顯現。 第二,我們然後提取 Y 通道,也就是經常說的 亮度,然後將其resize成 84*84的。 

 

  Code availability.   程式碼連結:https://sites.google.com/a/deepmind.com/dqn

 

  Model architecture. 利用神經網路,有好幾種不同的方法來引數化 Q。因為 Q 對映了 歷史-動作對(history-action pairs)到他們的Q值,歷史  和 動作 已經在之前的方法中被用於神經網路的輸入。這種結構的主要缺點是:一個單獨的前向傳播需要計算每一個動作的Q值,導致計算代價和動作的數量成比例上升。我們則使用這樣的一個結構,即:每一個可能的動作有一個單獨的輸出,僅僅將狀態表示輸入給神經網路。輸出對應了每一個動作為每一個狀態預測的Q值。這種結構的優勢是:在一個給定的狀態下,對於所有可能動作的Q值的計算,在網路中僅僅需要一個前向傳播即可。

 

  圖1中展示的結構,給出如下的描述:傳入給神經網路的輸入是預處理對映完畢後的 84*84*4 的影像。

  第一個隱層:卷積核大小為 8*8 , 然後有 32個filter,步長為4;後面跟一個非線性啟用函式;

  第二個隱層:卷積核大小為 4*4, 然後有 64個filter,步長為2;後面跟一個非線性啟用函式;

  第三個卷積層,64個filter,卷積核大小為 3*3,步長為1,後面也跟著一個 rectifier;

 

  最後的隱層是:全連線層,由512個rectifier units 構成;

  輸出層是 一個全連線,每一個有效地動作對應一個輸出。

 

  作者考慮在遊戲中,有效動作的數量 從4~18之間變換。

 

  Training details

  每一個遊戲,一個網路:所有的遊戲都用同樣的網路結構,學習演算法,以及超引數設定。由於遊戲的分數都不一樣,所以作者將所有的 positive reward 設定為1,negative reward 設定為 -1,不變化的則設定為0. 

  訓練過程中行為策略是 貪心演算法。

  像之前的演算法一樣,本文也是採用 跳幀技術,即: the agent 看並且選擇動作每隔 k 幀,而不是每一幀都做。其最後一個動作在跳過的幀上重複。

  

 


 

  Algorithm

  我們考慮這樣的任務,在一個由動作,觀察 和 獎勵構成的序列中,agent 和環境互動。每一個時間步驟, the agent 從合法的遊戲動作中選擇一個動作 $a_t$。然後將此動作傳輸給模擬器,以修改其內部狀態 和 遊戲得分。總的來說,該環境可能是隨機的。agent 看不到模擬器的內部狀態;但是可以看到從模擬器傳來的影像,即:代表當前螢幕影像資訊的由畫素構成的向量。此外,其還接收到代表遊戲得分變換的獎勵 $r_t$。既然總的來說,遊戲得分可能依賴於之前序列的動作和觀察;關於某動作的反饋,可能經過幾千次的時間步驟才會接收到。

 

  因為 agent 僅僅觀察到當前的螢幕,所以該任務是部分觀測的,許多模擬器的狀態是有感官上的鋸齒現象的(即,僅僅從當前螢幕 $x_t$ 不可能完全的明白當前的情況)。所以,動作和觀察的序列,$s_t = x_1, a_1, x_2, ... , a_{t-1}, x_t$, 輸入給演算法,然後依賴於這些序列進行遊戲策略的學習。模擬器中的所有序列,都假設會在有限時間步驟內結束。這種形式就構成了一個大而有限的 馬爾科夫決策過程(MDP),其中的每一個序列都是單獨的狀態。簡單地將完整的序列 $s_t$ 作為第 t 個時刻的狀態描述。

 

  agent 和 模擬器互動的目標是能夠獲得最大的累積獎勵。我們做出一個標準的假設,即:獎勵的獎勵都被一個衰減因子 $\gamma$ 相乘,(設定 $\gamma = 0.99$),定義時刻t的折扣反饋為:

  其中,T 是遊戲結束的時刻。

  我們定義 最優的 動作-值函式 $Q^*(s, a)$,作為最大的期待反饋,在觀察了一些序列 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')$:

  $Q^*(s, a) = E_{s'}[r + \gamma max_{a'} Q^*(s', a')|s, a]$

  許多RL 演算法基本的idea都是:利用貝爾曼等式來預測 動作-值函式 作為一次迭代更新,$Q_{i+1}(s, a) =  E_{s'}[r + \gamma max_{a'} Q_i(s', a')|s, a]$。隨著 i 趨於無窮大,這樣的值迭代演算法收斂到最優動作值函式,$Q_i -> Q^*$。實際上,這些基礎的方法是不切合實際的,因為每一個動作值函式分別預測給每一個序列,沒有任何 generalization。 實際上,用一個函式估計來預測 動作值函式是很common的。在RL領域經常利用線性函式逼近器,有時候也會用非線性函式,如:神經網路。我們提到 帶權重的神經網路函式逼近器稱為:Q-network。一個Q-network 可以通過在第 i 次迭代來調整引數 $\theta_i$而得到訓練,以此降低貝爾曼等式中的均方誤差 (mean-squared error),其中最優目標值 $r + \gamma max_{a'}Q^*(s' , a')$ 利用之前一些迭代得到的引數 $\theta_i^-$ 替換為估計目標值 $y = r + \gamma max_{a'}Q(s', a'; \theta_i^-)$。這就會使得 損失函式 $L_i(\theta_i)$ 的序列隨著迭代次數 i 而改變:

  注意到,目標依賴於網路的權重;而有監督的學習,在學習開始之前是固定的。在每一個優化階段,當優化第 i 個損失函式 $L_i(\theta_i)$時,固定之前迭代的引數 $\theta_i^-$,就會有一系列定義好的優化問題。最後一項是 目標的方差,不依賴於我們當前優化的引數 $\theta_i$,所以可以暫時忽略。區分不同的損失函式及其對應的權重,我們有如下的梯度:

  

  注意到,本文的演算法是:model-free and off-policy。

  Model-free:因為本文演算法是直接從模擬器中得到的樣本來解決強化學習任務,而沒有顯示的預測獎賞和轉移概率 $P(r, s'|s, a)$。

  Off-policy:學習貪婪策略 $a = argmax_{a'} Q(s, a'; \theta)$,與此同時,採用一個確保有足夠狀態空間探索的行為分佈。實際上,該行為分佈是經常被選中通過一個 $\epsilon-greedy$ 策略,有 $1-\epsilon$的概率來選擇一個貪婪策略,有 $\epsilon$ 的概率隨機的選擇一個 action。

  其實,off-policy 更主要的是講:策略評估 和 策略改進的不是同一個策略。例如:Q-learning 評估的是 貪心策略,而改進的是 原始策略(即,沒有采用貪心演算法策略)。這裡比較容易懵逼啊。。。呃呃呃。。。

  

  


  Training algorithm for deep Q-networks.

  訓練深度 Q-network 的演算法在 Algorithm 1中。基於Q,根據 貪心策略來指導 agent 選擇和執行動作。由於,將任意長度的歷史作為神經網路的輸入是有困難的,我們的 Q-function 作用於 利用上述函式 產生的固定長度表示的歷史。該演算法從兩個角度 修改了 Q-learning,使其適合大型神經網路的訓練並且不會發散。

 

  首先,我們利用稱為 Experience Replay 的技術,儲存每一個時間步驟 agent的經歷,$e_t = (s_t, a_t, r_t, s_{t+1})$,在該演算法的內部迴圈中,我們對 experience 樣本 採用 Q-learning 更新,或者 minibatch updates,$(s,a,r,s') ~ U(D)$,從儲存的樣本池子中隨機的抽取。

 

  該方法對比傳統的 online Q-learning演算法有以下幾個優勢

  1. Experience 的每一個步驟經常用到許多權重更新中去,允許更好的資料效率。

  2. 由於樣本之間強烈的相關性,直接從連續的樣本中進行學習是 inefficient的;樣本的隨機化破壞了該相關性,從而減少了更新的方差。

  3. 當 on-policy 的學習時,當前的引數決定了用來訓練引數的下一個資料樣本。(when learning on-policy the current parameters determine the next data sample that the parameters are trained on.)

  例如:如果最大動作是向左移動,然後訓練樣本就由左邊的樣本主宰;如果向右移動,訓練樣本的分佈也會交換。

  很容易發現,不想要的反饋迴圈(feeback loops)是如何產生的,引數也可能在一個 poor 的區域性最小困住,或者直接就悲劇的發散了。

 

  第二個改動是:

  為了改善我們方法的穩定性,在 Q-learning 更新的過程中,我們使用了額外的 目標網路(target network)來產生目標 $y_j$。

  確切的講,每執行 C 次迭代,我們將網路 Q 克隆下來,然後得到一個目標網路(target network Q'),然後用這個目標網路Q' 來在接下來的 C 次迭代中來產生 Q-learnng的目標 $y_j$。這個改變,使得演算法相對標準的 online Q-learning 來講,更加穩定,因為 普通的 Q-learning 一次更新增加了 $Q(s_t, a_t)$ 經常對於所有的 a 來講,也增加了 $Q(s_{t+1}, a)$,所以就增加了目標 $y_j$,可能會導致震盪或者策略的發散。用一組較老的係數來產生 target,增加了 更新Q的時間 和 更新能夠影響到目標 $y_j$ 的時間的延遲,使得不容易發散。

 

  還有一個“黑科技”,即:

  此外,作者還發現將更新 限制在 -1 到 1之間 能夠提升演算法的有效性。因為所有的 |x| 的 positive value 的梯度是1,而 negative value 的值為 -1,將平方差剪下到 -1 和 1 之間就對應了 利用一個絕對值損失函式來處理 在(-1,1)間隔之外的誤差(error )。這種 error clipping 方式進一步的改善了演算法的穩定性。

 

 


 

   總的演算法流程如下:

 

  

 

 

 

相關文章