轉自:https://www.cnblogs.com/xiachongkun/p/7767976.html,感謝分享
大名鼎鼎的蒙特卡洛方法(MC),源自於一個賭城的名字,作為一種計算方法,應用領域眾多,主要用於求值。蒙特卡洛方法的核心思想就是:模擬---抽樣---估值。
蒙特卡洛的使用條件:1.環境是可模擬的;2.只適合情節性任務(episode tasks)。
蒙特卡洛在強化學習中的應用:
1.完美信息博弈:圍棋、象棋、國際象棋等。
2.非完全信息博弈:21點、麻將、梭哈等。
前面的動態規划方法,要求環境模型已知,然后根據已知的轉移概率,求出所有的狀態值和動作,選出其中值函數最高的一些列動作構成最優策略。但MC方法面對的是model-free,依靠經驗就可以求解最優策略。
那么,什么是經驗呢?經驗其實就是訓練樣本,不管怎么樣,對一個任務從頭到尾執行一遍,就得到了一個訓練樣本,如果有大量的樣本,那么就可以估計在狀態s下,遵循某個策略的期望回報,也就是狀態值函數。
這樣應該就明白了,MC方法是依靠大量樣本的平均回報來解決強化學習問題的。
在正式開始MC之前,先放上一張人神共知的圖,看看DP和MC還有后面的TD到底有什么關系。
1.MC的基本概念
當我們要評估智能體的當前策略時,可以利用策略產生很多次試驗,每次試驗都是從任意的初始狀態開始直到終止狀態,比如一次試驗為S1,A1,R2,S2,A2,R3.........,計算一次試驗找那個狀態s的折扣回報返回值為:
用圖表示如下:
MC方法就是反復多次試驗,求取每一個實驗中每一個狀態s的值函數,然后再根據GPI,進行策略改進、策略評估、策略改進....直到最優。
這中間就需要考慮一個情況,在一次試驗中,對於某個狀態s,可能只經歷一次,也可能經歷多次,也可能不經歷,對於沒有經歷狀態s的實驗,在求取s的值函數時直接忽略該次實驗就好。那么,對於其他兩種情況時,怎么處理呢?
這里就有了兩種方法:first-visit MC和every visit MC.
對於first-visit MC, 某一個狀態s的值函數可以這樣計算:
對於every-visit MC,某一個狀態s的值函數可以這么計算:
下面給出一次訪問MC的偽代碼如下所示:
2.起始點方法(Exploring Starts MC)
對於MC來說,經驗也就是訓練樣本的完備性至關重要,因為完備的訓練樣本才能估計出准確的值函數。但是,正如前面所說的,很多情況下,我們無法保證在多次試驗后,可以獲得一個較為完備的分布,很可能大部分都是極為相似的試驗,導致一部分狀態根本無法遍歷到,遇到這種情況我們該怎么辦呢?很明顯,我們需要再MC方法中保證每個狀態都能被訪問到才行啊。這時候,就有人提出了,我們不是有起始狀態嘛,可以設置一個隨機概率,使得所有可能的狀態都有一定不為0的概率作為初始狀態,這樣不就能遍歷到每一個狀態了嗎。這就是起始點方法的思想。
偽代碼如下所示:
下面問題又來了,起始點方法中,似乎有個問題,初始狀態是隨機分配的,這樣可以保證迭代過程中每一個狀態行為對都能被選中,但這里面蘊含了一個假設:也就是假設所有動作都能被無限頻繁地被選中。這個我的理解就是:在狀態很多的情況下,如果要每一個狀態作為起始狀態被選中的話,按照隨機不為0的概率,可能需要無限次之多,至少理論上是這樣。但現實中,有時候很難成立,或者無法完全保證。那么,有沒有其他方法,可以保證初始狀態不變的同時,又能保證每個狀態可以遍歷到呢?
我們忽然想到了以前EE問題探索的時候,似乎ε-greedy就可以滿足啊。對了,就是這個方法,偽代碼如下:
3. On-policy MC和Off-policy MC
下面得說一下同策略MC和離策略MC方法了。為什么會有這兩種分類呢?可以想一下,MC算法不需要模型,只需要經驗樣本,只要足夠多就可以近似估計出最優策略了,但這些訓練樣本怎么產生呢,如果訓練樣本根據另一套不是最優的策略生產的,那么在進行評估與改進的時候,就不太一樣了。所以,這兩種方法針對的就是數據產生的策略與評估改進的策略是否為統一策略進行分類的。
a.On-policy MC:同策略MC是指產生數據的策略與評估改進的策略是同一個策略。
b.Off-policy MC:離策略是指產生數據策略與評估改進的策略不是同一種策略。當然了,離策略MC也不是隨便選擇的,而是必須滿足一定的條件。這個條件簡單說就是:數據生成策略產生的狀態要覆蓋評估和改進策略的所有可能性。其實想想,這個還是比較苛刻的。
4.重要性采樣(Importance Sampling)
同策略MC雖然更為簡單方便,但實際應用中,離策略更為普遍。因此實際情況下,我們往往可以根據一些人為經驗的策略給出一系列試驗。
重要性采樣是離策略方法使用時出現的問題。這一塊內容讀sutton原著的時候,其實我並沒有理解的特別清楚,感覺寫的比較拗口。於是參考了天津包子餡的知乎專欄,算是有點明白了。
重要性采樣來源於求期望,比如說:求取下面的期望
如果其中的隨機變量z的分布非常復雜時,我們無法根據解析的方法產生用於逼近期望的樣本,這時候怎么辦呢?我們可以選用一個概率分布非常簡單,產生樣本很容易的概率q(z),比如正態分布,這樣,原本的期望如下:
如果我們定義重要性權重:
,那么,普通的重要性采樣求積分就如下圖所示:
由上式可知,基於重要性采樣的積分估計為無偏估計,即估計的期望值等於真實的期望。但是,基於重要性采樣的積分估計的方差無窮大。這是因為,原來的被積分函數乘上一個重要性權重,這就改變了被積函數的形狀和分布。盡管均值沒有發生什么變化,但方差明顯發生了改變。
當然了,在重要性采樣中,使用的采樣概率分布與原概率分布越接近,方差就越小。然而,被積分函數的概率往往很那求得,或者,沒有簡單的采樣概率分布與之相似,這時候如果執迷不悟還使用分布差別很大的采樣概率對原概率分布進行采樣,方差就會趨近於無窮大。
其中一種減小重要性采樣積分方差的方法就是采用加權重要性采樣:
好了,前面說完了重要性采樣的基本概念,下面就說說這些與離策略方法有什么關系呢。這里是這么理解的,數據生成策略π所產生的軌跡概率分布相當於重要性采樣中的q(z),用來評估和改進的策略μ對應的是那個復雜的p(z),因此利用數據生成策略所產生的累積函數返回值評估策略時,需要累積函數返回值前面乘以重要性權重。
那么,在評估改進的策略時,一次試驗的概率是:
在數據生成策略下,相對應的實驗概率為:
因此,重要性權重為:
對於普通的重要性采樣,值函數估計為:
下面用個簡單的小例子來說明一下上面的式子:
加權的重要性采樣值函數估計為:
最后,給出離策略MC方法的一個偽代碼:
最后,總結一下蒙特卡洛與動態規划的區別。
1.DP方法是基於模型的,而MC是無模型的。
2.DP是計算是自舉的或引導性的(bootstrapping),而MC的計算是取樣性的(sampling)。
MC的優缺點說明:
優點:a.蒙特卡洛方法可以從交互中直接學習優化的策略,而不需要一個環境的動態模型。這個樣本很可能是大量的但容易獲得的。
b.MC可以用於只知道樣本的模型。
c.MC方法的每一個狀態值計算都是獨立計算的,不會影響其他的狀態值。
缺點:a.需要大量重復的訓練樣本。
b.基於概率的,也就是不確定的。
參考文獻
[1]. Reinforcement learning: an introduction.2017 Draft.
[2].https://zhuanlan.zhihu.com/p/25743759
[3].http://www.cnblogs.com/steven-yang/p/6507015.html
[4].http://www.cnblogs.com/jinxulin/p/3560737.html