《強化學習Sutton》讀書筆記(四)——蒙特卡洛方法(Monte Carlo Methods)

此爲《強化學習》第五章。

上一節中的動態規劃方法需要知道整個environment的信息,但有的時候,我們只有經驗 (Experience) (比如一組採樣),而對environment沒有任何其他知識;或者我們有一個可以交互的黑盒,通過黑盒可以進行仿真得到experience,但具體黑盒內的概率模型也是不知道的(或者非常難以計算的)。這種情況下,動態規劃方法不再適用,蒙特卡洛方法 (Monte Carlo Method, MC) 成爲了新的解決方案。

蒙特卡洛估計

假設我們已經得到了一批在策略π 下的採樣,我們想以此估計每個狀態的值函數vπ(s) 。我們定義任一採樣中的任一時刻通過狀態s 叫做對狀態s 的一次訪問 (Visit) 。通常有兩種方法來估計vπ(s)首次訪問方法 (First-Visit MC Method) 以每個採樣下第一次訪問狀態s 時的回報的平均作爲對vπ(s) 的估計,每次訪問方法 (Every-Visit MC Method) 以每個採樣下每次訪問狀態s 時的回報的平均作爲對vπ(s) 的估計。即

vπ(s)firstvisit=expGexp,t|Gexp,t|(Sexp,t=s,Sexp,ks,k<t)vπ(s)everyvisit=expGexp,t|Gexp,t|(Sexp,t=s)

注意到Gt=Rt+1+Gt+1 ,所以在遍歷時,需要從後向前遍歷求出回報Gt 。First-Visit方法和Every-Visit方法非常類似,但在理論性質上略有不同。本章主要討論First-Visit方法,以下給出First-Visit蒙特卡洛估計方法的僞代碼。

首次訪問方法僞代碼

蒙特卡洛方法聽起來非常簡單,但也已經可以用來解決一些問題了,比如21點 (Blackjack)

蒙特卡洛方法對行爲值函數的估計

如果我們已知狀態之間跳轉的概率模型,那麼上述的對狀態值函數的估計就足夠了,因爲我們可以通過貪心算法,得到確定性的策略(即π(s)=a )。但如果我們不知道狀態之間的概率模型,那麼我們就無法確定狀態s 能跳轉到其他哪些狀態。此時,對行爲值函數進行估計是一種可行的方法。

對行爲值函數的估計和狀態值函數非常類似,它也是統計每次在狀態s 選擇行爲a 得到回報的平均。類似地,它也可以分成首次訪問方法和每次訪問方法,表達式如下:

qπ(s,a)firstvisit=expGexp,t+1|Gexp,t+1|(Sexp,t=sAexp,t=a,Sexp,ksAexp,ka,k<t)qπ(s,a)everyvisit=expGexp,t+1|Gexp,t+1|(Sexp,t=sAexp,t=a)

但是,評估行爲值函數有一個問題:很多(s,a) 對可能一次都沒有被訪問。比如當π 是一個確定型的策略時,每個狀態只能觀察到一個行爲。由於缺少足夠的數據,求平均的數量太少,以至於評估行爲值函數並不能提升策略。解決這樣問題的一個通用思路是持續探索 (Maintaining Exploration) ,我們可以讓起點在所有的(s,a) 中隨機選擇,這樣在無數次嘗試中總是能夠遍歷所有的(s,a) 。這種方法被稱爲探索起點 (Exporing Starts)

探索起點方法有一定侷限性。比如在一種實際交互的遊戲中,我們只能從幾個固定的起點出發,而不能任意指定起點。一種最常見的替代方法是制定一個探索性的策略,比如ϵ -貪心法。

蒙特卡洛控制

上述兩節已經分析瞭如何使用蒙特卡洛法估計得到狀態值函數或者行爲值函數,本節討論如何通過這些值函數來改良策略。方法和上一章中是幾乎一樣的,那就是貪心法。

πk+1(s)=argmaxaqπk(s,a)

可以證明πk+1 不劣於πk (詳見書本)。稍微有一點不同的地方在於,這裏的策略將使用探索起點的方法,來增強探索能力。

