天天看點

強化學習:基于MDP的經典RL方法 (基于南大俞揚博士演講的少量修改和補充)

三、從馬爾可夫決策過程到強化學習

在強化學習任務中,獎賞和轉移都是未知的,需要通過學習得出。具體解決辦法有兩個:

一種是還原出獎賞函數和轉移函數。首先把MDP還原出來,然後再在MDP上解這個政策,這類方法稱為有模型(Model-Based)方法,這裡的模型指的是MDP。

強化學習:基于MDP的經典RL方法 (基于南大俞揚博士演講的少量修改和補充)

還有一類和它相對應的方法,免模型(Model-Free)法,即不還原獎賞和轉移。

基于模型的方法

在這類方法中,智能體會維護Model(即MDP),然後從Model中求解政策。

從随機政策開始,把政策放到環境中運作,從運作的序列資料中把MDP恢複出來。因為序列資料可以提供環境轉移和獎賞的監督資訊,簡單的做一個回歸(對樣本做處理,以得到随機樣本的分布規律和機率),就能知道一個狀态做了一個動作下面會轉移到哪兒,以及能得到的獎賞是多少。

這裡有一個非常簡單的環境探索方法——RMax,它用了計數這個非常簡單的回歸模型。

強化學習:基于MDP的經典RL方法 (基于南大俞揚博士演講的少量修改和補充)

雖然看起來很簡單,但是還原MDP的樣本複雜度是狀态數的平方,遠高于前面說到的求解政策的複雜度。從這裡可以看出學習MDP的複雜度極高,是以大量的研究工作都集中在免模型學習上。

免模型學習

免模型學習簡單介紹兩種方法。一種叫做蒙特卡羅采樣方法(Monte-Carlo method),一種是時序差分法(Temporal difference method)

  • 蒙特卡羅采樣方法介紹(Monte-Carlo method)

免模型學習和之前講到的政策疊代的思路很像,首先,評估目前政策怎麼樣;第二,提高目前政策。

第一步 評估政策

在MDP裡評估政策的時候,由于獎賞和轉移都是知道的,是以可以直接用這兩個函數算評估值。現在這兩個函數都不知道,那怎麼辦呢?這個Q值函數實際上是個期望,是以直接用采樣來替代期望就可以了。換句話說,就是拿該政策在環境裡面去跑,看跑出來什麼結果。

與DP方法不同的是,蒙特卡洛(Monte Carlo, MC)方法不需要環境的全部資訊,而隻需要 “experience”,這裡的“experience”指的是 states、actions和環境的 rewards 的采樣序列。在機器學習領域,不需要環境動态性的先驗知識是非常重要的一個優點,蒙特卡洛方法從真實的或者仿真的 experience 中進行學習,雖然它也需要一個環境模型用來産生樣本轉換,但它不像動态程式設計一樣需要所有可能轉換的所有機率分布。蒙特卡洛方法主要是通過對樣本的 returns 進行平均來解決增強學習問題的,有點類似于 Multi-armed bandit 的機制。

那麼什麼是經驗呢?經驗其實就是訓練樣本。比如在初始狀态s,遵循政策π,最終獲得了總回報R,這就是一個樣本。如果我們有許多這樣的樣本,就可以估計在狀态s下,遵循政策π的期望回報,也就是狀态值函數Vπ(s)了。蒙特卡羅方法就是依靠樣本的平均回報來解決增強學習問題的。

強化學習:基于MDP的經典RL方法 (基于南大俞揚博士演講的少量修改和補充)

注意:上圖的R指的是目前回報+未來回報,在這裡即一個序列的總回報,與下圖的G的含義一緻。

比如跑了之後我得到一條軌迹:先是出太陽,接着是多雲,最後是出太陽;再跑第二次得到一條軌迹,再跑第三次又得到一個軌迹。最後得到很多軌迹。我知道每條軌迹的獎賞是多少,然後把這些軌迹的獎賞平均起來,作為這個政策的值函數的估計,用頻率來逼近期望。

第二步 更新/提高政策

如此一來,我們就可以去評價一個政策的好壞。評價完一個政策以後,就可以和剛才一樣,取Q值函數訓示最好的動作作為新的政策,更新過程是一樣的。

