AI科技評論按:本文根據(jù)俞揚博士在中國人工智能學會AIDL第二期人工智能前沿講習班“機器學習前沿”所作報告《強化學習前沿》編輯整理而來,,AI科技評論在未改變原意的基礎(chǔ)上略作了刪減,經(jīng)俞揚博士指正確認,,特此感謝,。全文分為上下兩篇,本文為下篇,。 俞揚博士,、副教授,主要研究領(lǐng)域為人工智能,、機器學習,、演化計算。分別于2004年和2011年獲得南京大學計算機科學與技術(shù)系學士學位和博士學位,。 2011年8月加入南京大學計算機科學與技術(shù)系,、機器學習與數(shù)據(jù)挖掘研究所(LAMDA)從事教學與科研工作。曾獲2013年全國優(yōu)秀博士學位論文獎,、2011年中國計算機學會優(yōu)秀博士學位論文獎,。發(fā)表論文40余篇,包括多篇Artificial Intelligence,、IJCAI,、AAAI、NIPS,、KDD等國際一流期刊和會議上,,研究成果獲得IDEAL'16、GECCO'11,、PAKDD'08最佳論文獎,,以及PAKDD’06數(shù)據(jù)挖掘競賽冠軍等,。 任《Frontiers of Computer Science》青年副編輯,任人工智能領(lǐng)域國際頂級會議IJCAI’15/17高級程序委員,、IJCAI'16/17 Publicity Chair,、ICDM'16 Publicity Chair、ACML'16 Workshop Chair,。指導的學生獲天貓“雙十一”推薦大賽百萬大獎,、Google獎學金等。 在此列出俞揚老師講課目錄,,以供讀者參考:
上篇介紹了前兩個小節(jié)的內(nèi)容,,以下為下篇內(nèi)容: 三,、從馬爾可夫決策過程到強化學習在強化學習任務(wù)中,獎賞和轉(zhuǎn)移都是未知的,,需要通過學習得出,。具體解決辦法有兩個: 一種是還原出獎賞函數(shù)和轉(zhuǎn)移函數(shù)。首先把MDP還原出來,,然后再在MDP上解這個策略,,這類方法稱為有模型(Model-Based)方法,這里的模型指的是MDP,。 還有一類和它相對應(yīng)的方法,,免模型(Model-Free)法,即不還原獎賞和轉(zhuǎn)移,。 基于模型的方法在這類方法中,,智能體會維護Model(即MDP),然后從Model中求解策略,。 從隨機策略開始,,把策略放到環(huán)境中運行,從運行的序列數(shù)據(jù)中把MDP恢復出來,。因為序列數(shù)據(jù)可以提供環(huán)境轉(zhuǎn)移和獎賞的監(jiān)督信息,,簡單的做一個回歸,就能知道一個狀態(tài)做了一個動作下面會轉(zhuǎn)移到哪兒,以及能得到的獎賞是多少,。 這里有一個非常簡單的環(huán)境探索方法——RMax,,它用了計數(shù)這個非常簡單的回歸模型。 雖然看起來很簡單,,但是還原MDP的樣本復雜度是狀態(tài)數(shù)的平方,,遠高于前面說到的求解策略的復雜度。從這里可以看出學習MDP的復雜度極高,,所以大量的研究工作都集中在免模型學習上,。 免模型學習免模型學習簡單介紹兩種方法。一種叫做蒙特卡羅采樣方法(Monte-Carlo method),,一種是時序差分法(Temporal difference method)
免模型學習和之前講到的策略迭代的思路很像,,首先,評估當前策略怎么樣,;第二,,提高當前策略。 第一步 評估策略 在MDP里評估策略的時候,,由于獎賞和轉(zhuǎn)移都是知道的,,所以可以直接用這兩個函數(shù)算評估值。現(xiàn)在這兩個函數(shù)都不知道,,那怎么辦呢,? 這個Q值函數(shù)實際上是個期望,,所以直接用采樣來替代期望就可以了,。換句話說,就是拿該策略在環(huán)境里面去跑,,看跑出來什么結(jié)果,。 比如跑了之后我得到一條軌跡:先是出太陽,接著是多云,,最后是出太陽,;再跑第二次得到一條軌跡,再跑第三次又得到一個軌跡,。最后得到很多軌跡,。我知道每條軌跡的獎賞是多少,然后把這些軌跡的獎賞平均起來,,作為這個策略的值函數(shù)的估計,,用頻率來逼近期望。 第二步 更新/提高策略 如此一來,,我們就可以去評價一個策略的好壞,。評價完一個策略以后,就可以和剛才一樣,,取Q值函數(shù)指示最好的動作作為新的策略,,更新過程是一樣的,。 整個算法寫出來比較簡單。我們要做m次采樣,,每一次都把當前的策略拿到環(huán)境里面運行,,然后會得到一個序列,根據(jù)序列讓獎賞求和,,然后更新Q值,,這個Q值就是歷史上采樣的均值,c是計數(shù),。 在一條軌跡下來以后,,更新Q值后,做第二條軌跡,,這樣就做到了不依賴MDP模型的強化學習方法,。 然而該方法缺乏環(huán)境探索,難以更新策略 但是,,這個有一個問題——如果得到了確定性策略,,那么有可能采100個樣本出來的軌跡都是一樣的,導致無法評估策略在所有狀態(tài)上的表現(xiàn),,所以無法提高策略,。這里的關(guān)鍵在于它缺乏對環(huán)境的探索。 如何探索環(huán)境,,以獲得最大回報,? 怎么探索?我們可以考慮一個最簡單的強化學習問題:一個狀態(tài),,兩個動作,,一個動作的回報高一點,一個動作回報低一點,,但是這兩個回報來自于兩個分布,。這個時候你選哪個動作,或者你怎么做能收到最大的回報,?這其實就是bandit模型,。
第一種情況是要有足夠多的探索(即exploration),第二種情況是不需要過多的探索而有更好的投資(即exploitation),,我們要在這兩點之間找到平衡,。 解決這個問題有多種方法。第簡單的方法是,,以1-ε的概率,,現(xiàn)在看好哪個,就去投資它,,剩下的ε概率就完全隨機,,每個動作都去嘗試。這個方法稱為ε-greedy,。 該方法可以保證所有狀態(tài)都有一定的概率,,哪怕是很小的概率,被訪問到,。所以當運行一段時間以后,,它能夠找到最優(yōu)的策略。 但這個方法也有缺點,,就是必須要指定一個ε值,。通常這個值應(yīng)當不斷衰減,,直到收斂到一個比較好的結(jié)果,。還有一個效率問題,比如A動作嘗試了10次以后,,平均回報是1萬,,B動作嘗試了10次以后是0.1,這個時候就已經(jīng)沒有必要嘗試下去了,,因為距離非常遠,。但是ε-greedy的探索不會停下來,所以有了其他的方法,,比如softmax——它會考慮到Q值本身,,如果兩個動作的值差別很大,探索的概率就很小。另一個在理論上比較漂亮的方法是UCB(Upper Confidence Bound):
所以,按照Q值加上置信度的上界來選擇動作,,它就會自動平衡,。 不過,最常用的還是第一種ε-greedy方法,。給出一個策略π以后,,把它變成探索的策略,即隨機挑選一個動作,,把這個帶探索的策略放到蒙特卡羅的算法里面,。并且,這個軌跡并不是從π中產(chǎn)生的,,而是從帶探索的πε中產(chǎn)生的,,這就能保證策略可以不斷更新了。 下面介紹On/Off Policy:學習帶探索/不帶探索的策略,。 大家可能常聽On/Off Policy策略這個詞,。 在蒙特卡洛采樣中使用了πε策略來采樣,學的并不是π,,是帶探索的πε,。因為用來評估的數(shù)據(jù),是從帶探索的策略產(chǎn)出來的,,而不是從我們想要學的策略上產(chǎn)生出來的,。這個區(qū)別會導致把探索也作為策略的一部。這種采樣與更新的策略是一樣的算法叫做On Policy,。 但很多時候,,我們想學的實際是不帶探索的策略,也就是說要從帶探索的策略中采樣,,但更新的只是策略本身,,即Off Policy,。這里面臨一個問題就是,采樣并不來自于當前的策略,,常用的重要性采樣(Importance Sampling)技術(shù)通過修改采樣的分布,,改成想要的樣子??梢酝ㄟ^加權(quán)重這個簡單的方法,,修改策略的分布,然把這個分布加到具體算法里面去,。也就是把獎賞加了一個權(quán)重,,這樣的算法就變成一個Off Policy的算法,這樣它學習的就是π自己了,。 蒙特卡洛算法總結(jié)總體來說,,蒙特卡洛的算法不是一個效率很高的算法,但是能夠展現(xiàn)免模型類算法的特性,。 我們要做這個策略的評估,,然后做完評估以后找到一個改進的方向,就可以改進這個算法了,;這里,,為了使策略能夠有效更新,需要引入對環(huán)境的探索,;而對環(huán)境的探索里面,,要注意On/Off Policy這么兩個概念。 另外,,蒙特卡洛的算法有一個很顯然的缺陷:一定要拿到整個軌跡以后,,才能更新模型。
那能不能每走一步都更新模型呢,?蒙特卡洛算法里面有一個性質(zhì)——即更新Q值的時候,,實際上是在更新均值。 更新均值還可以寫成:μt = μt-1 + α(xt _ μt-1),,意思是剛才我們更新的是Q值(算式如下圖顯示),,其中R ? Q(st, at)叫做蒙特卡羅誤差。我們知道,,Q是對獎賞的一個估計,,R是是采完這個軌跡以后得到的真實的獎賞。換句話說,,Q值d餓更新就是加上就是真實值和估計值的差別,即蒙特卡羅誤差,。 在TD算法里,,我們走了一步得到了一步真實的獎賞,,再往后走還沒走,所以不知道后面真實的獎賞是多少,,但可以通過之前的Q值來估計之后的獎賞,,這兩個加起來就是當前知道的信息,用它來替代這個R,,來減去老的預(yù)估值,,我們稱這個過程為時序差分。 如果用蒙特卡羅的話,,需要先走到底,,知道總體的結(jié)果之后,每一步的差別就能算出來,;而對于TDL來說,,只需要記錄一步的信息,所以可以在線更新自己,。
動態(tài)規(guī)劃記錄的是所有狀態(tài)上面的信息,。而把剛才的蒙特卡羅的error換成了TD errpr,就可以得到新的TD方法的強化學習方法,。這個方法就不是采集整個軌跡了,,而是根據(jù)探索的策略,用TDL來更新Q值,,每走一步就更新一下對當前策略的評判,,然后再更新策略。這個算法叫做SARSA,,屬于On Policy,,而變成Off Policy的策略,只修改一處,,用非探索策略來計算TD error,,就得到Q-Learning算法。
這是一個爬格子的問題,,是典型的經(jīng)典強化學習問題,。 動作是上下左右的走,每走一步就會有一個-1的獎賞,。從初始狀態(tài)走到最終的狀態(tài),,要走最短的路才能使獎賞最大。圖中有一個懸崖,,一旦走到懸崖獎賞會極小,,而且還要再退回這個初始狀態(tài)。 在這里用On Policy SARSA會有一定的概率去探索,,也就有可能會掉到這個懸崖下面去,,所以獎賞就會比較?。欢肣 Learning,,因為最后的策略是不帶任何探索的,,沒有任何的隨機性,所以路徑最短,。 這就是兩類強化學習算法的區(qū)別,。你在學習過程中可以看到,Q Learning的值較低,,這是因為學習的時候一定要帶探索的學習,,所以你訓練的過程中一定是不斷的去訓練。 另外,,前面講的TD誤差更新是走一步后的更新,,實際上還可以做兩步的更新、走N步的更新,,都是可以的,。所以有一種方法就是做很多步的,按照一個概率加權(quán)把它綜合起來,,綜合起來以后到一個叫做λ—return,,就是走一步、走兩步和走多步的TD,。 四,、值函數(shù)估計(Value function approximation)剛才講的所有問題,前提是都能用表格表示,。但是很多真實環(huán)境是無法用表格表示的,。所以在強化學習發(fā)展的早期,一直沒辦法用在大規(guī)模的真實問題上去,。后來大家就想,,怎么把這個強化學習放在一個連續(xù)狀態(tài)空間去,甚至說放在動作也是連續(xù)的情景中,,比如控制一架直升機的,。 大家可能覺得強化學習的學習過程和監(jiān)督學習之間的差別比較大,算法,、模型好像都完全不一樣,。但進入連續(xù)狀態(tài)空間以后,兩者就會出現(xiàn)很多相似的地方,。 離散狀態(tài)下可以用表格來表示值函數(shù)或策略,;但進入連續(xù)狀態(tài)空間就要用一個函數(shù)的近似來表示,這個方法叫做值函數(shù)近似,。 比如,,我們可以用一個線性函數(shù)來表示,,V值是表示狀態(tài)s下面的一個值,,狀態(tài)s先有一個特征的向量φ(s),,這個V值表達出來就是一個線性的參數(shù)乘以特征的內(nèi)積。Q值里面有一個動作,,假設(shè)這個動作是離散的,,一種方式是把這個動作和狀態(tài)放在一起變成一個特征,另一種方法是給每一個動作單獨做一個模型,。 當遇到連續(xù)空間的問題時,,用近似來表示值函數(shù)V和Q,這個做法看起來很自然,,但是近似以后會發(fā)現(xiàn),,以往很多的理論結(jié)果就不成立了。 但我們現(xiàn)在先不管那些問題,,先看做了近似以后怎么來學,?我們想知道的是,這里的Q值,,是希望Q值近似以后,,夠盡量逼近真實的Q值。如果已經(jīng)知道真實的Q值,,怎么逼近呢,?最簡單的方法就是做一個最小二乘回歸。其中一種解法是求導,。求導以后,,導數(shù)表示為,真實的Q和估計的Q的差值,,然后再乘對Q值模型的導,。可以看到,,導數(shù)表達的含義與之前的模特卡羅誤差,、TD誤差是一致的,只不過更新的是參數(shù)w,。把這種更新方式套進Q learning里,,其他地方都沒有變,只得到了用值函數(shù)逼近的Q-Learning方法,。 這個模型用什么函數(shù)呢,?最簡單就是用線性函數(shù)。但是線性函數(shù)有很多局限的,,需要在特征的設(shè)計上下功夫,,這需要很好的人工設(shè)計,。 把它變成非線性函數(shù),一個常用方法是用神經(jīng)網(wǎng)絡(luò),,直接用神經(jīng)網(wǎng)絡(luò)表示Q值,。在更新的時候也很簡單,只需要把梯度傳到神經(jīng)網(wǎng)絡(luò)中去就可以了,,因為神經(jīng)網(wǎng)絡(luò)的BP算法本身也是求梯度,。 用批量學習改進還有一些改進的方式。比如說我們在訓練近似模型的時候,,在一個樣本上訓練可能會不穩(wěn)定,,所以可以用Batch Models的方式,積累一批數(shù)據(jù)來訓練這個模型,。 剛才講的所有訓練方法,,都是先把V值或者Q值估計出來,然后再從中把這個策略導出來,。我們稱這種方法為基于值函數(shù)的強化學習方法,。 五、策略搜索(Policy Search)值函數(shù)估計法存在的問題:策略退化但是用值函數(shù)估計會有一個問題——這種方法可以收斂到最優(yōu)策略,,但前提必須是用表格的表達方式,;如果用的是函數(shù)近似,則會出現(xiàn)策略退化,,即對Q值估計越大,,策略越差。 舉一個簡單的例子,,現(xiàn)在有兩個狀態(tài),,一個是狀態(tài)1,一個是狀態(tài)2,,狀態(tài)1的特征為2,,狀態(tài)2的特征為1。我們設(shè)定獎賞,,使得狀態(tài)2的最優(yōu)V值比狀態(tài)1的要大,。這時如果用一個線性函數(shù)來表示這個V,也就是用W乘以特征,,這個特征只有一維,,最優(yōu)的這個V值2是比1大的,1的特征值要高一點,,2的特征值要小一點,,所以最優(yōu)的W就應(yīng)該是個負數(shù),這樣會使得V(2)比V(1)大,因而能導出最優(yōu)策略,。 但是基于值函數(shù)的做法是要使得V值盡量靠近最優(yōu)的V值,,最優(yōu)的V值又是正值,這樣會導致這個W一定是正的,,無法得到最優(yōu)的策略,。這樣值函數(shù)估計得越準,策略越差的現(xiàn)象被稱為策略退化,。 用策略搜索解決策略退化問題為了避免策略退化,,我們的方法是直接去找策略,,這就是策略搜索。 先把策略參數(shù)化,,對于離散動作來說,,參數(shù)可以做成像Gibbs Policy一樣,即每個動作有一個參數(shù),,然后把它歸一,,變成每一個動作有一個概率。如果是一個連續(xù)動作的話,,可以用高斯分布來描述,。里面這個參數(shù),我在這里寫的是一個線性的過程,,但也可以用神經(jīng)網(wǎng)絡(luò)來替代,。 直接優(yōu)化策略的參數(shù),使得收到的總回報達到最大的方法,,就是策略搜索(Policy Search),。 策略搜索的優(yōu)勢策略搜索和基于值函數(shù)的方法相比,,優(yōu)缺點各是什么,?
第三點用處很大,,比如說玩“剪刀石頭布”,,如果選擇確定性策略,那一定會輸,;一定要做一個帶概率的輸出才會贏,。 還有另外一個例子,跟大家講解一下為什么需要隨機性策略,。 骷髏代表走到這就死掉了,;最優(yōu)策略肯定是往中間走,但是這里有兩個灰色格子,,它們代表的是不完全觀測的狀態(tài),即走到灰格子之后不知道該往左邊還是右邊,;
這也體現(xiàn)了策略搜索的優(yōu)勢。 第四,,策略搜索和監(jiān)督學習的兼容性比較好,。 這個策略是用參數(shù)表達的,它的目標是最大化的獎賞,。最大化獎賞的意思就是說,,把空間里所有的軌跡枚舉出來。因為策略產(chǎn)生這些軌跡是有一定概率的,,在某個狀態(tài)上,,策略做出相應(yīng)動作的概率是由策略決定的,把所有一條軌跡上所有動作的概率相乘,,就得出產(chǎn)生這條軌跡的概率,。所以它總體的期望回報,就是所有軌跡的期望,,也就是每條軌跡的概率乘以每條概率能獲得的獎賞,,這也是總回報的另外一種寫法。這種寫法有的好處就在于,,它和策略參數(shù)目標有關(guān),,所以我可以對獎賞直接求導,,來求解策略。另外一種寫法用的是穩(wěn)態(tài)分布(Stationary Distribution),,用和上面寫法完全等價,,意思是完全一樣的,在這里就跳過不講了,。 策略搜索也有一個缺點,,其中一個缺點就是有很多局部最優(yōu)解,失去了全局最優(yōu)的收斂性保障,,其次是訓練過程方差非常高,。
相信大家都會求導,不過有一種方式大家可能沒有見過——有限差分(Finite Difference),,這是早期用來做策略求導的方法,。 那什么時候會用到有限差分呢?可能是這個系統(tǒng)可能太復雜了,,不容易求導,,那就可以用一個簡單的方式來逼近這個導數(shù)。拿到一個參數(shù)θ,,θ的導數(shù)就是看一下周圍哪個方向走的比較快,這樣給θ加一個很小的擾動的值,,對θ周圍的局部進行采樣,,對那個采樣增長得最快,這個方向就當成是一個導數(shù)方向,。這是最簡單的方法,,當然這個方法有很多缺陷,特別是在高維度的情況下,,會需要很多采樣,,所以更直接的方法還是直接求導。 最后得到的一個導數(shù),,導數(shù)形式如下所示:
E是期望,,1到T代表考慮的是T步的軌跡,每一步軌跡對策略輸出值的對數(shù)取導數(shù),,然后乘以真實的獎賞(獎賞不取對數(shù)),。獎賞是個常數(shù),即軌跡得到的獎賞值,。 可以通過采樣可以來逼近期望,,對一個策略以后,去跑一些軌跡,,然后計算平均梯度,,作為梯度期望的逼近。 我們剛剛說到,這種方式有一個很大的缺陷,,就是它的方差很大,,直接用計算的梯度來更新策略(vallina policy gradient),基本上得不到好的策略,,因為它的方差太大,,不穩(wěn)定。 控制方差的方法 1,、Actor-Critic控制方差有多種方式,,其中一種叫做Actor-Critic。用比如直接求導的方式把策略求出來,,叫做Actor,;對值函數(shù)進行估計,并用于評估策略,,是Critic,,意為它是一個評價者。 我們要維護一個值函數(shù)Q的模型,。另外,,用導數(shù)的方法來求策略的梯度的時候,不做直接使用獎賞,,而是使用Criitic提供的Q值,。所以Actor-Critic會維護兩個模型,第一個是策略的模型,,第二個是Q函數(shù)的模型,。 對Q函數(shù)求近似的時候,式子和上面的那個導數(shù)形式一樣,,里面的經(jīng)驗獎賞換成了Q值,。在求策略梯度時,Q值是一個常數(shù),,是不更新的,,它有自己的更新方式,且通常是真實的Q值,。 控制方差的方法2,、引入偏差項(bias term)另一種控制方差的形式,是引入偏差項,,只要這個函數(shù)是一個只跟狀態(tài)有關(guān),、跟動作無關(guān)的函數(shù),它的積分就是0,,不影響梯度方向,,而會影響梯度的方差,。 對于簡單的形式,我們可以直接求出來最優(yōu)的偏差是什么,。更一般的形式,,我們可以用V值來替代bias。因為V值就是關(guān)于狀態(tài)的估計值,,和動作沒有關(guān)系,,所以它帶到積分里面去的時候會是0。 把V值帶進去,,后面的Q就變成了Q-V,,叫做Advantage Function,意思指:在這個狀態(tài)上,,V值相當于是一個平均值,,Q值指某個動作比平均值高出來多少。用Advantage Function會使得做策略梯度以后,,方差控制得比較好,,只有當方差控制好了,這類算法才能真正起作用,。 其他改進方法梯度的改進方法還有Nature Policy Gradient,。在監(jiān)督學習里面,隨機梯度是很容易并行的,。最近有一些理論的工作,,也探討了它的并行不會影響到它的理論性質(zhì)。在策略梯度里面,,我們同樣可以把這個梯度并行來做,這樣可以使得它的速度下的很快,。 還有對策略直接求導的方法,,比如無梯度的優(yōu)化(Derivative-Free Optimization)。這類方法不管強化學習是在做什么,,而是直接優(yōu)化策略里面的參數(shù),。優(yōu)化完參數(shù)以后,試一下策略,,得出這個值具體是多少,。 這樣,優(yōu)化過的算法可以通過總體獎賞值來調(diào)整模型里面的參數(shù),。通常來說它比用Gradient Policy效率差,,由于中間過程是忽略不計的,所以它對特別復雜的問題,,反而有比較好的效果,,比如俄羅斯方塊游戲,。 六、游戲中的強化學習(Reinforcement Learning in Games)最后一部分,,講一下強化學習和游戲,。 為什么講游戲?一方面,,是因為在游戲里面需要克服的一些問題,,在真實應(yīng)用中也常遇到;另外一方面,,用游戲來做強化學習任務(wù)的成本比較低,。
2015年,DeepMind在Atari游戲上使用深度網(wǎng)絡(luò)直接從屏幕圖像訓練強化學習,,直接推動了“深度強化學習”的發(fā)展,。 用深度神經(jīng)網(wǎng)絡(luò),放在Policy Gradient里面,,作為一個策略的模型,;或者放在基于值函數(shù)的方法里面,作為值函數(shù)Q值的一個估計,。這樣的方法就稱為深度強化學習,。 深度強化學習其實,深度強化學習里很多工作是在研究怎么讓網(wǎng)絡(luò)更穩(wěn)定,。特別是當輸入數(shù)據(jù)比較少的時候,,網(wǎng)絡(luò)方差的浮動會比較大。這就可以用“延后更新”來解決——如果用深度神經(jīng)網(wǎng)絡(luò),,那么每走一步都更新模型會導致模型抖動非常大,。而用“延后更新”,例如可以在100步里不更新策略,,只是把神經(jīng)網(wǎng)絡(luò)更新一下,,這個神經(jīng)網(wǎng)絡(luò)沒有放到新的策略里面來,等神經(jīng)網(wǎng)絡(luò)有一個比較穩(wěn)定的上升以后,,再更新策略,。還有,積累的數(shù)據(jù)不要丟掉,,也拿出來,,讓這個神經(jīng)網(wǎng)絡(luò)更穩(wěn)定一點。這兩個技巧合起來放在Q-Learning里面,,就是DQN,。
DQN可以說是第一個聲稱深度強化學習算法,可能也是最廣為人知的一個,?;旧?,它的整體結(jié)構(gòu)就是一個函數(shù)近似的Q Learning,只不過用CNN做了近似函數(shù),。 在玩這個游戲的時候,,它已經(jīng)有了100萬個記錄歷史。每次訓練神經(jīng)網(wǎng)絡(luò)的時候,,要抓32個出來訓練一次,,并且訓練完以后不去更新策略,而是在走一定的步數(shù)以后,,再更新這個策略,。除此之外,并不是直接從屏幕上把一幀圖像拿進來,,而是把歷史上好幾幀的屏幕拼起來,,得到一個當前幀和前面好幾幀合起來的一個總體的圖作為CNN的輸入。不過在最新的一些工作中,,這個過程已經(jīng)被被遞歸神經(jīng)網(wǎng)絡(luò)替代了,,不再是把好幾層拼起來,而是讓好幾幀分別輸入例如LSTM的網(wǎng)絡(luò),。 很多運用強化學習尋找策略的游戲已經(jīng)比人玩得都好了,,它玩的好的優(yōu)勢主要體現(xiàn)在反應(yīng)速度上。但是在需要深入思考邏輯關(guān)系的游戲中,,強化學習沒有人做得好,。 我們來看看它的游戲報告結(jié)果。 這里面,,“with replay”和“without replay”的意思是有沒有用到歷史數(shù)據(jù),,“with target Q”和“without target Q”就用了CNN還是線性網(wǎng)絡(luò)。我們可以看到,,神經(jīng)網(wǎng)絡(luò)在這里貢獻并不是最大的,。如果我們只用神經(jīng)網(wǎng)絡(luò)而不用replay的話,效果還不如用了replay,,但只用線性模型而不用CNN。當然,,同時使用深度模型和強化學習是最好的,,這可以完成一些過去完成不了的事情。 在AlphaGo中的應(yīng)用AlphaGo系統(tǒng)的基礎(chǔ)框架是蒙特卡洛樹搜索,,這是經(jīng)典的樹搜索的方法,。但是單憑蒙特卡洛樹搜索本身并不能取得很好的效果,只用樹搜索大概只能達到業(yè)余的五六段,。AlphaGo里面的一個創(chuàng)新的點就是引入強化學習來改進搜索樹的深度和寬度,。 這里面用了三個神經(jīng)網(wǎng)絡(luò),。
由于大家對DQN比較熟悉,所以在嘗試深度學習的時候,,首先想到的算法大多是DQN,。但因為它是一個基于值函數(shù)估計的強化學習方法,所以這種方法在稍微復雜一點的應(yīng)用環(huán)境中可能運行不了,,大家會感覺用DQN做強化學習效果沒那么好,。但同樣是DeepMin做的圍棋游戲,它的強化學習方法已經(jīng)改成了Policy Gradient,,而且以后的很多算法也都是以Policy Gradient為主的,,用這種方法處理復雜問題效果更好。 在其他游戲上的應(yīng)用正是由于在計算機中模擬游戲的代價很低,,所以不斷有研究者借助游戲來發(fā)展強化學習,。比如,有用在3D第一人稱射擊游戲中,,可以在這個世界里面行走,,并且尋找東西。去年有一個“DOOM”游戲比賽,,參賽者要用計算機控制游戲角色,,以第一視角進行3D射擊。有了強化學習,,參賽者就能控制游戲角色,,讓它做一些動作。由于這個游戲額環(huán)境比較復雜,,所以在玩游戲的過程中,,也發(fā)展出了一些創(chuàng)新方法。 例如,,在游戲里面,,如果讓一個強化學習直接到游戲環(huán)境里面學習,那它又要撿醫(yī)療箱,,又要去撿武器等等,,太復雜了,。而其中一個團隊,就采取了這樣的做法:他們讓強化學習從簡單到復雜,,一步一步的去學習——首先學一個策略,,比如撿起醫(yī)療箱,然后在這個策略的基礎(chǔ)上再來學怎么樣來開槍,、怎么樣來射擊敵人等等,。 實際上游戲里面有很多很高難度的挑戰(zhàn),其中一個非常復雜游戲叫做StarCraft,。這個游戲已經(jīng)有很多年的歷史了,,現(xiàn)在有不少人,包括DeepMind,,都希望在這么復雜的游戲上面能表現(xiàn)出一個比較好的性能,,因為這個游戲的復雜度已經(jīng)大到和很多真實應(yīng)用的復雜度相當,即使人去學這個游戲,,也要花很長時間才能學會,。以前用強化學習,只是先取其中一個小問題來解決,。比如說我和對方各派三個兵,,想辦法看這六個兵怎么打。這是一個很局部的戰(zhàn)役,,但能學到這樣的東西也已經(jīng)比較不錯了,。如果要學到整盤的打法,它里面涉及到很多問題,,第一,,它的規(guī)模遠大于圍棋的規(guī)模;第二,,有很多對手的信息是觀測不到的,,比如敵方的行動。雖然在今年年初,,德州撲克游戲上機器已經(jīng)打贏了人類玩家,,但德州撲克其實是一類很簡單的牌類游戲,想讓強化學習在大規(guī)模游戲任務(wù)中,,在無法觀測到對手信息的情況下,,指揮200多個單位做連續(xù)的運動,還要持續(xù)半個多小時走幾十萬步,,目前還做不好。 七,、強化學習總結(jié) 之前介紹的只是強化學習的其中一小部分,,強化學習還包括很多內(nèi)容: 比如在MDP中如果出現(xiàn)了不可觀測的情況,,它就不屬于Markov了,有一個專門的方向如POMDP來解決這個問題,。 還有Learning from Demonstrations,,意為人先做出示范,然后從示范數(shù)據(jù)中教智能體,。例如AlphaGo,,一開始訓練的時候并不是直接上強化學習,而是首先搜集了很多人類對打的數(shù)據(jù),。 而怎么去設(shè)計獎賞函數(shù)也會有很多不同的方法,。 下面總結(jié)一下兩個大家比較關(guān)心的問題。
如果碰到比較簡單的強化學習問題,可以用基于值函數(shù)的方法,,比如DQN,,更復雜的問題可以用Policy Gradient的方法做策略梯度。 但是從目前的發(fā)展現(xiàn)狀兩看,,強化學習的成熟度遠遠不夠,,也就是說在強化學習領(lǐng)域,還有很大的提升的空間,,有可能能做出一個性能更好的全新的算法,。但大規(guī)模的問題現(xiàn)在還是很難解決。這個大規(guī)模指是它的狀態(tài)空間大,,并且步數(shù)特別多,。
1,、 強化學習需要探索,在很多場景帶來風險,。 以推薦股票為例,。我本來已經(jīng)有一個還可以的推薦策略,每天能給我?guī)?00萬的收入,。但是現(xiàn)在為了訓練強化學習,,要做探索,嘗試一些隨機的股票,。假如告訴你這個探索會導致今天一下子要損失好幾百萬,,而一個月以后可以賺回1個億,那你就要衡量一下這里看面的風險有多高,敢不敢用了,。 2,、 為什么強化學習在很多游戲上面用的比較多? 游戲在計算機中運行,,速度高,、代價低。如果放到現(xiàn)實世界中來運行,,比如放在推薦系統(tǒng)線上運行,,那它就必須和真實的環(huán)境打交道。它的學習過程需要不斷探索,,而部署在真實環(huán)境里可能會遇到很多麻煩,,如果能有一個比較好的模擬器,就可以減少這些麻煩,;另外,,如果有比較好的監(jiān)督學習數(shù)據(jù)的話,也可以做一個初始的策略,,不過這個策略可能一開始起點要稍微高一點,。做機器人一般也有一個機器人模擬器,所以一般先在模擬器里面做,,做好策略再放到機器人身上來學,。但是其他現(xiàn)實世界問題,在模擬器里可能就沒有那么好做了,。 八,、強化學習資源推薦書籍強化學習的書不多,最經(jīng)典的書是Richard S. Sutton的教科書,;Masashi Sugiyama的書屬于專著,;Reinforcement Learning: State-of-the-Art屬于文集,覆蓋面比較廣,,但需要讀者有一定基礎(chǔ),;還有一些講述MDP的書;另外,,在機器學習的書里面也會提到強化學習,。 線上資源OpenAI Gym:一個基礎(chǔ)的強化學習平臺,里面很多環(huán)境,,研究人員可以在上面做實驗,,它對這個領(lǐng)域有很大的促進。還有AlphaGo技術(shù)負責人David Silver的線上教學視頻,,講的非常好,。 論文發(fā)表地強化學習論文主要發(fā)表在AI期刊和會議上,,期刊有Artificial Intelligence, JAIR, JMLR, Machine Learning, JAAMAS等,會議有IJCAI, AAAI, NIPS, ICML, ICLR, AAMAS, IROS等等,。 以上就是俞揚博士的演講,,更多內(nèi)容請繼續(xù)關(guān)注AI科技評論。 報名 |【2017 AI 最佳雇主】榜單 在人工智能爆發(fā)初期的時代背景下,,雷鋒網(wǎng)聯(lián)合旗下人工智能頻道AI科技評論,攜手《環(huán)球科學》和 BOSS 直聘,,重磅推出【2017 AI 最佳雇主】榜單,。 從“公司概況”、“創(chuàng)新能力”,、“員工福利”三個維度切入,,依據(jù) 20 多項評分標準,做到公平,、公正,、公開,全面評估和推動中國人工智能企業(yè)發(fā)展,。 本次【2017 AI 最佳雇主】榜單活動主要經(jīng)歷三個重要時段:
最終榜單名單由雷鋒網(wǎng),、AI科技評論、《環(huán)球科學》,、BOSS 直聘以及 AI 學術(shù)大咖組成的評審團共同選出,,并于7月份舉行的 CCF-GAIR 2017大會期間公布。報名期間歡迎大家踴躍自薦或推薦心目中的最佳 AI 企業(yè)公司,。 報名方式 |
|