注意到這裏我們有兩個不太靠譜的假設,一是探索起點,二是無限次地實驗。探索起點的前提我們將在下一章中去掉,而去掉無限次實驗前提一般有兩種方法。一是考慮置信度,如果很多次實驗後仍然有個別(s,a) 沒有被完全探索,那麼它們可能就是不重要的(雖然這種方法也需要大量的實驗);二是其實策略評估沒有那麼重要,不那麼準確的策略評估也可以得到較好的結果(比如值迭代)。其實這兩種方法似乎是一樣的,總之就是讓我們放心地不探索所有的可能性。

因此,帶探索起點的蒙特卡洛方法僞代碼如下。

帶探索起點蒙特卡洛方法僞代碼

不帶探索起點的蒙特卡洛控制

上一節中已經說明了探索起點的不靠譜,並且也提到了取消探索起點的一個最常見的方法就是採用非確定性的(帶概率的)策略。這裏也有兩類算法,分別叫做On-Policy方法Off-Policy方法。On-Policy方法使用相同的策略生成數據和制定決策,而Off-Policy方法使用不同的兩種策略作爲學習者和決策者(On-policy methods attempt to evaluate or improve the policy that is used to make decisions, whereas off-policy methods evaluate or improve a policy different from that used to generate the data)。本節中討論On-Policy方法。

On-Policy方法選擇了一個非確定性的軟 (Soft) 策略,用來生成數據和決策,比如ϵ -貪心算法。類似之前的算法,我們也使用平均來估計得到q(s,a) ,但在選擇策略時,我們僅有1ϵ 的概率選擇q(s,a) 最大的那個行爲a ,也有ϵ/(|A(St)|) 的概率隨機選擇行爲。它的僞代碼如下:

不帶探索起點蒙特卡洛方法僞代碼

基於重要性採樣的Off-Policy估計

On-Policy方法面臨着一種兩難困境:一方面,它們的目標是找到一個最優的策略;另一方面,爲了探索所有的可能性,這個策略不得不做一些讓步,使它的行爲看起來不是最優(才能探索到一些其他行爲)。Off-Policy方法試圖維持一個確定性的當前最優策略,而使用其它非確定性的軟策略來生成數據。學習得到的當前最優策略又被稱爲目標策略 (Target Policy) ,而用來生成數據的策略被稱爲行爲策略 (Behavior Policy)

我讀到這裏時有個疑問,On-Policy方法可以在最後把ϵ -貪心改成純貪心,這樣也能得到確定性策略用於決策,難道和Off-Policy有什麼不同嗎?我自己構造了一個例子試圖說明不同。假如某個狀態s 下一步可以選擇sgoodsbadv(sgood)=100 (假設很大),v(sbad)= ,在s 的上一步s ,是否應該選擇s 作爲下一步呢?在On-Policy方法下,應該是不行的,因爲按照ϵ -貪心,E[v(s)]= ,即使最後改成了純貪心,也無法改變對s 的差評。而在Off-Policy方法下,由於目標策略Target Policy永遠不會選擇sbad ,因此在重要性採樣中,即使行爲策略Behavior Policy有時選擇了sbad ,由於它的權重爲0 ,因此不會給s 帶來差評。

On-policy方法往往比較簡單,因此書本中通常先考慮On-Policy方法。Off-Policy方法更加複雜,因此收斂速度偏慢,但它更加強大、泛化,因爲On-Policy方法只是Off-Policy方法的一種特例。

假設我們的目標策略爲π ,行爲策略爲b ,使用Off-Policy的一個前提是π(a|s)>0b(a|s)>0 。因爲如果行爲策略無法觸及到這一對(s,a) ,那麼我們將無從估計目標策略中的(s,a) 。當然通常這一條件是能夠得到滿足的,因爲往往π 是一個確定性策略,而b 是一個非確定性策略。

假設我們以St 爲起點,在策略π 下經歷了At,St+1,At+1,...,ST 的軌跡,那麼這個軌跡發生的概率是

Pr{At,St+1,...,ST|St,At:T1π}=π(At|St)p(St+1|St,At)π(At+1|St+1)p(ST|ST1,AT1)

這個式子中的p 常常是不可知的,不過幸運的是,當我們求解重要性採樣的係數時,它們都會被約去。

ρt:T1Pr{At,St+1,...,ST|St,At:T1π}Pr{At,St+1,...,ST|St,At:T1b}=π(At|St)π(At+1|St+1)π(AT1|ST1)b(At|St)b(At+1|St+1)b(AT1|ST1)