強化學習:基于MDP的經典RL方法 (基于南大俞揚博士演講的少量修改和補充)

舉例:用蒙特卡羅方法來學習狀态值函數Vπ(s)。如上所述,估計Vπ(s)是對于所有到達過該狀态的回報取平均值。這裡又分為first-visit MC methods和every-visit MC methods。這裡,我們隻考慮first MC methods,即在一個episode内,我們隻記錄s的第一次通路,并對它取平均回報。現在我們假設有如下一些樣本,取折扣因子γ=1,即直接計算累積回報,則有根據first MC methods,對出現過狀态s的episode的累積回報取均值,有Vπ(s)≈ (2 + 1 – 5 + 4)/4 = 0.5. 容易知道,當我們經過無窮多的episode後,Vπ(s)的估計值将收斂于其真實值。

在一條軌迹下來以後,更新Q值後,做第二條軌迹,這樣就做到了不依賴MDP模型的強化學習方法。

然而該方法缺乏環境探索,難以更新政策

但是,這個有一個問題——如果得到了确定性政策,那麼有可采100個樣本出來的軌迹都是一樣的,導緻無法評估政策在所有狀态上的表現,是以無法提高政策。這裡的關鍵在于它缺乏對環境的探索。

(因為上述MC是基于一個特定的政策,是以不能周遊所有action-pair來得到價值函數。也就是說,這裡唯一複雜的地方在于,有可能有很多 state-action 對從未被 visit 過,這樣就沒有 returns 來進行平均,就無法對該 state-action 對進行評估,這其實就可以歸結于是一般的 maintaining exploration 問題,也就是在指導 agent 的行為時要保持一定的探索精神。)

如何探索環境,以獲得最大回報?

怎麼探索?我們可以考慮一個最簡單的強化學習問題:一個狀态,兩個動作,一個動作的回報高一點,一個動作回報低一點,但是這兩個回報來自于兩個分布。這個時候你選哪個動作,或者你怎麼做能收到最大的回報?這其實就是bandit模型。

  • 一個極端是,嘗試100次,每個動作做50次(探索),這個時候我可能知道哪個動作比較好,但是拿到的回報可能不是最高的,因為可能做10次以後(每個動作探索5次),就已經知道第一個動作的回報要高一點了,如果剩下的投資(嘗試)還是均勻分布(即每個動作都探索)的話,就得不到最大回報(若把剩下的投資(嘗試)都放在第一個動作就會有最大回報)。
  • 另一個極端是,兩個動作各試一次,看哪個回報高,剩下的98次全部投到最高的回報去。這個方法也不好,因為隻試了1次,估計的回報很不穩定(回報沒有收斂,不能确定第一個動作比第二個好)。

第一種情況是要有足夠多的探索(即exploration),第二種情況是不需要過多的探索而有更好的投資(即exploitation),我們要在這兩點之間找到平衡。

解決這個問題有多種方法。第簡單的方法是,以1-ε的機率,現在看好哪個,就去投資它,剩下的ε機率就完全随機,每個動作都去嘗試。這個方法稱為ε-greedy。

該方法可以保證所有狀态都有一定的機率,哪怕是很小的機率,被通路到。是以當運作一段時間以後,它能夠找到最優的政策。

但這個方法也有缺點,就是必須要指定一個ε值。通常這個值應當不斷衰減,直到收斂到一個比較好的結果。還有一個效率問題,比如A動作嘗試了10次以後,平均回報是1萬,B動作嘗試了10次以後是0.1,這個時候就已經沒有必要嘗試下去了,因為距離非常遠。但是ε-greedy的探索不會停下來,是以有了其他的方法,比如softmax——它會考慮到Q值本身,如果兩個動作的值差别很大,探索的機率就很小。另一個在理論上比較漂亮的方法是UCB(Upper Confidence Bound):

  • 第一,考慮了Q值。如果Q值本身差距比較大,探索的可能性就很小;
  • 第二,考慮了探索次數。如果探索次數很少,可能它的置信度就比較低,如果探索的次數較多,置信度就會比較高。
強化學習:基于MDP的經典RL方法 (基于南大俞揚博士演講的少量修改和補充)

是以,按照Q值加上置信度的上界來選擇動作,它就會自動平衡。

