【論文研讀】強化學習入門之DQN

最近在學習斯坦福2017年秋季學期的《強化學習》課程,感興趣的同學可以follow一下,Sergey大神的,有英文字幕,語速有點快,適合有一些基礎的入門生。
今天主要總結上午看的有關DQN的一篇論文《Human-level control through deep reinforcement learning》,在Atari 2600 games上用DQN網絡訓練的,訓練結果明,DQN能夠比較穩定的收斂到Human-level的遊戲水平。

前言

目前,強化學習已經在現實中很多複雜的情形中取得小小勝利,尤其是在可人工構建有效特徵、可全觀測的低維狀態空間等領域。當然也在一些任務場景中碰了不少的壁:智能體必須學會從高維的“感官”輸入中,識別並“感知”外界環境的特徵表示,並從過去的經驗中,學習以及遷移適應新的環境。這對人和動物來說,是與生俱來的能力,是和我們層級的感知系統與自我強化學習的神祕結合有關。

論文摘要

本文提出了一種Deep Q-Network(DQN),藉助 端到端(end-to-end) 的強化學習方法能夠直接從高維的輸入中,學習一種很優的策略(policy)。輸入是遊戲的實時圖像(當前狀態S),藉助卷積神經網絡捕捉局部特徵的關聯性,輸出所有可能採取動作A的概率分佈,論文引入了經驗回放(Experience Replay)。

思路

Action-Value Function

DQN中,藉助了深度神經網絡來擬合動作-值函數,即折扣累計回報:

image.png

其中π是要採取的策略,即在觀察到狀態s時,按照策略採取動作a
image.png

強化學習過程常常不穩定,而且訓練時易於發散(diverge),尤其當神經網絡採用非線性函數逼近Q時。主要有以下原因:

  • 在訓練時,輸入的觀察序列(樣本)之間具有關聯性。比如後個序列樣本,是緊着前一個樣本的。
  • Q函數小小的更新可能給策略(policy)帶來很大的波動(更新前後策略分佈明顯有別),並進一步改變數據分佈(策略影響下一步動作選取)
  • 動作-值函數Q與目標值(target value)的關聯性。目標值定義如下:

image.png

經驗回放

藉助深度網絡來擬合Q函數這裏就不做贅述了,詳見下文的網絡圖。論文作者在模型訓練中加入了 經驗回放(Expericen Replay),這裏解釋一下這個非常有用的概念(敲黑板~~):

在訓練過程中,會維護一個序列樣本池Dt= {e1, ...., et},其中et=(st, at, rt, st+1),et就是在狀態st下,採取了動作at,轉移到了狀態st+1,得到回報rt,這樣就形成了一個樣本(經驗),一般樣本池大小有限制(設爲N)

回放的意思,就是在訓練中,比如讓agent玩遊戲,並不是把樣本按照時間順序餵給網絡,而是在一局遊戲未結束之前,把生成的樣本(經驗)都更新地扔進經驗池中,從池中平均採樣minBatch個,作爲訓練樣本

這樣,通過回放,就可以減少上面提到的因爲前後樣本存在關聯導致的強化學習震盪和發散問題。還有以下好處:

  • 保證了每個樣本在權重更新中,都有足夠的可能被利用多次,提高樣本利用率
  • 直接從連續的樣本學習會導致震盪問題,隨機從樣本池抽取,可以打亂這種關聯性
  • 形象化解釋是,當agent在上一個樣本最後採取的動作是left時,在採樣中,可以只從狀態爲left的樣本中進行採樣,保證訓練的分佈更具有有效性

Double Q-network 迭代

因爲在逼近Q函數時,由於目標值函數與下個狀態的最優動作對應的Q函數有關,而動作選取又依賴於策略π的更新,因此二者相互關聯。
在DQN中我們用網絡擬合Q(s, a; θ),其中θ是網絡中權重參數,Q-learning的迭代更新使用如下的loss函數:

image.png

其中θi是第 i 步Q-network參數;θ-是計算第i步的目標值(target value)。 一般θi更新C步,θ-才更新一步。

算法細節

預處理