在使用蒙特卡洛法求vb(s)=E[Gt|St=s] 的時候,只能得到策略b 的值函數,它顯然不能收斂到策略π 。這時重要性採樣的係數就能派上用場。

vπ(s)=E[ρt:T1Gt|St=s]

因此Off-Policy方法結合First-Visit狀態值函數的式子爲

vπ(s)firstvisit=expρexp,t:T1Gexp,t|Gexp,t|(Sexp,t=s,Sexp,ks,k<t)

上式被稱爲普通重要性採樣 (Ordinary Importance Sampling) 。另外還存在另一不同的加權重要性採樣 (Weighted Importance Sampling) ,式子如下:

vπ(s)firstvisit=expρexp,t:T1Gexp,texpρexp,t:T1(Sexp,t=s,Sexp,ks,k<t)

先說結論。普通重要性採樣無偏,但方差較大,可能出現極端結果;加權重要性採樣有偏(雖然偏差會逐漸減小),但方差較小。舉個例子,考慮在所有樣本中第一次訪問s ,由於策略b 的探索性,在普通重要性採樣中,ρ 可能會很大,從而帶來過於極端值函數;在加權重要性採樣中,ρ 被消去了,vπ(s)=vb(s) ,這結果肯定是有偏差的,但這(在後續過程中)保證了權重不會大於1。在實踐中,加權重要性採樣的方差要明顯低得多,因此更多地被採納。

Every-Visit方法對普通或加權重要性採樣都是有偏的,儘管隨着時間偏差也能逐漸趨向於0 。實踐中,Every-Visit方法比First-Visit方法更易實現,更受歡迎。

增量式實現

前幾章中都有采用增量式實現來加速算法、節約空間,蒙特卡洛法也一樣。假設我們有一組不同experience下經過狀態s 的回報G1,G2,...,Gn (注意它們之間其實沒有順序關係,只是在不同採樣下經過狀態s 而已),它們對應的權重爲W1,W2,...,Wn ,根據加權重要性採樣,有

vn(s)=k=1nWkGkk=1nWk

(這裏使用n 而不用t 作爲下標,是因爲避免把n+1 理解爲下一時刻。實際上,n+1 表示下一次經過狀態s 。另外這裏的下標和書上略有不同,因爲書上默認v1(s) 爲初始值,而本文爲自己理解方便,改爲v0(s) 爲初始值,這樣就不會有奇怪的n1 。)令Cn=k=1nWk 可以得到

vn+1(s)=k=1nWkGk+Wn+1Gn+1Cn+Wn+1=k=1nWkGk+Wn+1Gn+1CnCnCn+Wn+1=vn(s)[1Wn+1Cn+1]+Wn+1Gn+1Cn+1=vn(s)+Wn+1Cn+1(Gn+1vn(s))

於是可以得到增量式的、Off-Policy的、加權重要性採樣的、Every-Visit的、對行爲值函數進行迭代的蒙特卡洛方法僞代碼:

Off-Policy蒙特卡洛法估計僞代碼

注意GW 是全局的,它們每個時刻都要更新;而CQ 是基於狀態行爲對(s,a) 的,只有這個方法在策略b 中被執行了,纔會更新其中的一個(s,a)

Off-Policy蒙特卡洛控制

On-Policy方法直接使用(帶探索的)貪心法(或其他軟策略)更新π 就可以了,因爲On-Policy不區分目標策略和行爲策略。Off-Policy也很類似,一方面它用純貪心法更新了π ,一方面用軟策略更新了b ,但它們基於的值函數是同一套(都是π 的)。與上一個僞代碼幾乎完全一樣,這一節給出Off-Policy蒙特卡洛控制的僞代碼(其他參數,比如加權重要性採樣等與上一個僞代碼相同)。

Off-Policy蒙特卡洛法控制僞代碼

* 感知衰減的重要性採樣

暫略。

* 單次決策的重要性採樣

暫略。

參考文獻

《Reinforcement Learning: An Introduction (second edition)》Richard S. Sutton and Andrew G. Barto

上一篇:《強化學習Sutton》讀書筆記(三)——動態規劃(Dynamic Programming)
下一篇:《強化學習Sutton》讀書筆記(五)——時序差分學習(Temporal-Difference Learning)

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