深度增强学习前沿算法思想
作者:?Flood Sung,CSDN博主,人工智能方向研究生,專(zhuān)注于深度學(xué)習(xí),增強(qiáng)學(xué)習(xí)與機(jī)器人的研究。?
責(zé)編:何永燦,歡迎人工智能領(lǐng)域技術(shù)投稿、約稿、給文章糾錯(cuò),請(qǐng)發(fā)送郵件至heyc@csdn.net?
本文為《程序員》原創(chuàng)文章,未經(jīng)允許不得轉(zhuǎn)載,更多精彩文章請(qǐng)訂閱2017年《程序員》
2016年AlphaGo計(jì)算機(jī)圍棋系統(tǒng)戰(zhàn)勝頂尖職業(yè)棋手李世石,引起了全世界的廣泛關(guān)注,人工智能進(jìn)一步被推到了風(fēng)口浪尖。而其中的深度增強(qiáng)學(xué)習(xí)算法是AlphaGo的核心,也是通用人工智能的實(shí)現(xiàn)關(guān)鍵。本文將帶領(lǐng)大家了解深度增強(qiáng)學(xué)習(xí)的前沿算法思想,領(lǐng)略人工智能的核心奧秘。
前言
深度增強(qiáng)學(xué)習(xí)(Deep Reinforcement Learning,DRL)是近兩年來(lái)深度學(xué)習(xí)領(lǐng)域迅猛發(fā)展起來(lái)的一個(gè)分支,目的是解決計(jì)算機(jī)從感知到?jīng)Q策控制的問(wèn)題,從而實(shí)現(xiàn)通用人工智能。以Google DeepMind公司為首,基于深度增強(qiáng)學(xué)習(xí)的算法已經(jīng)在視頻、游戲、圍棋、機(jī)器人等領(lǐng)域取得了突破性進(jìn)展。2016年Google DeepMind推出的AlphaGo圍棋系統(tǒng),使用蒙特卡洛樹(shù)搜索和深度學(xué)習(xí)結(jié)合的方式使計(jì)算機(jī)的圍棋水平達(dá)到甚至超過(guò)了頂尖職業(yè)棋手的水平,引起了世界性的轟動(dòng)。AlphaGo的核心就在于使用了深度增強(qiáng)學(xué)習(xí)算法,使得計(jì)算機(jī)能夠通過(guò)自對(duì)弈的方式不斷提升棋力。深度增強(qiáng)學(xué)習(xí)算法由于能夠基于深度神經(jīng)網(wǎng)絡(luò)實(shí)現(xiàn)從感知到?jīng)Q策控制的端到端自學(xué)習(xí),具有非常廣闊的應(yīng)用前景,它的發(fā)展也將進(jìn)一步推動(dòng)人工智能的革命。
深度增強(qiáng)學(xué)習(xí)與通用人工智能
當(dāng)前深度學(xué)習(xí)已經(jīng)在計(jì)算機(jī)視覺(jué)、語(yǔ)音識(shí)別、自然語(yǔ)言理解等領(lǐng)域取得了突破,相關(guān)技術(shù)也已經(jīng)逐漸成熟并落地進(jìn)入到我們的生活當(dāng)中。然而,這些領(lǐng)域研究的問(wèn)題都只是為了讓計(jì)算機(jī)能夠感知和理解這個(gè)世界。以此同時(shí),決策控制才是人工智能領(lǐng)域要解決的核心問(wèn)題。計(jì)算機(jī)視覺(jué)等感知問(wèn)題要求輸入感知信息到計(jì)算機(jī),計(jì)算機(jī)能夠理解,而決策控制問(wèn)題則要求計(jì)算機(jī)能夠根據(jù)感知信息進(jìn)行判斷思考,輸出正確的行為。要使計(jì)算機(jī)能夠很好地決策控制,要求計(jì)算機(jī)具備一定的“思考”能力,使計(jì)算機(jī)能夠通過(guò)學(xué)習(xí)來(lái)掌握解決各種問(wèn)題的能力,而這正是通用人工智能(Artificial General Intelligence,AGI)(即強(qiáng)人工智能)的研究目標(biāo)。通用人工智能是要?jiǎng)?chuàng)造出一種無(wú)需人工編程自己學(xué)會(huì)解決各種問(wèn)題的智能體,最終目標(biāo)是實(shí)現(xiàn)類(lèi)人級(jí)別甚至超人級(jí)別的智能。
通用人工智能的基本框架即是增強(qiáng)學(xué)習(xí)(Reinforcement Learning,RL)的框架,如圖1所示。
智能體的行為都可以歸結(jié)為與世界的交互。智能體觀察這個(gè)世界,然后根據(jù)觀察及自身的狀態(tài)輸出動(dòng)作,這個(gè)世界會(huì)因此而發(fā)生改變,從而形成回饋返回給智能體。所以核心問(wèn)題就是如何構(gòu)建出這樣一個(gè)能夠與世界交互的智能體。深度增強(qiáng)學(xué)習(xí)將深度學(xué)習(xí)(Deep Learning)和增強(qiáng)學(xué)習(xí)(Reinforcement Learning)結(jié)合起來(lái),深度學(xué)習(xí)用來(lái)提供學(xué)習(xí)的機(jī)制,而增強(qiáng)學(xué)習(xí)為深度學(xué)習(xí)提供學(xué)習(xí)的目標(biāo)。這使得深度增強(qiáng)學(xué)習(xí)具備構(gòu)建出復(fù)雜智能體的潛力,也因此,AlphaGo的第一作者David Silver認(rèn)為深度增強(qiáng)學(xué)習(xí)等價(jià)于通用人工智能DRL=DL+RL=Universal AI。
深度增強(qiáng)學(xué)習(xí)的Actor-Critic框架
目前深度增強(qiáng)學(xué)習(xí)的算法都可以包含在Actor-Critic框架下,如圖2所示。
把深度增強(qiáng)學(xué)習(xí)的算法認(rèn)為是智能體的大腦,那么這個(gè)大腦包含了兩個(gè)部分:Actor行動(dòng)模塊和Critic評(píng)判模塊。其中Actor行動(dòng)模塊是大腦的執(zhí)行機(jī)構(gòu),輸入外部的狀態(tài)s,然后輸出動(dòng)作a。而Critic評(píng)判模塊則可認(rèn)為是大腦的價(jià)值觀,根據(jù)歷史信息及回饋r進(jìn)行自我調(diào)整,然后影響整個(gè)Actor行動(dòng)模塊。這種Actor-Critic的方法非常類(lèi)似于人類(lèi)自身的行為方式。我們?nèi)祟?lèi)也是在自身價(jià)值觀和本能的指導(dǎo)下進(jìn)行行為,并且價(jià)值觀受經(jīng)驗(yàn)的影響不斷改變。在Actor-Critic框架下,Google DeepMind相繼提出了DQN,A3C和UNREAL等深度增強(qiáng)學(xué)習(xí)算法,其中UNREAL是目前最好的深度增強(qiáng)學(xué)習(xí)算法。下面我們將介紹這三個(gè)算法的基本思想。
DQN(Deep Q Network)算法
DQN是Google DeepMind于2013年提出的第一個(gè)深度增強(qiáng)學(xué)習(xí)算法,并在2015年進(jìn)一步完善,發(fā)表在2015年的《Nature》上。DeepMind將DQN應(yīng)用在計(jì)算機(jī)玩Atari游戲上,不同于以往的做法,僅使用視頻信息作為輸入,和人類(lèi)玩游戲一樣。在這種情況下,基于DQN的程序在多種Atari游戲上取得了超越人類(lèi)水平的成績(jī)。這是深度增強(qiáng)學(xué)習(xí)概念的第一次提出,并由此開(kāi)始快速發(fā)展。
DQN算法面向相對(duì)簡(jiǎn)單的離散輸出,即輸出的動(dòng)作僅有少數(shù)有限的個(gè)數(shù)。在這種情況下,DQN算法在Actor-Critic框架下僅使用Critic評(píng)判模塊,而沒(méi)有使用Actor行動(dòng)模塊,因?yàn)槭褂肅ritic評(píng)判模塊即可以選擇并執(zhí)行最優(yōu)的動(dòng)作,如圖3所示。
在DQN中,用一個(gè)價(jià)值網(wǎng)絡(luò)(Value Network)來(lái)表示Critic評(píng)判模塊,價(jià)值網(wǎng)絡(luò)輸出Q(s,a),即狀態(tài)s和動(dòng)作a下的價(jià)值。基于價(jià)值網(wǎng)絡(luò),我們可以遍歷某個(gè)狀態(tài)s下各種動(dòng)作的價(jià)值,然后選擇價(jià)值最大的一個(gè)動(dòng)作輸出。所以,主要問(wèn)題是如何通過(guò)深度學(xué)習(xí)的隨機(jī)梯度下降方法來(lái)更新價(jià)值網(wǎng)絡(luò)。為了使用梯度下降方法,我們必須為價(jià)值網(wǎng)絡(luò)構(gòu)造一個(gè)損失函數(shù)。由于價(jià)值網(wǎng)絡(luò)輸出的是Q值,因此如果能夠構(gòu)造出一個(gè)目標(biāo)Q值,就能夠通過(guò)平方差MSE的方式來(lái)得到損失函數(shù)。但對(duì)于價(jià)值網(wǎng)絡(luò)來(lái)說(shuō),輸入的信息僅有狀態(tài)s,動(dòng)作a及回饋r。因此,如何計(jì)算出目標(biāo)Q值是DQN算法的關(guān)鍵,而這正是增強(qiáng)學(xué)習(xí)能夠解決的問(wèn)題。基于增強(qiáng)學(xué)習(xí)的Bellman公式,我們能夠基于輸入信息特別是回饋r構(gòu)造出目標(biāo)Q值,從而得到損失函數(shù),對(duì)價(jià)值網(wǎng)絡(luò)進(jìn)行更新。
在實(shí)際使用中,價(jià)值網(wǎng)絡(luò)可以根據(jù)具體的問(wèn)題構(gòu)造不同的網(wǎng)絡(luò)形式。比如Atari有些輸入的是圖像信息,就可以構(gòu)造一個(gè)卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network,CNN)來(lái)作為價(jià)值網(wǎng)絡(luò)。為了增加對(duì)歷史信息的記憶,還可以在CNN之后加上LSTM長(zhǎng)短記憶模型。在DQN訓(xùn)練的時(shí)候,先采集歷史的輸入輸出信息作為樣本放在經(jīng)驗(yàn)池(Replay Memory)里面,然后通過(guò)隨機(jī)采樣的方式采樣多個(gè)樣本進(jìn)行minibatch的隨機(jī)梯度下降訓(xùn)練。
DQN算法作為第一個(gè)深度增強(qiáng)學(xué)習(xí)算法,僅使用價(jià)值網(wǎng)絡(luò),訓(xùn)練效率較低,需要大量的時(shí)間訓(xùn)練,并且只能面向低維的離散控制問(wèn)題,通用性有限。但由于DQN算法第一次成功結(jié)合了深度學(xué)習(xí)和增強(qiáng)學(xué)習(xí),解決了高維數(shù)據(jù)輸入問(wèn)題,并且在Atari游戲上取得突破,具有開(kāi)創(chuàng)性的意義。
A3C(Asynchronous Advantage Actor Critic)算法
A3C算法是2015年DeepMind提出的相比DQN更好更通用的一個(gè)深度增強(qiáng)學(xué)習(xí)算法。A3C算法完全使用了Actor-Critic框架,并且引入了異步訓(xùn)練的思想,在提升性能的同時(shí)也大大加快了訓(xùn)練速度。A3C算法的基本思想,即Actor-Critic的基本思想,是對(duì)輸出的動(dòng)作進(jìn)行好壞評(píng)估,如果動(dòng)作被認(rèn)為是好的,那么就調(diào)整行動(dòng)網(wǎng)絡(luò)(Actor Network)使該動(dòng)作出現(xiàn)的可能性增加。反之如果動(dòng)作被認(rèn)為是壞的,則使該動(dòng)作出現(xiàn)的可能性減少。通過(guò)反復(fù)的訓(xùn)練,不斷調(diào)整行動(dòng)網(wǎng)絡(luò)找到最優(yōu)的動(dòng)作。AlphaGo的自我學(xué)習(xí)也是基于這樣的思想。
基于Actor-Critic的基本思想,Critic評(píng)判模塊的價(jià)值網(wǎng)絡(luò)(Value Network)可以采用DQN的方法進(jìn)行更新,那么如何構(gòu)造行動(dòng)網(wǎng)絡(luò)的損失函數(shù),實(shí)現(xiàn)對(duì)網(wǎng)絡(luò)的訓(xùn)練是算法的關(guān)鍵。一般行動(dòng)網(wǎng)絡(luò)的輸出有兩種方式:一種是概率的方式,即輸出某一個(gè)動(dòng)作的概率;另一種是確定性的方式,即輸出具體的某一個(gè)動(dòng)作。A3C采用的是概率輸出的方式。因此,我們從Critic評(píng)判模塊,即價(jià)值網(wǎng)絡(luò)中得到對(duì)動(dòng)作的好壞評(píng)價(jià),然后用輸出動(dòng)作的對(duì)數(shù)似然值(Log Likelihood)乘以動(dòng)作的評(píng)價(jià),作為行動(dòng)網(wǎng)絡(luò)的損失函數(shù)。行動(dòng)網(wǎng)絡(luò)的目標(biāo)是最大化這個(gè)損失函數(shù),即如果動(dòng)作評(píng)價(jià)為正,就增加其概率,反之減少,符合Actor-Critic的基本思想。有了行動(dòng)網(wǎng)絡(luò)的損失函數(shù),也就可以通過(guò)隨機(jī)梯度下降的方式進(jìn)行參數(shù)的更新。
為了使算法取得更好的效果,如何準(zhǔn)確地評(píng)價(jià)動(dòng)作的好壞也是算法的關(guān)鍵。A3C在動(dòng)作價(jià)值Q的基礎(chǔ)上,使用優(yōu)勢(shì)A(Advantage)作為動(dòng)作的評(píng)價(jià)。優(yōu)勢(shì)A是指動(dòng)作a在狀態(tài)s下相對(duì)其他動(dòng)作的優(yōu)勢(shì)。假設(shè)狀態(tài)s的價(jià)值是V,那么A=Q-V。這里的動(dòng)作價(jià)值Q是指狀態(tài)s下a的價(jià)值,與V的含義不同。直觀上看,采用優(yōu)勢(shì)A來(lái)評(píng)估動(dòng)作更為準(zhǔn)確。舉個(gè)例子來(lái)說(shuō),假設(shè)在狀態(tài)s下,動(dòng)作1的Q值是3,動(dòng)作2的Q值是1,狀態(tài)s的價(jià)值V是2。如果使用Q作為動(dòng)作的評(píng)價(jià),那么動(dòng)作1和2的出現(xiàn)概率都會(huì)增加,但是實(shí)際上我們知道唯一要增加出現(xiàn)概率的是動(dòng)作1。這時(shí)如果采用優(yōu)勢(shì)A,我們可以計(jì)算出動(dòng)作1的優(yōu)勢(shì)是1,動(dòng)作2的優(yōu)勢(shì)是-1。基于優(yōu)勢(shì)A來(lái)更新網(wǎng)絡(luò),動(dòng)作1的出現(xiàn)概率增加,動(dòng)作2的出現(xiàn)概率減少,更符合我們的目標(biāo)。因此,A3C算法調(diào)整了Critic評(píng)判模塊的價(jià)值網(wǎng)絡(luò),讓其輸出V值,然后使用多步的歷史信息來(lái)計(jì)算動(dòng)作的Q值,從而得到優(yōu)勢(shì)A,進(jìn)而計(jì)算出損失函數(shù),對(duì)行動(dòng)網(wǎng)絡(luò)進(jìn)行更新。
A3C算法為了提升訓(xùn)練速度還采用異步訓(xùn)練的思想,即同時(shí)啟動(dòng)多個(gè)訓(xùn)練環(huán)境,同時(shí)進(jìn)行采樣,并直接使用采集的樣本進(jìn)行訓(xùn)練。相比DQN算法,A3C算法不需要使用經(jīng)驗(yàn)池來(lái)存儲(chǔ)歷史樣本,節(jié)約了存儲(chǔ)空間,并且采用異步訓(xùn)練,大大加倍了數(shù)據(jù)的采樣速度,也因此提升了訓(xùn)練速度。與此同時(shí),采用多個(gè)不同訓(xùn)練環(huán)境采集樣本,樣本的分布更加均勻,更有利于神經(jīng)網(wǎng)絡(luò)的訓(xùn)練。
A3C算法在以上多個(gè)環(huán)節(jié)上做出了改進(jìn),使得其在Atari游戲上的平均成績(jī)是DQN算法的4倍,取得了巨大的提升,并且訓(xùn)練速度也成倍的增加。因此,A3C算法取代了DQN成為了更好的深度增強(qiáng)學(xué)習(xí)算法。
UNREAL(UNsupervised REinforcement and Auxiliary Learning)算法
UNREAL算法是2016年11月DeepMind提出的最新深度增強(qiáng)學(xué)習(xí)算法,在A3C算法的基礎(chǔ)上對(duì)性能和速度進(jìn)行進(jìn)一步提升,在Atari游戲上取得了人類(lèi)水平8.8倍的成績(jī),并且在第一視角的3D迷宮環(huán)境Labyrinth上也達(dá)到了87%的人類(lèi)水平,成為當(dāng)前最好的深度增強(qiáng)學(xué)習(xí)算法。
A3C算法充分使用了Actor-Critic框架,是一套完善的算法,因此,我們很難通過(guò)改變算法框架的方式來(lái)對(duì)算法做出改進(jìn)。UNREAL算法在A3C算法的基礎(chǔ)上,另辟蹊徑,通過(guò)在訓(xùn)練A3C的同時(shí),訓(xùn)練多個(gè)輔助任務(wù)來(lái)改進(jìn)算法。UNREAL算法的基本思想來(lái)源于我們?nèi)祟?lèi)的學(xué)習(xí)方式。人要完成一個(gè)任務(wù),往往通過(guò)完成其他多種輔助任務(wù)來(lái)實(shí)現(xiàn)。比如說(shuō)我們要收集郵票,可以自己去買(mǎi),也可以讓朋友幫忙獲取,或者和其他人交換的方式得到。UNREAL算法通過(guò)設(shè)置多個(gè)輔助任務(wù),同時(shí)訓(xùn)練同一個(gè)A3C網(wǎng)絡(luò),從而加快學(xué)習(xí)的速度,并進(jìn)一步提升性能。
在UNREAL算法中,包含了兩類(lèi)輔助任務(wù):第一種是控制任務(wù),包括像素控制和隱藏層激活控制。像素控制是指控制輸入圖像的變化,使得圖像的變化最大。因?yàn)閳D像變化大往往說(shuō)明智能體在執(zhí)行重要的環(huán)節(jié),通過(guò)控制圖像的變化能夠改善動(dòng)作的選擇。隱藏層激活控制則是控制隱藏層神經(jīng)元的激活數(shù)量,目的是使其激活量越多越好。這類(lèi)似于人類(lèi)大腦細(xì)胞的開(kāi)發(fā),神經(jīng)元使用得越多,可能越聰明,也因此能夠做出更好的選擇。另一種輔助任務(wù)是回饋預(yù)測(cè)任務(wù)。因?yàn)樵诤芏鄨?chǎng)景下,回饋r并不是每時(shí)每刻都能獲取的(比如在Labyrinth中吃到蘋(píng)果才能得1分),所以讓神經(jīng)網(wǎng)絡(luò)能夠預(yù)測(cè)回饋值會(huì)使其具有更好的表達(dá)能力。在UNREAL算法中,使用歷史連續(xù)多幀的圖像輸入來(lái)預(yù)測(cè)下一步的回饋值作為訓(xùn)練目標(biāo)。除了以上兩種回饋預(yù)測(cè)任務(wù)外,UNREAL算法還使用歷史信息額外增加了價(jià)值迭代任務(wù),即DQN的更新方法,進(jìn)一步提升算法的訓(xùn)練速度。
UNREAL算法本質(zhì)上是通過(guò)訓(xùn)練多個(gè)面向同一個(gè)最終目標(biāo)的任務(wù)來(lái)提升行動(dòng)網(wǎng)絡(luò)的表達(dá)能力和水平,符合人類(lèi)的學(xué)習(xí)方式。值得注意的是,UNREAL雖然增加了訓(xùn)練任務(wù),但并沒(méi)有通過(guò)其他途徑獲取別的樣本,是在保持原有樣本數(shù)據(jù)不變的情況下對(duì)算法進(jìn)行提升,這使得UNREAL算法被認(rèn)為是一種無(wú)監(jiān)督學(xué)習(xí)的方法。基于UNREAL算法的思想,可以根據(jù)不同任務(wù)的特點(diǎn)針對(duì)性地設(shè)計(jì)輔助任務(wù),來(lái)改進(jìn)算法。
小結(jié)
深度增強(qiáng)學(xué)習(xí)經(jīng)過(guò)近兩年的發(fā)展,在算法層面上取得了越來(lái)越好的效果。從DQN,A3C到UNREAL,精妙的算法設(shè)計(jì)無(wú)不閃耀著人類(lèi)智慧的光芒。在未來(lái),除了算法本身的改進(jìn),深度增強(qiáng)學(xué)習(xí)作為能夠解決從感知到?jīng)Q策控制的通用型學(xué)習(xí)算法,將能夠在現(xiàn)實(shí)生活中的各種領(lǐng)域得到廣泛的應(yīng)用。AlphaGo的成功只是通用人工智能爆發(fā)的前夜。
原文地址: http://geek.csdn.net/news/detail/138103
總結(jié)
以上是生活随笔為你收集整理的深度增强学习前沿算法思想的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: MXNet设计和实现简介
- 下一篇: Android内存分析