不過,最常用的還是第一種ε-greedy方法。給出一個政策π以後,把它變成帶有探索性的政策πε,即有ε機率随機挑選一個動作,把這個帶探索的政策放到蒙特卡羅的算法裡面。是以,這個軌迹并不是從π中産生的,而是從帶探索的πε中産生的,這就能保證政策可以不斷探索性更新了。

強化學習:基于MDP的經典RL方法 (基于南大俞揚博士演講的少量修改和補充)

下面介紹On/Off Policy:學習帶探索/不帶探索的政策。

大家可能常聽On/Off Policy政策這個詞。

強化學習:基于MDP的經典RL方法 (基于南大俞揚博士演講的少量修改和補充)

在蒙特卡洛采樣中使用了πε政策來采樣,學的并不是π,是帶探索的πε。因為用來評估的資料,是從帶探索的政策産出來的,而不是從我們想要學的政策上産生出來的。這個差別會導緻把探索也作為政策的一部。這種采樣與更新的政策是一樣的算法叫做On Policy。

但很多時候,我們想學的實際是不帶探索的政策,也就是說要從帶探索的政策中采樣,但更新的隻是政策本身,即Off Policy。這裡面臨一個問題就是,采樣并不來自于目前的政策,常用的重要性采樣(Importance Sampling)技術通過修改采樣的分布,改成想要的樣子。可以通過權重重這個簡單的方法,修改政策的分布,然把這個分布加到具體算法裡面去。也就是把獎賞加了一個權重,這樣的算法就變成一個Off Policy的算法,這樣它學習的就是π自己了。

強化學習:基于MDP的經典RL方法 (基于南大俞揚博士演講的少量修改和補充)

蒙特卡洛算法總結

總體來說,蒙特卡洛的算法不是一個效率很高的算法,但是能夠展現免模型類算法的特性。

我們要做這個政策的評估,然後做完評估以後找到一個改進的方向,就可以改進這個算法了;這裡,為了使政策能夠有效更新,需要引入對環境的探索;而對環境的探索裡面,要注意On/Off Policy這麼兩個概念。

另外,蒙特卡洛的算法有一個很顯然的缺陷:一定要拿到整個軌迹以後,才能更新模型。

  • 時序差分(Temporal difference method)

那能不能每走一步都更新模型呢?蒙特卡洛算法裡面有一個性質——即更新Q值的時候,實際上是在更新均值。

更新均值可寫成6.1式,意思是剛才我們更新的是V值(算式如下圖顯示),其中Gt − V(st)叫做蒙特卡羅誤差。我們知道,Q是對獎賞的一個估計,G是是采完這個軌迹以後得到的真實的獎賞。換句話說,V值的更新就是加上就是新軌迹的總獎賞值和此前算得的均值的差别,即蒙特卡羅誤差。

強化學習:基于MDP的經典RL方法 (基于南大俞揚博士演講的少量修改和補充)

在TD算法裡,我們走了一步得到了一步真實的獎賞,再往後走還沒走,是以不知道後面真實的獎賞是多少,但可以通過之前的V值來估計之後的獎賞,這兩個加起來就是目前知道的資訊,用它來替代這個G,來減去老(此前的)的預估均值值,我們稱這個過程為時序差分(公式6.2)。

6.1中的說明MC方法需要完成一個Episode才可以更新V(St)

6.2中的立即回報(Observe reward)與(Estimate,)說明了TD方法可直接在同一個回合中的下一個step更新V(St),是以這個特性是DP的。而對比6.3的DP可知,6.2用的是existing estimate (即統計值),是以TD法取了兩種方法的特點。

強化學習:基于MDP的經典RL方法 (基于南大俞揚博士演講的少量修改和補充)
強化學習:基于MDP的經典RL方法 (基于南大俞揚博士演講的少量修改和補充)
  • On-policy and Off-policy 

