理解 on-policy 和 off-policy

轉自:https://www.cnblogs.com/xiachongkun/p/7767976.html,感謝分享html

大名鼎鼎的蒙特卡洛方法(MC),源自於一個賭城的名字,做爲一種計算方法,應用領域衆多,主要用於求值。蒙特卡洛方法的核心思想就是:模擬---抽樣---估值。算法

蒙特卡洛的使用條件:1.環境是可模擬的;2.只適合情節性任務(episode tasks)。bootstrap

蒙特卡洛在強化學習中的應用:app

1.完美信息博弈:圍棋、象棋、國際象棋等。函數

2.非徹底信息博弈:21點、麻將、梭哈等。學習

前面的動態規劃方法,要求環境模型已知,而後根據已知的轉移機率,求出全部的狀態值和動做,選出其中值函數最高的一些列動做構成最優策略。但MC方法面對的是model-free,依靠經驗就能夠求解最優策略。優化

那麼,什麼是經驗呢?經驗其實就是訓練樣本,無論怎麼樣,對一個任務從頭至尾執行一遍,就獲得了一個訓練樣本,若是有大量的樣本,那麼就能夠估計在狀態s下,遵循某個策略的指望回報,也就是狀態值函數。atom

這樣應該就明白了,MC方法是依靠大量樣本的平均回報來解決強化學習問題的。spa

在正式開始MC以前,先放上一張人神共知的圖,看看DP和MC還有後面的TD到底有什麼關係。xml

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的值函數能夠這樣計算:

   

v(s)=G11(s)+G21(s)+G31(s)+N(s)v(s)=G11(s)+G21(s)+G31(s)+⋯N(s)

 

   對於every-visit MC,某一個狀態s的值函數能夠這麼計算:

  

v(s)=G11(s)+G12(s)++G21(s)+G22(s)++G31(s)+G32(s)+N(s)v(s)=G11(s)+G12(s)+⋯+G21(s)+G22(s)+⋯+G31(s)+G32(s)+⋯N(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),好比正態分佈,這樣,本來的指望以下:

   

   若是咱們定義重要性權重:

ωn=p(zn)q(zn)ωn=p(zn)q(zn)

,那麼,普通的重要性採樣求積分就以下圖所示:

 

  

E[f]=1Nnωnf(zn)E[f]=1N∑nωnf(zn)

 

   由上式可知,基於重要性採樣的積分估計爲無偏估計,即估計的指望值等於真實的指望。可是,基於重要性採樣的積分估計的方差無窮大。這是由於,原來的被積分函數乘上一個重要性權重,這就改變了被積函數的形狀和分佈。儘管均值沒有發生什麼變化,但方差明顯發生了改變。

   固然了,在重要性採樣中,使用的採樣機率分佈與原機率分佈越接近,方差就越小。然而,被積分函數的機率每每很那求得,或者,沒有簡單的採樣機率分佈與之類似,這時候若是執迷不悟還使用分佈差異很大的採樣機率對原機率分佈進行採樣,方差就會趨近於無窮大。

   其中一種減少重要性採樣積分方差的方法就是採用加權重要性採樣:

E[f]n=1NωnNm=1ωmf(zn)E[f]≈∑n=1Nωn∑m=1Nωmf(zn)

 

   

   好了,前面說完了重要性採樣的基本概念,下面就說說這些與離策略方法有什麼關係呢。這裏是這麼理解的,數據生成策略π所產生的軌跡機率分佈至關於重要性採樣中的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

相關文章
相關標籤/搜索