論文是基於Atari 2600視頻幀圖像數據,210×160像素,128色,不作處理的話,對計算內存要求太高。
首先,取前後兩幀圖像的最大值。因爲有些閃爍的像素只出現在偶數幀,不出現在奇數幀
然後,從RGB數據中提取亮度作爲Y通道值,並將圖像縮放到84×84
作者最後也採用最相鄰的m(取值爲4)幀圖像,進行堆疊(stack),生成最後的輸入圖像。(堆疊??相鄰m幀取平均?)

構建模型

1.輸入

網絡輸入是84×84×4的經過預處理後的圖像

2.卷積層和全連接層

輸入是遊戲的視頻幀,通過3層卷積層,後接2層全連接層,最後輸出當前狀態(視頻幀)在採取的所有動作的Q值函數。作者在論文中提到,此模型儘可能的少的進行先驗假設。
image.png

  • 第一層卷積—— 32 filters of 8×8, 步長4,Relu 激活
  • 第二層卷積——64 filters of 4×4,步長2,Relu 激活
  • 第三層卷積——64 filters of 3×3,步長1,Relu 激活
  • 全連接層——512隱藏層單元,Relu 幾乎
  • 輸出層——與action的數目有關係

訓練細節

需要提到的第一點,在訓練過程中,作者clipping了rewards。具體操作是:正向回報clip到1,負向回報clip到-1,0表示無回報。
爲什麼要clip?(黑人問號臉o(╯□╰)o)

以這種方式處理回報值,可以限制誤差傳導的幅度,更容易保證在不同的遊戲之間保持相同的學習率。同時,不clip的話會影響agent的性能,因爲不同的量級回報會導致求導問題(不可導??)

實驗中採用了RMSProb的梯度優化方法,mini-batch設置爲32。在選取貪心策略的參數時,在前1M幀從1.到0.1遞減,之後保持0.1不變。

同時,在每個episode訓練時,採用k-th跳步法,即每隔k個幀進行樣本選擇,這樣在相同的時間裏,可以訓練k次。

loss function

最優動作-值函數遵循一個重要的條件:貝爾曼等式
對於狀態 s’ 的所有可能動作 a’ ,Q(s’, a’)是最優值,則最優的策略是最大化r+γQ(s’, a’)

image.png

因此藉助貝爾曼進行Q的迭代更新:

image.png

但實際上,這種方式並不可行。因爲動作-值函數是對每個序列進行獨立評估的,並未涉及任何生成過程。因此,更常用函數逼近方法來估計動作-值函數,比如線性函數逼近,或者藉助神經網絡進行非線性函數逼近。

image.png

在迭代過程中計算均方差:

image.png

進一步約化爲:

image.png

在監督學習中,目標值在訓練過程中是確定的。但是在這裏,目標值依賴於網絡權重,在每一步的梯度優化中,我們固定先前迭代的參數θi-,去優化Loss函數。上式中的最後一項,是目標值方差,一般常忽略不作處理(不依賴與θi)。
對loss函數求導:

image.png

訓練過程

採用經驗回放的Deep Q-learning算法。訓練過程如下:

image.png

在訓練過程中,採用貪心策略,即在網絡輸出得到的所有動作值函數Q時,並非以直接選取最大值對應的動作,而是採取ξ-greedy policy,即可能以很小的概率選取其他動作,以保證探索空間的多樣性。在追蹤平均每個episode的得分情況,可以看出Q函數能夠穩定的收斂到一定值。
image.png

  • model-free——算法直接使用模擬器的樣本解決強化學習任務,並沒有顯式的估計回報和transition dynamics P(r, s’|s, a)
  • off-policy——算法學習的是貪心策略 a=argmaxQ(s,a’;θ),按照行爲分佈來確保狀態空間的足夠性探索

小結

  • 在論文中,作者還提到DQN能夠學習到相對長期的策略(提到在小霸王裏消磚的那款遊戲:agent可以通過強化學習學到,優先把一個角打通,然後就會在天花板裏來回談,以獲得很高的回報)
  • 盛讚了一下提出的DQN網絡以很少的先驗知識,簡單的網絡,相同的模型算法,就能在多樣的環境中(多款遊戲),僅藉助像素信息和遊戲得分,得到human-level的agent。
  • Replay算法很好使,減少訓練的震盪性
  • 獨立的target value網絡(其實就是複製了一下Q-network參數,延遲C step 進行更新)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章