1. 程式人生 > >Human-level control through deep reinforcement learning(中文翻譯)

Human-level control through deep reinforcement learning(中文翻譯)

利用深度強化學習演算法實現人類水平的控制

作者:Volodymyr Mnih1*, Koray Kavukcuoglu1*, David Silver1*, Andrei A. Rusu1, Joel Veness1, Marc G. Bellemare1, Alex Graves1,
Martin Riedmiller1, Andreas K. Fidjeland1, Georg Ostrovski1, Stig Petersen1, Charles Beattie1, Amir Sadik1, Ioannis Antonoglou1,
Helen King1, Dharshan Kumaran1, Daan Wierstra1, Shane Legg1 & Demis Hassabi

強化學習理論根植於心理學和神經科學,它可以很好的解釋一個代理如何在一個環境中優化自己的控制。為了在真實複雜的物理世界中成功的使用強化學習演算法,一個代理必須面對困難的任務:利用高維的感測器輸入資料,達到很好的表達,並且泛化之前的經驗到新的未見環境中。顯然的,人類和其他動物通過協調的組合強化學習以及層次化的感知處理系統來很好的處理這個問題。前者已經被大量的神經資料證明了,揭示了在多巴胺能的神經元激發的相位訊號和短時差分強化學習演算法。現在強化學習演算法已經在一些領域取得了成功,然而它之前在那些手動提取有用特徵的領域、或者一些低維可以直接觀察到的領域受到了應用限制。這裡我們使用最近先進的手段訓練深度神經網路類得到一個,名字叫深度Q值網路的演算法,它可以使用端到端的強化學習演算法從高維的感測器輸入中成功的直接學習到成功的策略。我們在很有挑戰的遊戲Atari2600中測試了這個代理。我們證明了,使用同一種演算法和網路,同一種超引數,在49種遊戲集合中,僅僅使用畫素點和遊戲分數作為輸入,超過以往的任何一種演算法達到和專業遊戲玩家的水平。這個工作在高維資料輸入和動作輸出之間建立了橋樑,使得人工智慧代理可以有擅長一些列的挑戰性的工作。

         我們致力於利用單一的演算法解決某個領域的多類有挑戰性的工作,也就是通用的人工智慧。為了達到這個目標,我們發明了一個叫做深度Q網路(DQN),它是結合了強化學習和深度神經網路。明顯的,最近利用多層的神經元構建的更加抽象的資料表達,使得人工神經網路可以直接從感測器輸入資料中獲得物體的分類。我們使用一個非常成功的網路架構,卷積神經網路,它使用多層的卷積濾波器模仿感受野的作用——它們的靈感來自於Hubel和Wiesel在視覺迴路的原始前饋處理,因此他可以挖掘影象中區域性的空間相關的資訊,建立對於視角和比例縮放自然轉換非常魯棒。

         在我們的任務中,代理通過一些列的觀察、動作和回饋來進行互動。我們代理的目標是選擇一個能夠使未來的積分最高的的動作。更加普遍的,我們使用一個卷積神經網路來達到最佳動作值函式。

        

         這個公式在每步t時,當觀察到狀態s,採取狀態a,使得利用折中的 的和最大化,通過利用策略 。

         強化學習不穩定甚至會發散,當一個非線性近似器比如一個用於表達Q函式的神經網路。這個不穩定有幾種原因:可觀測序列的相關性,Q值的小的更新會很大範圍的更改策略進而更改資料的分佈、以及Q值和目標值之間的相關性 。

         我們使用心得Q學習的變形來處理這中不穩定,它有兩個重要的想法。第一,我們使用生物學啟發而來的一種機制叫做經驗延遲,它會把資料隨機化,因此這樣會刪除觀測資料之間的相關性並且平滑資料資料分佈。第二點,我們使用一個迭代更新演算法調整Q函式向目標值的方向,而且是週期性的更新,從而可以降低和目標之間的相關性。

         然而,也存在其他的使神經網路穩定的演算法,比如一個適應性的Q迭代,這些方法都涉及重複訓練神經網路數百次。因此,這些演算法不如我們演算法,它們對於非常大神經網路會非常低效率。我們利用深度卷積神經網路來估計一個Q函式,在圖1 中,在其中 是在第i步的權重,我們設定了一個數據集合 ,其中 為每個時間步驟t的機器人經驗。在學習過程中,然後我們在經驗 的取樣點上應用Q-學習更新,然後從取樣庫中隨機的取出取樣點。Q學習中在i步的迭代使用下列的損失函式:

這裡的 是折中因子決定機器人的視野, 是Q網路在第i步的引數, 用來計算第i步的目標。 每C步利用 進行更新,然後在兩次更新過程中保持不變。

         為了評價DQN機器人,我們在Atari2600 平臺上測試了它,這個平臺提供了很多不同的任務(n=49),這些任務非常難並且是針對人類玩家的。我們使用相同的網路架構、超引數和學習過程來證明我們的方法可以非常魯棒的成功在很多遊戲中學習到操作策略,並且學習過程僅僅基於感測器的輸入依賴很少的先驗知識(它們僅僅是視覺影象輸入,以及每個遊戲可採取的動作個數)。顯然的,我們的方法可以使用強化學習和SGD演算法以一種穩定的方式訓練大規模的網路。通過兩個學習索引的暫時演進。(機器人每個片段平均分數和平均估計Q值;觀看圖2和增補的細節討論)我們在49個遊戲上和能夠得到的強化學習論文展示的最好的表現。除了學習到的機器人,我們也報告了一個專業玩家在在控制的情況下的分數以及隨機選擇動作的策略所得的分數。(擴充套件資料Table2 和Fig3,其中人類表現為100% 隨機表現為0% 在y軸方向)我們的DQN方法展示了在43個遊戲中不借助其他方法獲得先驗知識時所獲得的最好的表現的演算法。更進一步,我們的DQN機器人展示了一個可以和專業玩家相比較的水準,在49個遊戲中在超過半數的遊戲中可以達到人類的分數的75%(可以看圖3 增補討論在擴充套件的資料表2)。在額外的模擬中,我們證明了獨立DNQ機器人核心模組的重要性,通過禁止他們工作來說明他們的對於表現的必要性。這些模組包括:延遲記憶,分離的目標Q網路和深度卷積神經網路。

         我們接下來在SpaceInvaders遊戲中利用機器人的成功表現來證明DQN網路學習到了良好的表達,通過使用一個叫做“t-SNE”為視覺開發的技術達到這種效果。正如所期望的,t-SNE演算法趨向於把相似的states佈置在臨近的points的地方。有趣的是,我們發現了一個例子,在這個例子中t-SNE演算法產生了相似的內部東西,這些東西是依據理想的期望而產生的表現狀態,這些狀態內部相似但是人類外部感覺他們去不相似。這裡我們認為,神經網路可以從高維的感測器資料中學習到支援適應性動作的表現。我們也展示了通過DQN學習到的表現,這種表現是學習到的策略是從資料中產生的,而不是學習資料本身,在模擬過程中,我們也把輸入展示成神經網路經歷過人和機器人玩之後的狀態,並記錄最後個隱層的狀態,然後利用t-SNE演算法展示出來。擴充套件資料圖2提供了一種說明,這種說明證實了DQN網路的變現如何準確的預測狀態和Q值。

         最有價值的事是,在遊戲中DQN網路需要在它自己的環境中變化非常大,從-scrolling shooters (River Raid) 到(Boxing) 以及三維的遊戲car-racinggames (Enduro).

         事實上,在一個特定的遊戲中,DQN網路可以發掘一個相對長期的策略(比如,在Breakout遊戲中:機器人學習到一種優化的策略,也就是首先在靠近牆的邊上挖一個通道,然後允許球從通道中穿越過去進入磚塊的後面,從而能夠破壞大量的磚塊,看增補視訊2說明DQN在課程學習過程中的進步)。然而,一些需要更多暫時的擴充套件計劃的策略仍然存在巨大挑戰對於所有的機器人包括DQN網路。

         在本文中,我們賬目了一個單一架構的演算法能夠完成成功的學習到控制策略來操作某個範圍內大量不同遊戲,並且這種學習需要很少的先驗知識,在學習過程中只接受畫素作為輸入,並且使用相同的演算法,網路和架構以及超引數在每個遊戲中,以及人類遊戲者也需要的先驗知識。為了和之前的工作作對比,我們的方法包含了“端到端”的強化學習演算法,它使用了回報函式在facilitate value函式估計的環境中,利用卷積神經網路指向的突出特徵方向改進自己的表現。這個思路在神經生物科學中可以找到證據,也就是在視覺迴路中,回報訊號在感知學習中可能會影響表現的特徵。特別的,強化學習和深度學習架構的成功結合結合在很大程度上以來我們的延遲演算法,它包含可以儲存和顯示錶現最近經歷的變換。匯聚性的證據表明了海馬區可能支援生理上的事實,即一個在人類大腦中存在的過程,即在離線階段(比如,散步休息的時候)大腦中存在一個時間壓縮的回放,它可以提供一個推斷的策略,通過這個策略值函式可以有效的升級,通過利用基本中樞再啟用。

         在將來,開發潛在的應用,把延遲經歷的內容偏置到顯著的事件,這和在強化學習中一個叫做“按優先順序清除”概念相關。這種現象可以根據經驗把海馬區延遲的資料特徵化。

