增強學習Reinforcement Learning經典算法梳理2:蒙特卡洛方法

1 前言

在上一篇文章中,我們介紹了基於Bellman方程而得到的Policy Iteration和Value Iteration兩種基本的算法,但是這兩種算法實際上很難直接應用,原因在於依然是偏於理想化的兩個算法,需要知道狀態轉移概率,也需要遍歷所有的狀態。對於遍歷狀態這個事,我們當然可以不用做到完全遍歷,而只需要儘可能的通過探索來遍及各種狀態即可。而對於狀態轉移概率,也就是依賴於模型Model,這是比較困難的事情。

什麼是狀態轉移?就比如一顆子彈,如果我知道它的運動速度,運動的當前位置,空氣阻力等等,我就可以用牛頓運動定律來描述它的運動,進而知道子彈下一個時刻會大概在哪個位置出現。那麼這個基於牛頓運動定律來描述其運動就是一個模型Model,我們也就可以知道其狀態(空間位置,速度)的變化概率。

那麼基本上所以的增強學習問題都需要有一定的模型的先驗知識,至少根據先驗知識我們可以來確定需要多少輸入可以導致多少輸出。比如說玩Atari這個遊戲,如果輸入只有屏幕的一半,那麼我們知道不管算法多麼好,也無法訓練出來。因爲輸入被限制了,而且即使是人類也是做不到的。但是以此同時,人類是無需精確的知道具體的模型應該是怎樣的,人類可以完全根據觀察來推算出相應的結果。

所以,對於增強學習的問題,或者說對於任意的決策與控制問題。輸入輸出是由基本的模型或者說先驗知識決定的,而具體的模型則可以不用考慮。所以,爲了更好的求解增強學習問題,我們更關注Model Free的做法。簡單的講就是如果完全不知道狀態轉移概率(就像人類一樣),我們該如何求得最優的策略呢?

本文介紹蒙特卡洛方法。

2 蒙特卡洛方法

蒙特卡洛方法只面向具有階段episode的問題。比如玩一局遊戲,下一盤棋,是有步驟,會結束的。而有些問題則不一定有結束,比如開賽車,可以無限的開下去,或者說需要特別特別久才能結束。能不能結束是一個關鍵。因爲只要能結束,那麼每一步的reward都是可以確定的,也就是可以因此來計算value。比如說下棋,最後贏了就是贏了,輸了就是輸了。而對於結束不了的問題,我們只能對於value進行估計。

那麼蒙特卡洛方法只關心這種能夠較快結束的問題。蒙特卡洛的思想很簡單,就是反覆測試求平均。如果大家知道在地上投球計算圓周率的事情就比較好理解了。不清楚的童鞋可以網上找找看。那麼如何用在增強學習上呢?

既然每一次的episode都可以到結束,那麼意味着根據:
這裏寫圖片描述
每一步的reward都知道,也就意味着每一步的return Gt 都可以計算出來。這就好了。我們反覆做測試,這樣很多狀態會被遍歷到,而且不止一次,那麼每次就可以把在狀態下的return求和取平均。
當episode無限大時,得到的數據也就接近於真實的數據。

蒙特卡洛方法就是使用統計學的方法來取代Bellman方法的計算方法。

這裏寫圖片描述

上面的算法叫first-visit MC。也就是每一次的episode中state只使用第一次到達的t來計算return。
另一種方法就是every-visit,就是每一次的episode中state只要訪問到就計算return求平均。

所以可以看到蒙特卡洛方法是極其簡單的。但是缺點也是很明顯的,需要儘可能多的反覆測試,而且需要到每一次測試結束後纔來計算,需要耗費大量時間。但是,大家知道嗎?AlphaGo就是使用蒙特卡洛的思想。不是蒙特卡洛樹搜索,而是說在增強學習中使用蒙特卡洛方法的思想。AlphaGo每次也是到下棋結束,而且只使用最後的輸贏作爲return。所以這也是非常神奇的事,只使用最後的輸贏結果,竟然能夠優化每一步的走法。

3 使用蒙特卡洛方法來控制

上面說的蒙特卡洛方法只是能夠對當前的policy進行評估。那麼大家記得上一個blog說的policy iteration方法嗎?我們可以在policy iteration中使用蒙特卡洛方法進行評估,然後使用greedy policy更新。

那麼依然是有兩種做法。一種就是在一個policy下測試多次,評估完全,然後更新policy,然後再做很多測試。另一種就是不完全評估,每次測試一次完就評估,評估完就更新:
第一種做法:
這裏寫圖片描述
第二種做法:
這裏寫圖片描述

兩種做法都能夠收斂,那麼顯然第二種做法的速度更快。

那麼再改進一點,就是改變greedy policy中ϵ 的值,使得不斷變小趨於0,這個時候最後得到的policy就是完全的最優policy了。
這個算法就叫做GLIE Monte-Carlo Control:
這裏寫圖片描述

其他變種:
Monte Carlo with Exploring Starts,使用Q(s,a) ,然後使用上面說的第二種做法,一次episode就更新一次policy,而且policy直接使用Q值。
這裏寫圖片描述

policy的更新使用了ϵgreedy ,目的就是能夠更好的探索整個狀態空間。
這裏寫圖片描述

4 Off Policy Learning

那麼上面的方法一直是基於當前的policy,爲了探索狀態空間,採用一個次優的策略ϵgreedy policy來探索。那麼是不是可以更直接的使用兩個policy。一個policy用來探索空間,也就是behavior policy,另一個policy就是爲了達到最優policy,叫做target policy。那麼這種方法就叫做off policy learning。On-policy的方法比較簡單,off-policy 方法需要更多的概念和標記,比較不好理解,而且,由於behaviour policy和target policy不相關,這種方法比較不容易收斂。但是off-policy更強大,更通用,實際上的on-policy方法就是off-policy方法的一個子集。比如,就可以使用off-policy從人類專家或者傳統的控制算法來學習一個增強學習模型。
這裏寫圖片描述

關鍵是要找到兩個policy之間的權重關係,從而更新Q值。

關於off-policy learning的部分,之後結合TD方法再做分析。

小結

本次blog分析了一下蒙特卡洛方法。這種基於統計學的方法算法簡單,但是更多的只能用於虛擬環境能進行無限測試的情況。並且state 狀態比較有限,離散的最好。基於這個方法,比如簡單的五子棋(棋盤最好小一點),就可以用這個方法來玩玩了。

接下來的blog講分析TD方法。

聲明:

本文的圖片截取自:
1 Reinforcement Learning: An Introduction
2 Reinforcement Learning Course by David Silver

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