深度增強學習前沿算法思想【DQN、A3C、UNREAL,簡介】

作者:Flood Sung,CSDN博主,人工智能方向研究生,專注於深度學習,增強學習與機器人的研究。

責編:何永燦,歡迎人工智能領域技術投稿、約稿、給文章糾錯,請發送郵件至[email protected]

本文爲《程序員》原創文章,未經允許不得轉載,更多精彩文章請訂閱2017年《程序員》

2016年AlphaGo計算機圍棋系統戰勝頂尖職業棋手李世石,引起了全世界的廣泛關注,人工智能進一步被推到了風口浪尖。而其中的深度增強學習算法是AlphaGo的核心,也是通用人工智能的實現關鍵。本文將帶領大家瞭解深度增強學習的前沿算法思想,領略人工智能的核心奧祕。

前言

深度增強學習(Deep Reinforcement Learning,DRL)是近兩年來深度學習領域迅猛發展起來的一個分支,目的是解決計算機從感知到決策控制的問題,從而實現通用人工智能。以Google DeepMind公司爲首,基於深度增強學習的算法已經在視頻、遊戲、圍棋、機器人等領域取得了突破性進展。2016年Google DeepMind推出的AlphaGo圍棋系統,使用蒙特卡洛樹搜索和深度學習結合的方式使計算機的圍棋水平達到甚至超過了頂尖職業棋手的水平,引起了世界性的轟動。AlphaGo的核心就在於使用了深度增強學習算法,使得計算機能夠通過自對弈的方式不斷提升棋力。深度增強學習算法由於能夠基於深度神經網絡實現從感知到決策控制的端到端自學習,具有非常廣闊的應用前景,它的發展也將進一步推動人工智能的革命。

深度增強學習與通用人工智能

當前深度學習已經在計算機視覺、語音識別、自然語言理解等領域取得了突破,相關技術也已經逐漸成熟並落地進入到我們的生活當中。然而,這些領域研究的問題都只是爲了讓計算機能夠感知和理解這個世界。以此同時,決策控制纔是人工智能領域要解決的核心問題。計算機視覺等感知問題要求輸入感知信息到計算機,計算機能夠理解,而決策控制問題則要求計算機能夠根據感知信息進行判斷思考,輸出正確的行爲。要使計算機能夠很好地決策控制,要求計算機具備一定的“思考”能力,使計算機能夠通過學習來掌握解決各種問題的能力,而這正是通用人工智能(Artificial General Intelligence,AGI)(即強人工智能)的研究目標。通用人工智能是要創造出一種無需人工編程自己學會解決各種問題的智能體,最終目標是實現類人級別甚至超人級別的智能。

通用人工智能的基本框架即是增強學習(Reinforcement Learning,RL)的框架,如圖1所示。

圖1 通用人工智能基本框架

智能體的行爲都可以歸結爲與世界的交互。智能體觀察這個世界,然後根據觀察及自身的狀態輸出動作,這個世界會因此而發生改變,從而形成回饋返回給智能體。所以核心問題就是如何構建出這樣一個能夠與世界交互的智能體。深度增強學習將深度學習(Deep Learning)和增強學習(Reinforcement Learning)結合起來,深度學習用來提供學習的機制,而增強學習爲深度學習提供學習的目標。這使得深度增強學習具備構建出複雜智能體的潛力,也因此,AlphaGo的第一作者David Silver認爲深度增強學習等價於通用人工智能DRL=DL+RL=Universal AI。

深度增強學習的Actor-Critic框架

目前深度增強學習的算法都可以包含在Actor-Critic框架下,如圖2所示。

圖2 Actor-Critic框架

把深度增強學習的算法認爲是智能體的大腦,那麼這個大腦包含了兩個部分:Actor行動模塊和Critic評判模塊。其中Actor行動模塊是大腦的執行機構,輸入外部的狀態s,然後輸出動作a。而Critic評判模塊則可認爲是大腦的價值觀,根據歷史信息及回饋r進行自我調整,然後影響整個Actor行動模塊。這種Actor-Critic的方法非常類似於人類自身的行爲方式。我們人類也是在自身價值觀和本能的指導下進行行爲,並且價值觀受經驗的影響不斷改變。在Actor-Critic框架下,Google DeepMind相繼提出了DQN,A3C和UNREAL等深度增強學習算法,其中UNREAL是目前最好的深度增強學習算法。下面我們將介紹這三個算法的基本思想。

DQN(Deep Q Network)算法