Takentogether,我們的的工作說明了一種力量,即利用一個生物啟發的機制建立一個機器人,該機器人可以學習控制不同的挑戰性的工作。

         方法

過程         直接把Atari2600的影象作為輸入,它是一個擁有128顏色調色盤的210*160個畫素,依據計算和儲存的能力這個規模的影象可以進行計算。我們首先使用一個基本的預處理過程來降低輸入影象的維度以及處理Atari 2600模擬器的人工因素。首先,我們為了編碼一個單針影象,我們在要編碼的影象和上一幅影象的每個畫素顏色值中取最大值。這對於消除閃爍是非常必須的,當某些物體僅僅在當前的影象中出現,而其他物體僅僅出現在之前的影象中時候這個閃爍會出現,一個人為因素,即由於Atari2600顯示精靈數量的限制,可以一次性顯示。第二點,我們從RGB影象中提取了Y通道,即亮度通道,然後把它縮小為84*84大小。在演算法1中描述的函式 應用在當前的m個影象中,然後把它們順序送入到Q函式中,這裡的m=4,當然也可以選擇3,或者5。

         模型架構用途這裡有幾種方法來利用神經網路除錯Q函式。因為Q把歷史-動作資料對來估計Q值的數量,歷史-動作作為神經網路的輸入已經有一些方法。這些方法的最主要的缺點是:使用一個分離的前饋經歷來計算每個動作的Q值,導致一個代價,即scales和動作的數量線性相關。而我們使用一個架構,在這個架構中對應每個可能的動作都有一個單獨的輸入單元,並且神經網路的輸入是一個狀態表現。輸出是對應輸入狀態的對應個體Q值的預測。這種架構的主要優點是有能力在給定狀態下僅僅通過網路的一次前饋計算出每種可能的動作的Q直。

         這個架構的原理圖在圖1中有顯示。神經網路的輸入是通過函式 預處理產生的84*84*4的影象。第一個隱含層把輸入影象卷積了了32個8*8的濾波器with stride 4 然後通過一個非線性修正函式。第二個隱含層卷積了64個8*8的濾波器利用 stride 2,然後同樣的利用非線性修正函式。然後第三層的卷積層利用64個3*3 with stride 1然後跟隨一個非線性修正函式。最後一個隱含層是一個權利連線的網路包含512個修正單元。最後一層是一個全連線網路單個輸出對應一個有效的動作。對於每個不同遊戲我們的輸出有4到18個不等。

         訓練細節我們在Atari2600上進行了49種遊戲,這些遊戲可以在其他的方法中得到對比。不同的遊戲利用不同的訓練方法:對比:相同的網路架構學習演算法和超引數設定。展示了我們的方法對於不同的遊戲是具有足夠的魯棒性的,並且僅僅依靠少量的先驗知識。