(可以看本人關于On-policy and Off-policy的講解:https://www.zhihu.com/question/57159315/answer/465865135)

  • SARSA v.s. Q-learning

(可以看本人關于On-policy and Off-policy的講解:https://www.zhihu.com/question/26408259/answer/467132543)

 四、值函數估計(Value function approximation)

剛才講的所有問題,前提是都能用表格表示。但是很多真實環境是無法用表格表示的。是以在強化學習發展的早期,一直沒辦法用在大規模的真實問題上去。後來大家就想,怎麼把這個強化學習放在一個連續狀态空間去,甚至說放在動作也是連續的情景中,比如控制一架直升機的。

大家可能覺得強化學習的學習過程和監督學習之間的差别比較大,算法、模型好像都完全不一樣。但進入連續狀态空間以後,兩者就會出現很多相似的地方。

強化學習:基于MDP的經典RL方法 (基于南大俞揚博士演講的少量修改和補充)

離散狀态下可以用表格來表示值函數或政策;但進入連續狀态空間就要用一個函數的近似來表示,這個方法叫做值函數近似。

比如,我們可以用一個線性函數來表示,V值是表示狀态s下面的一個值,狀态s先有一個特征的向量φ(s),這個V值表達出來就是一個線性的參數乘以特征的内積。Q值裡面有一個動作,假設這個動作是離散的,一種方式是把這個動作和狀态放在一起變成一個特征,另一種方法是給每一個動作單獨做一個模型。

當遇到連續空間的問題時,用近似來表示值函數V和Q,這個做法看起來很自然,但是近似以後會發現,以往很多的理論結果就不成立了。

但我們現在先不管那些問題,先看做了近似以後怎麼來學?我們想知道的是,這裡的Q值,是希望Q值近似以後,夠盡量逼近真實的Q值。如果已經知道真實的Q值,怎麼逼近呢?最簡單的方法就是做一個最小二乘回歸。其中一種解法是求導。求導以後,導數表示為,真實的Q和估計的Q的內插補點,然後再乘對Q值模型的導。可以看到,導數表達的含義與之前的模特卡羅誤差、TD誤差是一緻的,隻不過更新的是參數w。把這種更新方式套進Q learning裡,其他地方都沒有變,隻得到了用值函數逼近的Q-Learning方法。

強化學習:基于MDP的經典RL方法 (基于南大俞揚博士演講的少量修改和補充)

這個模型用什麼函數呢?最簡單就是用線性函數。但是線性函數有很多局限的,需要在特征的設計上下功夫,這需要很好的人工設計。

把它變成非線性函數,一個常用方法是用神經網絡,直接用神經網絡表示Q值。在更新的時候也很簡單,隻需要把梯度傳到神經網絡中去就可以了,因為神經網絡的BP算法本身也是求梯度。

用批量學習改進

還有一些改進的方式。比如說我們在訓練近似模型的時候,在一個樣本上訓練可能會不穩定,是以可以用Batch Models的方式,積累一批資料來訓練這個模型。

強化學習:基于MDP的經典RL方法 (基于南大俞揚博士演講的少量修改和補充)

剛才講的所有訓練方法,都是先把V值或者Q值估計出來,然後再從中把這個政策導出來。我們稱這種方法為基于值函數的強化學習方法。

五、政策搜尋(Policy Search)

強化學習:基于MDP的經典RL方法 (基于南大俞揚博士演講的少量修改和補充)

值函數估計法存在的問題:政策退化

但是用值函數估計會有一個問題——這種方法可以收斂到最優政策,但前提必須是用表格的表達方式;如果用的是函數近似,則會出現政策退化,即對Q值估計越大,政策越差。

舉一個簡單的例子,現在有兩個狀态,一個是狀态A,一個是狀态B,狀态A的特征為2,狀态B的特征為1。我們設定獎賞,使得狀态B的最優V值比狀态A的要大。這時如果用一個線性函數來表示這個V,也就是用W乘以特征,這個特征隻有一維,最優的這個V值B是比A大的,A的特征值要高一點,B的特征值要小一點,是以最優的W就應該是個負數,這樣會使得V(B)比V(A)大,因而能導出最優政策。

但是基于值函數的做法是要使得V值盡量靠近最優的V值,最優的V值又是正值,這樣會導緻這個W一定是正的,無法得到最優的政策。這樣值函數估計得越準,政策越差的現象被稱為政策退化。

用政策搜尋解決政策退化問題

為了避免政策退化,我們的方法是直接去找政策,這就是政策搜尋。

先把政策參數化,對于離散動作來說,參數可以做成像Gibbs Policy一樣,即每個動作有一個參數,然後把它歸一(softmax),變成每一個動作有一個機率。如果是一個連續動作的話,可以用高斯分布來描述。裡面這個參數,我在這裡寫的是一個線性的過程,但也可以用神經網絡來替代。

直接優化政策的參數,使得收到的總回報達到最大的方法,就是政策搜尋(Policy Search)。

政策搜尋的優勢

政策搜尋和基于值函數的方法相比,優缺點各是什麼?

  • 第一,能處理連續狀态和動作;
  • 第二,對于高維的資料總的表現比較好。
  • 第三,可以直接學出随機性政策(兼顧探索)
  • 第四,Policy Search和監督學習的相容性比較好。

第三點用處很大,比如說玩“剪刀石頭布”,如果選擇确定性政策,那一定會輸;一定要做一個帶機率的輸出才會赢。     

還有另外一個例子,跟大家講解一下為什麼需要随機性政策。

強化學習:基于MDP的經典RL方法 (基于南大俞揚博士演講的少量修改和補充)

骷髅代表走到這就死掉了;最優政策肯定是往中間走,但是這裡有兩個灰色格子,它們代表的是不完全觀測的狀态,即走到灰格子之後不知道該往左邊還是右邊;

  • 如果這時又用了确定性政策,那就隻能向左或向右走,隻能是确定的,則有可能會遇到走不通的路徑。
  • 如果用随機性政策,向左和向右的機率都為50%,是以不管往哪邊走總能到達目标。

這也展現了政策搜尋的優勢。

第四,政策搜尋和監督學習的相容性比較好。

這個政策是用參數表達的,它的目标是最大化的獎賞。最大化獎賞的意思就是說,把空間裡所有的軌迹枚舉出來。因為政策産生這些軌迹是有一定機率的,在某個狀态上,政策做出相應動作的機率是由政策決定的,把所有一條軌迹上所有動作的機率相乘,就得出産生這條軌迹的機率。是以它總體的期望回報,就是所有軌迹的期望,也就是每條軌迹的機率乘以每條機率能獲得的獎賞,這也是總回報的另外一種寫法。這種寫法有的好處就在于,它和政策參數目标有關,是以我可以對獎賞直接求導,來求解政策。另外一種寫法用的是穩态分布(Stationary Distribution),用和上面寫法完全等價,意思是完全一樣的,在這裡就跳過不講了。

政策搜尋也有一個缺點,其中一個缺點就是有很多局部最優解,失去了全局最優的收斂性保障,其次是訓練過程方差非常高。

  • 早期政策求導的方法:Finite Difference

相信大家都會求導,不過有一種方式大家可能沒有見過——有限差分(Finite Difference),這是早期用來做政策求導的方法。

那什麼時候會用到有限差分呢?可能是這個系統可能太複雜了,不容易求導,那就可以用一個簡單的方式來逼近這個導數。拿到一個參數θ,θ的導數就是看一下周圍哪個方向走的比較快,這樣給θ加一個很小的擾動的值,對θ周圍的局部進行采樣,對那個采樣增長得最快,這個方向就當成是一個導數方向。這是最簡單的方法,當然這個方法有很多缺陷,特别是在高次元的情況下,會需要很多采樣,是以更直接的方法還是直接求導。

最後得到的一個導數,導數形式如下所示:

強化學習:基于MDP的經典RL方法 (基于南大俞揚博士演講的少量修改和補充)

E是期望,1到T代表考慮的是T步的軌迹,每一步軌迹對政策輸出值的對數取導數,然後乘以真實的獎賞(獎賞不取對數)。獎賞是個常數,即軌迹得到的獎賞值。

可以通過采樣可以來逼近期望,對一個政策以後,去跑一些軌迹,然後計算平均梯度,作為梯度期望的逼近。

我們剛剛說到,這種方式有一個很大的缺陷,就是它的方差很大,直接用計算的梯度來更新政策(vallina policy gradient),基本上得不到好的政策,因為它的方差太大,不穩定。

控制方差的方法 1、Actor-Critic

控制方差有多種方式,其中一種叫做Actor-Critic。用比如直接求導的方式把政策求出來,叫做Actor;對值函數進行估計,并用于評估政策,是Critic,意為它是一個評價者。

我們要維護一個值函數Q的模型。另外,用導數的方法來求政策的梯度的時候,不做直接使用獎賞,而是使用Criitic提供的Q值。是以Actor-Critic會維護兩個模型,第一個是政策的模型,第二個是Q函數的模型。

強化學習:基于MDP的經典RL方法 (基于南大俞揚博士演講的少量修改和補充)

對Q函數求近似的時候,式子和上面的那個導數形式一樣,裡面的經驗獎賞換成了Q值。在求政策梯度時,Q值是一個常數,是不更新的,它有自己的更新方式,且通常是真實的Q值。

控制方差的方法2、引入偏差項(bias term)

另一種控制方差的形式,是引入偏差項,隻要這個函數是一個隻跟狀态有關、跟動作無關的函數,它的積分就是0,不影響梯度方向,而會影響梯度的方差。

對于簡單的形式,我們可以直接求出來最優的偏差是什麼。更一般的形式,我們可以用V值來替代bias。因為V值就是關于狀态的估計值,和動作沒有關系,是以它帶到積分裡面去的時候會是0。

把V值帶進去,後面的Q就變成了Q-V,叫做Advantage Function,意思指:在這個狀态上,V值相當于是一個平均值,Q值指某個動作比平均值高出來多少。用Advantage Function會使得做政策梯度以後,方差控制得比較好,隻有當方差控制好了,這類算法才能真正起作用。

強化學習:基于MDP的經典RL方法 (基于南大俞揚博士演講的少量修改和補充)

其他改進方法

梯度的改進方法還有Nature Policy Gradient。在監督學習裡面,随機梯度是很容易并行的。最近有一些理論的工作,也探讨了它的并行不會影響到它的理論性質。在政策梯度裡面,我們同樣可以把這個梯度并行來做,這樣可以使得它的速度下的很快。

還有對政策直接求導的方法,比如無梯度的優化(Derivative-Free Optimization)。這類方法不管強化學習是在做什麼,而是直接優化政策裡面的參數。優化完參數以後,試一下政策,得出這個值具體是多少。

這樣,優化過的算法可以通過總體獎賞值來調整模型裡面的參數。通常來說它比用Gradient Policy效率差,由于中間過程是忽略不計的,是以它對特别複雜的問題,反而有比較好的效果,比如俄羅斯方塊遊戲。

六、遊戲中的強化學習(Reinforcement Learning in Games)

最後一部分,講一下強化學習和遊戲。

為什麼講遊戲?一方面,是因為在遊戲裡面需要克服的一些問題,在真實應用中也常遇到;另外一方面,用遊戲來做強化學習任務的成本比較低。

  • 遊戲推動深度強化學習(Deep Reinforcement Learning)的發展

2015年,DeepMind在Atari遊戲上使用深度網絡直接從螢幕圖像訓練強化學習,直接推動了“深度強化學習”的發展。

用深度神經網絡,放在Policy Gradient裡面,作為一個政策的模型;或者放在基于值函數的方法裡面,作為值函數Q值的一個估計。這樣的方法就稱為深度強化學習。

深度強化學習

其實,深度強化學習裡很多工作是在研究怎麼讓網絡更穩定。特别是當輸入資料比較少的時候,網絡方差的浮動會比較大。這就可以用“延後更新”來解決——如果用深度神經網絡,那麼每走一步都更新模型會導緻模型抖動非常大。而用“延後更新”,例如可以在100步裡不更新政策,隻是把神經網絡更新一下,這個神經網絡沒有放到新的政策裡面來,等神經網絡有一個比較穩定的上升以後,再更新政策。還有,積累的資料不要丢掉,也拿出來,讓這個神經網絡更穩定一點。這兩個技巧合起來放在Q-Learning裡面,就是DQN。

  • Deep Q-Network(DQN)

DQN可以說是第一個聲稱深度強化學習算法,可能也是最廣為人知的一個。基本上,它的整體結構就是一個函數近似的Q Learning,隻不過用CNN做了近似函數。

強化學習:基于MDP的經典RL方法 (基于南大俞揚博士演講的少量修改和補充)

在玩這個遊戲的時候,它已經有了100萬個記錄曆史。每次訓練神經網絡的時候,要抓32個出來訓練一次,并且訓練完以後不去更新政策,而是在走一定的步數以後,再更新這個政策。除此之外,并不是直接從螢幕上把一幀圖像拿進來,而是把曆史上好幾幀的螢幕拼起來,得到一個目前幀和前面好幾幀合起來的一個總體的圖作為CNN的輸入。不過在最新的一些工作中,這個過程已經被被遞歸神經網絡替代了,不再是把好幾層拼起來,而是讓好幾幀分别輸入例如LSTM的網絡。

很多運用強化學習尋找政策的遊戲已經比人玩得都好了,它玩的好的優勢主要展現在反應速度上。但是在需要深入思考邏輯關系的遊戲中,強化學習沒有人做得好。

我們來看看它的遊戲報告結果。

強化學習:基于MDP的經典RL方法 (基于南大俞揚博士演講的少量修改和補充)

這裡面,“with replay”和“without replay”的意思是有沒有用到曆史資料,“with target Q”和“without target Q”就用了CNN還是線性網絡。我們可以看到,神經網絡在這裡貢獻并不是最大的。如果我們隻用神經網絡而不用replay的話,效果還不如用了replay,但隻用線性模型而不用CNN。當然,同時使用深度模型和強化學習是最好的,這可以完成一些過去完成不了的事情。

在AlphaGo中的應用

AlphaGo系統的基礎架構是蒙特卡洛樹搜尋,這是經典的樹搜尋的方法。但是單憑蒙特卡洛樹搜尋本身并不能取得很好的效果,隻用樹搜尋大概隻能達到業餘的五六段。AlphaGo裡面的一個創新的點就是引入強化學習來改進搜尋樹的深度和寬度。

強化學習:基于MDP的經典RL方法 (基于南大俞揚博士演講的少量修改和補充)

這裡面用了三個神經網絡。

  • 第一個policy network,在展開蒙特卡羅樹搜尋節點的時候起作用。這個網絡是用政策梯度方法訓練出來的。
  • 第二個是一個很小的神經網絡,蒙特卡羅樹搜尋裡再往下做很深的搜尋時會用到,這樣它可以算得很快。這個小的網絡是通過監督學習學出來的。
  • 第三個網絡是用來修正值的。它是通過強化學習中間産生的資料來學習。

由于大家對DQN比較熟悉,是以在嘗試深度學習的時候,首先想到的算法大多是DQN。但因為它是一個基于值函數估計的強化學習方法,是以這種方法在稍微複雜一點的應用環境中可能運作不了,大家會感覺用DQN做強化學習效果沒那麼好。但同樣是DeepMin做的圍棋遊戲,它的強化學習方法已經改成了Policy Gradient,而且以後的很多算法也都是以Policy Gradient為主的,用這種方法處理複雜問題效果更好。

在其他遊戲上的應用

正是由于在計算機中模拟遊戲的代價很低,是以不斷有研究者借助遊戲來發展強化學習。比如,有用在3D第一人稱射擊遊戲中,可以在這個世界裡面行走,并且尋找東西。去年有一個“DOOM”遊戲比賽,參賽者要用計算機控制遊戲角色,以第一視角進行3D射擊。有了強化學習,參賽者就能控制遊戲角色,讓它做一些動作。由于這個遊戲額環境比較複雜,是以在玩遊戲的過程中,也發展出了一些創新方法。

例如,在遊戲裡面,如果讓一個強化學習直接到遊戲環境裡面學習,那它又要撿醫療箱,又要去撿武器等等,太複雜了。而其中一個團隊,就采取了這樣的做法:他們讓強化學習從簡單到複雜,一步一步的去學習——首先學一個政策,比如撿起醫療箱,然後在這個政策的基礎上再來學怎麼樣來開槍、怎麼樣來射擊敵人等等。

實際上遊戲裡面有很多很高難度的挑戰,其中一個非常複雜遊戲叫做StarCraft。這個遊戲已經有很多年的曆史了,現在有不少人,包括DeepMind,都希望在這麼複雜的遊戲上面能表現出一個比較好的性能,因為這個遊戲的複雜度已經大到和很多真實應用的複雜度相當,即使人去學這個遊戲,也要花很長時間才能學會。以前用強化學習,隻是先取其中一個小問題來解決。比如說我和對方各派三個兵,想辦法看這六個兵怎麼打。這是一個很局部的戰役,但能學到這樣的東西也已經比較不錯了。如果要學到整盤的打法,它裡面涉及到很多問題,第一,它的規模遠大于圍棋的規模;第二,有很多對手的資訊是觀測不到的,比如敵方的行動。雖然在今年年初,德州撲克遊戲上機器已經打赢了人類玩家,但德州撲克其實是一類很簡單的牌類遊戲,想讓強化學習在大規模遊戲任務中,在無法觀測到對手資訊的情況下,指揮200多個機關做連續的運動,還要持續半個多小時走幾十萬步,目前還做不好。

七、強化學習總結

之前介紹的隻是強化學習的其中一小部分,強化學習還包括很多内容:

比如在MDP中如果出現了不可觀測的情況,它就不屬于Markov了,有一個專門的方向如POMDP來解決這個問題。

還有Learning from Demonstrations,意為人先做出示範,然後從示範資料中教智能體。例如AlphaGo,一開始訓練的時候并不是直接上強化學習,而是首先搜集了很多人類對打的資料。

而怎麼去設計獎賞函數也會有很多不同的方法。

下面總結一下兩個大家比較關心的問題。

  • 第一個問題:強化學習是否已經發展成熟?如何選擇強化學習問題中的算法?

如果碰到比較簡單的強化學習問題,可以用基于值函數的方法,比如DQN,更複雜的問題可以用Policy Gradient的方法做政策梯度。

但是從目前的發展現狀兩看,強化學習的成熟度遠遠不夠,也就是說在強化學習領域,還有很大的提升的空間,有可能能做出一個性能更好的全新的算法。但大規模的問題現在還是很難解決。這個大規模指是它的狀态空間大,并且步數特别多。

  • 第二個問題:在實際領域應用強化學習,會遇到什麼瓶頸?

1、 強化學習需要探索,在很多場景帶來風險。

以推薦股票為例。我本來已經有一個還可以的推薦政策,每天能給我帶來100萬的收入。但是現在為了訓練強化學習,要做探索,嘗試一些随機的股票。假如告訴你這個探索會導緻今天一下子要損失好幾百萬,而一個月以後可以賺回1個億,那你就要衡量一下這裡看面的風險有多高,敢不敢用了。

2、 為什麼強化學習在很多遊戲上面用的比較多?

遊戲在計算機中運作,速度高、代價低。如果放到現實世界中來運作,比如放在推薦系統線上運作,那它就必須和真實的環境打交道。它的學習過程需要不斷探索,而部署在真實環境裡可能會遇到很多麻煩,如果能有一個比較好的模拟器,就可以減少這些麻煩;另外,如果有比較好的監督學習資料的話,也可以做一個初始的政策,不過這個政策可能一開始起點要稍微高一點。做機器人一般也有一個機器人模拟器,是以一般先在模拟器裡面做,做好政策再放到機器人身上來學。但是其他現實世界問題,在模拟器裡可能就沒有那麼好做了。

八、強化學習資源推薦書籍

強化學習的書不多,最經典的書是Richard S. Sutton的教科書;Masashi Sugiyama的書屬于專著;Reinforcement Learning: State-of-the-Art屬于文集,覆寫面比較廣,但需要讀者有一定基礎;還有一些講述MDP的書;另外,在機器學習的書裡面也會提到強化學習。

強化學習:基于MDP的經典RL方法 (基于南大俞揚博士演講的少量修改和補充)

線上資源

OpenAI Gym:一個基礎的強化學習平台,裡面很多環境,研究人員可以在上面做實驗,它對這個領域有很大的促進。還有AlphaGo技術負責人David Silver的線上教學視訊,講的非常好。

強化學習:基于MDP的經典RL方法 (基于南大俞揚博士演講的少量修改和補充)

論文發表地

強化學習論文主要發表在AI期刊和會議上,期刊有Artificial Intelligence, JAIR, JMLR, Machine Learning, JAAMAS等,會議有IJCAI, AAAI, NIPS, ICML, ICLR, AAMAS, IROS等等。

以上就是俞揚博士的演講,更多内容請繼續關注雷鋒網(公衆号:雷鋒網)。

雷鋒網原創文章,未經授權禁止轉載。詳情見轉載須知。

https://www.leiphone.com/news/201705/uO8nd09EnR77NBRP.html

繼續閱讀