DQN是Google DeepMind於2013年提出的第一個深度增強學習算法,並在2015年進一步完善,發表在2015年的《Nature》上。DeepMind將DQN應用在計算機玩Atari遊戲上,不同於以往的做法,僅使用視頻信息作爲輸入,和人類玩遊戲一樣。在這種情況下,基於DQN的程序在多種Atari遊戲上取得了超越人類水平的成績。這是深度增強學習概念的第一次提出,並由此開始快速發展。

DQN算法面向相對簡單的離散輸出,即輸出的動作僅有少數有限的個數。在這種情況下,DQN算法在Actor-Critic框架下僅使用Critic評判模塊,而沒有使用Actor行動模塊,因爲使用Critic評判模塊即可以選擇並執行最優的動作,如圖3所示。

圖3 DQN基本結構

在DQN中,用一個價值網絡(Value Network)來表示Critic評判模塊,價值網絡輸出Q(s,a),即狀態s和動作a下的價值。基於價值網絡,我們可以遍歷某個狀態s下各種動作的價值,然後選擇價值最大的一個動作輸出。所以,主要問題是如何通過深度學習的隨機梯度下降方法來更新價值網絡。爲了使用梯度下降方法,我們必須爲價值網絡構造一個損失函數。由於價值網絡輸出的是Q值,因此如果能夠構造出一個目標Q值,就能夠通過平方差MSE的方式來得到損失函數。但對於價值網絡來說,輸入的信息僅有狀態s,動作a及回饋r。因此,如何計算出目標Q值是DQN算法的關鍵,而這正是增強學習能夠解決的問題。基於增強學習的Bellman公式,我們能夠基於輸入信息特別是回饋r構造出目標Q值,從而得到損失函數,對價值網絡進行更新。

圖4 UNREAL算法框圖

在實際使用中,價值網絡可以根據具體的問題構造不同的網絡形式。比如Atari有些輸入的是圖像信息,就可以構造一個卷積神經網絡(Convolutional Neural Network,CNN)來作爲價值網絡。爲了增加對歷史信息的記憶,還可以在CNN之後加上LSTM長短記憶模型。在DQN訓練的時候,先採集歷史的輸入輸出信息作爲樣本放在經驗池(Replay Memory)裏面,然後通過隨機採樣的方式採樣多個樣本進行minibatch的隨機梯度下降訓練。

DQN算法作爲第一個深度增強學習算法,僅使用價值網絡,訓練效率較低,需要大量的時間訓練,並且只能面向低維的離散控制問題,通用性有限。但由於DQN算法第一次成功結合了深度學習和增強學習,解決了高維數據輸入問題,並且在Atari遊戲上取得突破,具有開創性的意義。

A3C(Asynchronous Advantage Actor Critic)算法

A3C算法是2015年DeepMind提出的相比DQN更好更通用的一個深度增強學習算法。A3C算法完全使用了Actor-Critic框架,並且引入了異步訓練的思想,在提升性能的同時也大大加快了訓練速度。A3C算法的基本思想,即Actor-Critic的基本思想,是對輸出的動作進行好壞評估,如果動作被認爲是好的,那麼就調整行動網絡(Actor Network)使該動作出現的可能性增加。反之如果動作被認爲是壞的,則使該動作出現的可能性減少。通過反覆的訓練,不斷調整行動網絡找到最優的動作。AlphaGo的自我學習也是基於這樣的思想。

基於Actor-Critic的基本思想,Critic評判模塊的價值網絡(Value Network)可以採用DQN的方法進行更新,那麼如何構造行動網絡的損失函數,實現對網絡的訓練是算法的關鍵。一般行動網絡的輸出有兩種方式:一種是概率的方式,即輸出某一個動作的概率;另一種是確定性的方式,即輸出具體的某一個動作。A3C採用的是概率輸出的方式。因此,我們從Critic評判模塊,即價值網絡中得到對動作的好壞評價,然後用輸出動作的對數似然值(Log Likelihood)乘以動作的評價,作爲行動網絡的損失函數。行動網絡的目標是最大化這個損失函數,即如果動作評價爲正,就增加其概率,反之減少,符合Actor-Critic的基本思想。有了行動網絡的損失函數,也就可以通過隨機梯度下降的方式進行參數的更新。