然而我們在不更改的遊戲中評價我們的機器人,只是在訓練過程中更改回報的結構。因為不同的遊戲中分數的範圍變化很大,所以我們對於正的回報給予1,負的回報給予-1,對於不變的給予0。使用這種方式,可以限制誤差的倒數範圍,同時可以更容易的使用相同的學習速率對於不同的學習任務。與此同時,由於機器人不會再不同的強度上有不同的回報,會導致機器人的表現不同。對於生命計數器的遊戲,Atari2600模擬器也會發送生命數字在遊戲過程中,這個用來在訓練過程中停止單次訓練。

         在這些經歷中,我們使用了RMSProp演算法,其中的minibatches演算法的大小是32。訓練過程中的行為策略是 的其中的 退火的線性從1.0到0.1在最初的一百萬幅影象上,然後固定在0.1上。我們總共訓練了50百萬幅影象,(也就是,大約一共38天的遊戲經歷)並且在當前的1百萬幅影象中使用記憶網路。

         遵循之前的玩Atari2600遊戲的演算法,我們也使用了簡單的 frame-skipping 技術。更確切的說,機器人每經歷k幅影象才採取一個動作,而不是每幅影象都採取動作,在忽略的影象播放過程中,其動作會一直持續。因為在執行模擬器的過程中,前饋一步所需要的計算比機器人選取一個動作所需的計算量要少很多。這項技術允許機器人在不顯著增加執行時間的情況下粗略的計算k次遊戲。我們使用k=4對於所有的遊戲。

         所有的超引數和優化引數的選取都是根據以下游戲的反饋資訊而調整的:Pong ,breakout,seaquest,space invaders 和 beam rider。我們沒有繪製高層計算代價的系統性搜尋表格。然後,所有的引數在玩其他遊戲過程中會固定下來。所有的超引數的描述和值都在擴充套件表1中提供了。

         我們實驗性的設定,相當於進行了如下少量的先驗知識:輸入的資料包含了:視覺影象(用於輸入卷積神經網路),遊戲的分數(沒有修改),採取的動作,儘管沒有對應(沒有細化哪個是向上的按鍵)以及生命計數器

         評價步驟。訓練好的機器人玩30次的遊戲,每次5分鐘,每次玩遊戲是不同的隨機初始化。(沒有優化,擴充套件資料表1)並且 。這個過程主要是為了最小化評價過程中的過度擬合的可能。隨機的機器人以一個基本的。。。並且以10hz的頻率隨機的選擇動作,這個10hz是每隔6幅影象一個動作的,在內部的影象中維持其動作。10hz這個頻率是人類玩家以最快的時間選擇“開火”按鍵的時間,以這個頻率設定隨機機器人動作可以避免欺騙性的基本分數,以手動玩遊戲時候。我們也會以60hz的速度評價機器人隨機選擇的動作。這樣有一個最小的影響:會改變六種遊戲的以5%的正常表現,並且在所有的遊戲中DQN網路以很小的差距和人類的專業玩家。

         專業的遊戲測試人員使用和機器人相同的模擬器,並且在控制規則下操作。人類的玩家不允許中途暫停、儲存或者重新載入遊戲。在原始的Atri2600中,模擬器以60hz的頻率進行工作,聲音輸出是禁止的:像這樣,人類遊戲者和機器人對輸入進行評價。人類的評價是一個回報的平均。即由每個遊戲最長5分鐘的片段,大約20個片段的平均,每個遊戲大約玩兩個小時。

         演算法         我們考慮機器人在一個模擬器組成的環境中和環境進行互動,也就是Atari模擬器,觀察當前的狀態然後採取一些列的動作,然後獲得回報。在每個步驟中,機器人從動作集合 中選擇一個合法的動作 。然後,這個動作被輸入到模擬器中,模擬器會改變內部的狀態和分數。事實上,環境的狀態是隨機的。模擬器內部的狀態機器人是觀察不到的;反之,機器人只能通過觀察模擬器的輸出影象來了解模擬器的狀態,它是模擬器當前狀態在螢幕上的畫素值。此外,機器人獲得一個回報,這個回報體現在螢幕的分數上。注意:通常意義上,分數是依賴於之前的一些列的動作的回報;一個動作的反饋會在幾千步之後才能獲得。

         因為機器人僅僅觀察當前的螢幕,任務被部分的觀察到並且模擬器的狀態感覺被別名化了(也就是,從當前的螢幕狀態 出發完全地理解當前模擬器的狀態是不可能的)因此,動作和觀察的序列被輸入到演算法,然後演算法根據這些輸入序列學習到策略。在模擬器中,序列假定在一個確定的數量的時間步驟結束。這種形式使得結果得到很大的提升,但是確定的MDP過程中序列是離散的狀態。結果,我們可以將標準的強化學習過程應用到MDPs演算法中,通過簡單的將complete sequence 當做t時間的狀態表現。

         機器人的目的是通過選擇一個能夠使未來回報最大的動作而和模擬器進行互動。我們做一個假定:未來回報被一個 折中,(它在整個過程中都是0.99),然後定義t時刻的未來折中回報 ,這裡的T是遊戲結束時的時間。我們把 定義為通過任意的策略獲得的最大回報時的action-value,他觀察了一些序列s之後,然後採取一些動作a, = 這裡的 是一個動作對映的策略(或者某個動作下的分佈)

         最優的動作-值函式遵循一個重要的恆等式,也就是貝爾曼等式。它基於一下的直覺:如果序列 的最優動作-值函式的下一階段的所有的可能採取的動作 都是已知的。然後最優的策略就是選擇一個動作 ,使得期望的值 最大:

         很多強化學習演算法背後的思想都是利用貝爾曼函式作為一個迭代公式,來評價動作-值函式, 這個演算法收斂到最優的動作-值函式, 。在實際中,這個基本的方法是行不通的,因為動作-值函式對每個序列的評價都是獨立的額,沒有泛化。取而代之,使用一個近似的函式來評價動作-值函式, 在強化學習社群中通常選擇一個線性的近似函式,有時也使用一個非線性的近似函式,比如神經網路。我們在神經網路函式中設定了一個權值 作為一個Q值網路。這個Q值網路可以通過在第i次的迭代來降低貝爾曼函式的平方差,這裡的優化目標 被一個近似的目標函式 ,這裡的 是上一次迭代的值。這個改變使得每次都會改變的代價函式 在第i迭代後都會改變,