爲了使算法取得更好的效果,如何準確地評價動作的好壞也是算法的關鍵。A3C在動作價值Q的基礎上,使用優勢A(Advantage)作爲動作的評價。優勢A是指動作a在狀態s下相對其他動作的優勢。假設狀態s的價值是V,那麼A=Q-V。這裏的動作價值Q是指狀態s下a的價值,與V的含義不同。直觀上看,採用優勢A來評估動作更爲準確。舉個例子來說,假設在狀態s下,動作1的Q值是3,動作2的Q值是1,狀態s的價值V是2。如果使用Q作爲動作的評價,那麼動作1和2的出現概率都會增加,但是實際上我們知道唯一要增加出現概率的是動作1。這時如果採用優勢A,我們可以計算出動作1的優勢是1,動作2的優勢是-1。基於優勢A來更新網絡,動作1的出現概率增加,動作2的出現概率減少,更符合我們的目標。因此,A3C算法調整了Critic評判模塊的價值網絡,讓其輸出V值,然後使用多步的歷史信息來計算動作的Q值,從而得到優勢A,進而計算出損失函數,對行動網絡進行更新。

A3C算法爲了提升訓練速度還採用異步訓練的思想,即同時啓動多個訓練環境,同時進行採樣,並直接使用採集的樣本進行訓練。相比DQN算法,A3C算法不需要使用經驗池來存儲歷史樣本,節約了存儲空間,並且採用異步訓練,大大加倍了數據的採樣速度,也因此提升了訓練速度。與此同時,採用多個不同訓練環境採集樣本,樣本的分佈更加均勻,更有利於神經網絡的訓練。

A3C算法在以上多個環節上做出了改進,使得其在Atari遊戲上的平均成績是DQN算法的4倍,取得了巨大的提升,並且訓練速度也成倍的增加。因此,A3C算法取代了DQN成爲了更好的深度增強學習算法。

UNREAL(UNsupervised REinforcement and Auxiliary Learning)算法

UNREAL算法是2016年11月DeepMind提出的最新深度增強學習算法,在A3C算法的基礎上對性能和速度進行進一步提升,在Atari遊戲上取得了人類水平8.8倍的成績,並且在第一視角的3D迷宮環境Labyrinth上也達到了87%的人類水平,成爲當前最好的深度增強學習算法。

A3C算法充分使用了Actor-Critic框架,是一套完善的算法,因此,我們很難通過改變算法框架的方式來對算法做出改進。UNREAL算法在A3C算法的基礎上,另闢蹊徑,通過在訓練A3C的同時,訓練多個輔助任務來改進算法。UNREAL算法的基本思想來源於我們人類的學習方式。人要完成一個任務,往往通過完成其他多種輔助任務來實現。比如說我們要收集郵票,可以自己去買,也可以讓朋友幫忙獲取,或者和其他人交換的方式得到。UNREAL算法通過設置多個輔助任務,同時訓練同一個A3C網絡,從而加快學習的速度,並進一步提升性能。

在UNREAL算法中,包含了兩類輔助任務:第一種是控制任務,包括像素控制和隱藏層激活控制。像素控制是指控制輸入圖像的變化,使得圖像的變化最大。因爲圖像變化大往往說明智能體在執行重要的環節,通過控制圖像的變化能夠改善動作的選擇。隱藏層激活控制則是控制隱藏層神經元的激活數量,目的是使其激活量越多越好。這類似於人類大腦細胞的開發,神經元使用得越多,可能越聰明,也因此能夠做出更好的選擇。另一種輔助任務是回饋預測任務。因爲在很多場景下,回饋r並不是每時每刻都能獲取的(比如在Labyrinth中吃到蘋果才能得1分),所以讓神經網絡能夠預測回饋值會使其具有更好的表達能力。在UNREAL算法中,使用歷史連續多幀的圖像輸入來預測下一步的回饋值作爲訓練目標。除了以上兩種回饋預測任務外,UNREAL算法還使用歷史信息額外增加了價值迭代任務,即DQN的更新方法,進一步提升算法的訓練速度。

UNREAL算法本質上是通過訓練多個面向同一個最終目標的任務來提升行動網絡的表達能力和水平,符合人類的學習方式。值得注意的是,UNREAL雖然增加了訓練任務,但並沒有通過其他途徑獲取別的樣本,是在保持原有樣本數據不變的情況下對算法進行提升,這使得UNREAL算法被認爲是一種無監督學習的方法。基於UNREAL算法的思想,可以根據不同任務的特點針對性地設計輔助任務,來改進算法。

小結

深度增強學習經過近兩年的發展,在算法層面上取得了越來越好的效果。從DQN,A3C到UNREAL,精妙的算法設計無不閃耀着人類智慧的光芒。在未來,除了算法本身的改進,深度增強學習作爲能夠解決從感知到決策控制的通用型學習算法,將能夠在現實生活中的各種領域得到廣泛的應用。AlphaGo的成功只是通用人工智能爆發的前夜。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章