【入門,來自wiki】
強化學習是機器學習中的一個領域,強調如何基於環境而行動,以取得最大化的預期利益。其靈感來源於心理學中的行為主義理論,即有機體如何在環境給予的獎勵或懲罰的刺激下,逐步形成對刺激的預期,產生能獲得最大利益的習慣性行為。這個方法具有普適性,因此在其他許多領域都有研究,例如博弈論、控制論、運籌學、信息論、模擬優化方法、多主體系統學習、群體智能、統計學以及遺傳算法。在運籌學和控制理論研究的語境下,強化學習被稱作“近似動態規划”(approximate dynamic programming,ADP)。在最優控制理論中也有研究這個問題,雖然大部分的研究是關於最優解的存在和特性,並非是學習或者近似方面。在經濟學和博弈論中,強化學習被用來解釋在有限理性的條件下如何出現平衡。
在機器學習問題中,環境通常被規范為馬可夫決策過程(MDP),所以許多強化學習算法在這種情況下使用動態規划技巧。傳統的技術和強化學習算法的主要區別是,后者不需要關於MDP的知識,而且針對無法找到確切方法的大規模MDP。
強化學習和標准的監督式學習之間的區別在於,它並不需要出現正確的輸入/輸出對,也不需要精確校正次優化的行為。強化學習更加專注於在線規划,需要在探索(在未知的領域)和遵從(現有知識)之間找到平衡。強化學習中的“探索-遵從”的交換,在多臂老-虎-機問題和有限MDP中研究得最多。
基本的強化學習模型包括:
- 環境狀態的集合
;
- 動作的集合
;
- 在狀態之間轉換的規則;
- 規定轉換后“即時獎勵”的規則;
- 描述主體能夠觀察到什么的規則。
規則通常是隨機的。主體通常可以觀察即時獎勵和最后一次轉換。在許多模型中,主體被假設為可以觀察現有的環境狀態,這種情況稱為“完全可觀測”(full observability),反之則稱為“部分可觀測”(partial observability)。有時,主體被允許的動作是有限的(例如,你使用的錢不能多於你所擁有的)。
強化學習的主體與環境基於離散的時間步長相作用。在每一個時間,主體接收到一個觀測
,通常其中包含獎勵
。然后,它從允許的集合中選擇一個動作
,然后送出到環境中去。環境則變化到一個新的狀態
,然后決定了和這個變化
相關聯的獎勵
。強化學習主體的目標,是得到盡可能多的獎勵。主體選擇的動作是其歷史的函數,它也可以選擇隨機的動作。
將這個主體的表現和自始自終以最優方式行動的主體相比較,它們之間的行動差異產生了“悔過”的概念。如果要接近最優的方案來行動,主體必須根據它的長時間行動序列進行推理:例如,要最大化我的未來收入,我最好現在去上學,雖然這樣行動的即時貨幣獎勵為負值。
因此,強化學習對於包含長期反饋的問題比短期反饋的表現更好。它在許多問題上得到應用,包括機器人控制、電梯調度、電信通訊、雙陸棋和西洋跳棋。[1]
強化學習的強大能來源於兩個方面:使用樣本來優化行為,使用函數近似來描述復雜的環境。它們使得強化學習可以使用在以下的復雜環境中:
- 模型的環境未知,且解析解不存在;
- 僅僅給出環境的模擬模型(模擬優化方法的問題)[2]
- 從環境中獲取信息的唯一辦法是和它互動。前兩個問題可以被考慮為規划問題,而最后一個問題可以被認為是genuine learning問題。使用強化學習的方法,這兩種規划問題都可以被轉化為機器學習問題。
【以下轉自Kintoki博客】
增強學習(一) ----- 基本概念
機器學習算法大致可以分為三種:
1. 監督學習(如回歸,分類)
2. 非監督學習(如聚類,降維)
3. 增強學習
什么是增強學習呢?
增強學習(reinforcementlearning, RL)又叫做強化學習,是近年來機器學習和智能控制領域的主要方法之一。
定義: Reinforcement learning is learning what to do ----how to map situations to actions ---- so as to maximize a numerical reward signal.[1]
也就是說增強學習關注的是智能體如何在環境中采取一系列行為,從而獲得最大的累積回報。
通過增強學習,一個智能體應該知道在什么狀態下應該采取什么行為。RL是從環境狀態到動作的映射的學習,我們把這個映射稱為策略。
那么增強學習具體解決哪些問題呢,我們來舉一些例子:
例1. flappy bird 是現在很流行的一款小游戲,不了解的同學可以點鏈接進去玩一會兒。現在我們讓小鳥自行進行游戲,但是我們卻沒有小鳥的動力學模型,也不打算了解它的動力學。要怎么做呢? 這時就可以給它設計一個增強學習算法,然后讓小鳥不斷的進行游戲,如果小鳥撞到柱子了,那就獲得-1的回報,否則獲得0回報。通過這樣的若干次訓練,我們最終可以得到一只飛行技能高超的小鳥,它知道在什么情況下采取什么動作來躲避柱子。
例2. 假設我們要構建一個下國際象棋的機器,這種情況不能使用監督學習,首先,我們本身不是優秀的棋手,而請象棋老師來遍歷每個狀態下的最佳棋步則代價過於昂貴。其次,每個棋步好壞判斷不是孤立的,要依賴於對手的選擇和局勢的變化。是一系列的棋步組成的策略決定了是否能贏得比賽。下棋過程的唯一的反饋是在最后贏得或是輸掉棋局時才產生的。這種情況我們可以采用增強學習算法,通過不斷的探索和試錯學習,增強學習可以獲得某種下棋的策略,並在每個狀態下都選擇最有可能獲勝的棋步。目前這種算法已經在棋類游戲中得到了廣泛應用。
可以看到,增強學習和監督學習的區別主要有以下兩點:
1. 增強學習是試錯學習(Trail-and-error),由於沒有直接的指導信息,智能體要以不斷與環境進行交互,通過試錯的方式來獲得最佳策略。
2. 延遲回報,增強學習的指導信息很少,而且往往是在事后(最后一個狀態)才給出的,這就導致了一個問題,就是獲得正回報或者負回報以后,如何將回報分配給前面的狀態。
增強學習是機器學習中一個非常活躍且有趣的領域,相比其他學習方法,增強學習更接近生物學習的本質,因此有望獲得更高的智能,這一點在棋類游戲中已經得到體現。Tesauro(1995)描述的TD-Gammon程序,使用增強學習成為了世界級的西洋雙陸棋選手。這個程序經過150萬個自生成的對弈訓練后,已經近似達到了人類最佳選手的水平,並在和人類頂級高手的較量中取得40 盤僅輸1盤的好成績。
下篇我們正式開始學習增強學習,首先介紹一下馬爾可夫決策過程。
參考資料:
[1] R.Sutton et al. Reinforcement learning: An introduction , 1998
[2] T.Mitchell. 《機器學習》,2003
[3] Andrew Ng.CS229: Machine learning Lecture notes
增強學習(二)----- 馬爾可夫決策過程MDP
1. 馬爾可夫模型的幾類子模型
大家應該還記得馬爾科夫鏈(Markov Chain),了解機器學習的也都知道隱馬爾可夫模型(Hidden Markov Model,HMM)。它們具有的一個共同性質就是馬爾可夫性(無后效性),也就是指系統的下個狀態只與當前狀態信息有關,而與更早之前的狀態無關。
馬爾可夫決策過程(Markov Decision Process, MDP)也具有馬爾可夫性,與上面不同的是MDP考慮了動作,即系統下個狀態不僅和當前的狀態有關,也和當前采取的動作有關。還是舉下棋的例子,當我們在某個局面(狀態s)走了一步(動作a),這時對手的選擇(導致下個狀態s’)我們是不能確定的,但是他的選擇只和s和a有關,而不用考慮更早之前的狀態和動作,即s’是根據s和a隨機生成的。
我們用一個二維表格表示一下,各種馬爾可夫子模型的關系就很清楚了:
不考慮動作 | 考慮動作 | |
狀態完全可見 | 馬爾科夫鏈(MC) | 馬爾可夫決策過程(MDP) |
狀態不完全可見 | 隱馬爾可夫模型(HMM) | 不完全可觀察馬爾可夫決策過程(POMDP) |
2. 馬爾可夫決策過程
一個馬爾可夫決策過程由一個四元組構成M = (S, A, Psa, R ) [注1]
- S: 表示狀態集(states),有s∈S,si表示第i步的狀態。
- A:表示一組動作(actions),有a∈A,ai表示第i步的動作。
- Psa: 表示狀態轉移概率。Psa 表示的是在當前s ∈ S狀態下,經過a ∈ A作用后,會轉移到的其他狀態的概率分布情況。比如,在狀態s下執行動作a,轉移到s'的概率可以表示為p(s'|s,a),也可以說s‘的分布服從Psa。
- R: S×A€ℝ ,R是回報函數(reward function)。有些回報函數狀態S的函數,可以簡化為R: S € ℝ。如果一組(s,a)轉移到了下個狀態s',那么回報函數可記為r(s'|s, a)。如果(s,a)對應的下個狀態s'是唯一的,那么回報函數也可以記為r(s,a)。(這里分為確定性和不確定。確定性的回報,即當在s下執行a時,下個狀態s’是確定的;而不確定性的回報是指當在s下執行a時,下個狀態s’是不確定的,即帶概率的,這時我們需要用確定的期望值來代替不確定,即 E(r(s'|s, a)) = Σs1[p(s1|s,a) * r(s1|s,a)] )
MDP 的動態過程如下:某個agent(智能體,也翻譯成代理、學習者)的初始狀態為s0,然后從 A 中挑選一個動作a0執行,執行后,agent 按Psa概率隨機轉移到了下一個s1狀態,s1∈ Ps0a0。然后再執行一個動作a1,就轉移到了s2,接下來再執行a2…,我們可以用下面的圖表示狀態轉移的過程。
如果回報r是根據狀態s和動作a得到的,則MDP還可以表示成下圖:
3. 值函數(value function)
上篇我們提到增強學習學到的是一個從環境狀態到動作的映射(即行為策略),記為策略π: S→A。而增強學習往往又具有延遲回報的特點: 如果在第n步輸掉了棋,那么只有狀態sn和動作an獲得了立即回報r(sn,an)=-1,前面的所有狀態立即回報均為0。所以對於之前的任意狀態s和動作a,立即回報函數r(s,a)無法說明策略的好壞。因而需要定義值函數(value function,又叫效用函數)來表明當前狀態下策略π的長期影響,即描述agent以原策略π進行前瞻性搜索后的長期回報。
用Vπ(s)表示策略π下,狀態s的值函數。ri 表示未來第i步的立即回報,常見的值函數有以下三種:
a)
b)
c)
其中:
a)是采用策略π的情況下未來有限h步的期望立即回報總和;
b)是采用策略π的情況下期望的平均回報;
c)是值函數最常見的形式,式中γ∈[0,1]稱為折合因子,表明了未來的回報相對於當前回報的重要程度。特別的,γ=0時,相當於只考慮立即不考慮長期回報,γ=1時,將長期回報和立即回報看得同等重要。接下來我們只討論第三種形式,
現在將值函數的第三種形式展開,其中ri表示未來第i步回報,s'表示下一步狀態,則有:
給定策略π和初始狀態s,則動作a=π(s),下個時刻將以概率p(s'|s,a)轉向下個狀態s',那么上式的期望可以拆開,可以重寫為:
上面提到的值函數稱為狀態值函數(state value function),需要注意的是,在Vπ(s)中,π和初始狀態s是我們給定的,而初始動作a是由策略π和狀態s決定的,即a=π(s)。
定義動作值函數(action value functionQ函數)如下:
給定當前狀態s和當前動作a,在未來遵循策略π,那么系統將以概率p(s'|s,a)轉向下個狀態s',上式可以重寫為:
在Qπ(s,a)中,不僅策略π和初始狀態s是我們給定的,當前的動作a也是我們給定的,這是Qπ(s,a)和Vπ(a)的主要區別。
知道值函數的概念后,一個MDP的最優策略可以由下式表示:
即我們尋找的是在任意初始條件s下,能夠最大化值函數的策略π*。
4. 值函數與Q函數計算的例子
上面的概念可能描述得不夠清晰,接下來我們實際計算一下,如圖所示是一個格子世界,我們假設agent從左下角的start點出發,右上角為目標位置,稱為吸收狀態(Absorbing state),對於進入吸收態的動作,我們給予立即回報100,對其他動作則給予0回報,折合因子γ的值我們選擇0.9。
為了方便描述,記第i行,第j列的狀態為sij, 在每個狀態,有四種上下左右四種可選的動作,分別記為au,ad,al,ar。(up,down,left,right首字母),並認為狀態按動作a選擇的方向轉移的概率為1。
1.由於狀態轉移概率是1,每組(s,a)對應了唯一的s'。回報函數r(s'|s,a)可以簡記為r(s,a)
如下所示,每個格子代表一個狀態s,箭頭則代表動作a,旁邊的數字代表立即回報,可以看到只有進入目標位置的動作獲得了回報100,其他動作都獲得了0回報。 即r(s12,ar) = r(s23,au) =100。
2. 一個策略π如圖所示:
3. 值函數Vπ(s)如下所示
根據Vπ的表達式,立即回報,和策略π,有
Vπ(s12) = r(s12,ar) = r(s13|s12,ar) = 100
Vπ(s11)= r(s11,ar)+γ*Vπ(s12) = 0+0.9*100 = 90
Vπ(s23) = r(s23,au) = 100
Vπ(s22)= r(s22,ar)+γ*Vπ(s23) = 90
Vπ(s21)= r(s21,ar)+γ*Vπ(s22) = 81
4. Q(s,a)值如下所示
有了策略π和立即回報函數r(s,a), Qπ(s,a)如何得到的呢?
對s11計算Q函數(用到了上面Vπ的結果)如下:
Qπ(s11,ar)=r(s11,ar)+ γ *Vπ(s12) =0+0.9*100 = 90
Qπ(s11,ad)=r(s11,ad)+ γ *Vπ(s21) = 72
至此我們了解了馬爾可夫決策過程的基本概念,知道了增強學習的目標(獲得任意初始條件下,使Vπ值最大的策略π*),下一篇開始介紹求解最優策略的方法。
PS:發現寫東西還是蠻辛苦的,希望對大家有幫助。另外自己也比較菜,沒寫對的地方歡迎指出~~
[注]采用折合因子作為值函數的MDP也可以定義為五元組M=(S, A, P, γ, R)。也有的書上把值函數作為一個因子定義五元組。還有定義為三元組的,不過MDP的基本組成元素是不變的。
參考資料:
[1] R.Sutton et al. Reinforcement learning: An introduction , 1998
[2] T.Mitchell. 《機器學習》,2003
[3] 金卓軍,逆向增強學習和示教學習算法研究及其在智能機器人中的應用[D],2011
[4] Oliver Sigaud et al,Markov Decision Process in Artificial Intelligence[M], 2010
增強學習(三)----- MDP的動態規划解法
上一篇我們已經說到了,增強學習的目的就是求解馬爾可夫決策過程(MDP)的最優策略,使其在任意初始狀態下,都能獲得最大的Vπ值。(本文不考慮非馬爾可夫環境和不完全可觀測馬爾可夫決策過程(POMDP)中的增強學習)。
那么如何求解最優策略呢?基本的解法有三種:
動態規划法(dynamic programming methods)
蒙特卡羅方法(Monte Carlo methods)
時間差分法(temporal difference)。
動態規划法是其中最基本的算法,也是理解后續算法的基礎,因此本文先介紹動態規划法求解MDP。本文假設擁有MDP模型M=(S, A, Psa, R)的完整知識。
1. 貝爾曼方程(Bellman Equation)
上一篇我們得到了Vπ和Qπ的表達式,並且寫成了如下的形式
在動態規划中,上面兩個式子稱為貝爾曼方程,它表明了當前狀態的值函數與下個狀態的值函數的關系。
優化目標π*可以表示為:
分別記最優策略π*對應的狀態值函數和行為值函數為V*(s)和Q*(s, a),由它們的定義容易知道,V*(s)和Q*(s, a)存在如下關系:
狀態值函數和行為值函數分別滿足如下貝爾曼最優性方程(Bellman optimality equation):
有了貝爾曼方程和貝爾曼最優性方程后,我們就可以用動態規划來求解MDP了。
2. 策略估計(Policy Evaluation)
首先,對於任意的策略π,我們如何計算其狀態值函數Vπ(s)?這個問題被稱作策略估計,
前面講到對於確定性策略,值函數
現在擴展到更一般的情況,如果在某策略π下,π(s)對應的動作a有多種可能,每種可能記為π(a|s),則狀態值函數定義如下:
一般采用迭代的方法更新狀態值函數,首先將所有Vπ(s)的初值賦為0(其他狀態也可以賦為任意值,不過吸收態必須賦0值),然后采用如下式子更新所有狀態s的值函數(第k+1次迭代):
對於Vπ(s),有兩種更新方法,
第一種:將第k次迭代的各狀態值函數[Vk(s1),Vk(s2),Vk(s3)..]保存在一個數組中,第k+1次的Vπ(s)采用第k次的Vπ(s')來計算,並將結果保存在第二個數組中。
第二種:即僅用一個數組保存各狀態值函數,每當得到一個新值,就將舊的值覆蓋,形如[Vk+1(s1),Vk+1(s2),Vk(s3)..],第k+1次迭代的Vπ(s)可能用到第k+1次迭代得到的Vπ(s')。
通常情況下,我們采用第二種方法更新數據,因為它及時利用了新值,能更快的收斂。整個策略估計算法如下圖所示:
3. 策略改進(Policy Improvement)
上一節中進行策略估計的目的,是為了尋找更好的策略,這個過程叫做策略改進(Policy Improvement)。
假設我們有一個策略π,並且確定了它的所有狀態的值函數Vπ(s)。對於某狀態s,有動作a0=π(s)。 那么如果我們在狀態s下不采用動作a0,而采用其他動作a≠π(s)是否會更好呢?要判斷好壞就需要我們計算行為值函數Qπ(s,a),公式我們前面已經說過:
評判標准是:Qπ(s,a)是否大於Vπ(s)。如果Qπ(s,a)> Vπ(s),那么至少說明新策略【僅在狀態s下采用動作a,其他狀態下遵循策略π】比舊策略【所有狀態下都遵循策略π】整體上要更好。
策略改進定理(policy improvement theorem):π和π'是兩個確定的策略,如果對所有狀態s∈S有Qπ(s,π'(s))≥Vπ(s),那么策略π'必然比策略π更好,或者至少一樣好。其中的不等式等價於Vπ'(s)≥Vπ(s)。
有了在某狀態s上改進策略的方法和策略改進定理,我們可以遍歷所有狀態和所有可能的動作a,並采用貪心策略來獲得新策略π'。即對所有的s∈S, 采用下式更新策略:
這種采用關於值函數的貪心策略獲得新策略,改進舊策略的過程,稱為策略改進(Policy Improvement)
最后大家可能會疑惑,貪心策略能否收斂到最優策略,這里我們假設策略改進過程已經收斂,即對所有的s,Vπ'(s)等於Vπ(s)。那么根據上面的策略更新的式子,可以知道對於所有的s∈S下式成立:
可是這個式子正好就是我們在1中所說的Bellman optimality equation,所以π和π'都必然是最優策略!神奇吧!
4. 策略迭代(Policy Iteration)
策略迭代算法就是上面兩節內容的組合。假設我們有一個策略π,那么我們可以用policy evaluation獲得它的值函數Vπ(s),然后根據policy improvement得到更好的策略π',接着再計算Vπ'(s),再獲得更好的策略π'',整個過程順序進行如下圖所示:
完整的算法如下圖所示:
5. 值迭代(Value Iteration):(即Q學習,Q learning)
從上面我們可以看到,策略迭代算法包含了一個策略估計的過程,而策略估計則需要掃描(sweep)所有的狀態若干次,其中巨大的計算量直接影響了策略迭代算法的效率。我們必須要獲得精確的Vπ值嗎?事實上不必,有幾種方法可以在保證算法收斂的情況下,縮短策略估計的過程。
值迭代(Value Iteration)就是其中非常重要的一種。它的每次迭代只掃描(sweep)了每個狀態一次。值迭代的每次迭代對所有的s∈S按照下列公式更新:
即在值迭代的第k+1次迭代時,直接將能獲得的最大的Vπ(s)值賦給Vk+1。值迭代算法直接用可能轉到的下一步s'的V(s')來更新當前的V(s),算法甚至都不需要存儲策略π。而實際上這種更新方式同時卻改變了策略πk和V(s)的估值Vk(s)。 直到算法結束后,我們再通過V值來獲得最優的π。
此外,值迭代還可以理解成是采用迭代的方式逼近1中所示的貝爾曼最優方程。
值迭代完整的算法如圖所示:
由上面的算法可知,值迭代的最后一步,我們才根據V*(s),獲得最優策略π*。
一般來說值迭代和策略迭代都需要經過無數輪迭代才能精確的收斂到V*和π*, 而實踐中,我們往往設定一個閾值來作為中止條件,即當Vπ(s)值改變很小時,我們就近似的認為獲得了最優策略。在折扣回報的有限MDP(discounted finite MDPs)中,進過有限次迭代,兩種算法都能收斂到最優策略π*。
至此我們了解了馬爾可夫決策過程的動態規划解法,動態規划的優點在於它有很好的數學上的解釋,但是動態要求一個完全已知的環境模型,這在現實中是很難做到的。另外,當狀態數量較大的時候,動態規划法的效率也將是一個問題。下一篇介紹蒙特卡羅方法,它的優點在於不需要完整的環境模型。
參考資料:
[1] R.Sutton et al. Reinforcement learning: An introduction , 1998
[2] 徐昕,增強學習及其在移動機器人導航與控制中的應用研究[D],2002
增強學習(四) ----- 蒙特卡羅方法(Monte Carlo Methods)
蒙特卡羅方法又叫統計模擬方法,它使用隨機數(或偽隨機數)來解決計算的問題,是一類重要的數值計算方法。該方法的名字來源於世界著名的賭城蒙特卡羅,而蒙特卡羅方法正是以概率為基礎的方法。
一個簡單的例子可以解釋蒙特卡羅方法,假設我們需要計算一個不規則圖形的面積,那么圖形的不規則程度和分析性計算(比如積分)的復雜程度是成正比的。而采用蒙特卡羅方法是怎么計算的呢?首先你把圖形放到一個已知面積的方框內,然后假想你有一些豆子,把豆子均勻地朝這個方框內撒,散好后數這個圖形之中有多少顆豆子,再根據圖形內外豆子的比例來計算面積。當你的豆子越小,撒的越多的時候,結果就越精確。
現在我們開始講解增強學習中的蒙特卡羅方法,與上篇的DP不同的是,這里不需要對環境的完整知識。蒙特卡羅方法僅僅需要經驗就可以求解最優策略,這些經驗可以在線獲得或者根據某種模擬機制獲得。
要注意的是,我們僅將蒙特卡羅方法定義在episode task上,所謂的episode task就是指不管采取哪種策略π,都會在有限時間內到達終止狀態並獲得回報的任務。比如玩棋類游戲,在有限步數以后總能達到輸贏或者平局的結果並獲得相應回報。
那么什么是經驗呢?經驗其實就是訓練樣本。比如在初始狀態s,遵循策略π,最終獲得了總回報R,這就是一個樣本。如果我們有許多這樣的樣本,就可以估計在狀態s下,遵循策略π的期望回報,也就是狀態值函數Vπ(s)了。蒙特卡羅方法就是依靠樣本的平均回報來解決增強學習問題的。
盡管蒙特卡羅方法和動態規划方法存在諸多不同,但是蒙特卡羅方法借鑒了很多動態規划中的思想。在動態規划中我們首先進行策略估計,計算特定策略π對應的Vπ和Qπ,然后進行策略改進,最終形成策略迭代。這些想法同樣在蒙特卡羅方法中應用。
首先考慮用蒙特卡羅方法來學習狀態值函數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)的估計值將收斂於其真實值。
在狀態轉移概率p(s'|a,s)已知的情況下,策略估計后有了新的值函數,我們就可以進行策略改進了,只需要看哪個動作能獲得最大的期望累積回報就可以。然而在沒有准確的狀態轉移概率的情況下這是不可行的。為此,我們需要估計動作值函數Qπ(s,a)。Qπ(s,a)的估計方法前面類似,即在狀態s下采用動作a,后續遵循策略π獲得的期望累積回報即為Qπ(s,a),依然用平均回報來估計它。有了Q值,就可以進行策略改進了
下面我們來探討一下Maintaining Exploration的問題。前面我們講到,我們通過一些樣本來估計Q和V,並且在未來執行估值最大的動作。這里就存在一個問題,假設在某個確定狀態s0下,能執行a0, a1, a2這三個動作,如果智能體已經估計了兩個Q函數值,如Q(s0,a0), Q(s0,a1),且Q(s0,a0)>Q(s0,a1),那么它在未來將只會執行一個確定的動作a0。這樣我們就無法更新Q(s0,a1)的估值和獲得Q(s0,a2)的估值了。這樣的后果是,我們無法保證Q(s0,a0)就是s0下最大的Q函數。
Maintaining Exploration的思想很簡單,就是用soft policies來替換確定性策略,使所有的動作都有可能被執行。比如其中的一種方法是ε-greedy policy,即在所有的狀態下,用1-ε的概率來執行當前的最優動作a0,ε的概率來執行其他動作a1, a2。這樣我們就可以獲得所有動作的估計值,然后通過慢慢減少ε值,最終使算法收斂,並得到最優策略。簡單起見,在下面MC控制中,我們使用exploring start,即僅在第一步令所有的a都有一個非零的概率被選中。
6. 蒙特卡羅控制(Mote Carlo Control)
我們看下MC版本的策略迭代過程:
根據前面的說法,值函數Qπ(s,a)的估計值需要在無窮多episode后才能收斂到其真實值。這樣的話策略迭代必然是低效的。在上一篇DP中,我們了值迭代算法,即每次都不用完整的策略估計,而僅僅使用值函數的近似值進行迭代,這里也用到了類似的思想。每次策略的近似值,然后用這個近似值來更新得到一個近似的策略,並最終收斂到最優策略。這個思想稱為廣義策略迭代。
具體到MC control,就是在每個episode后都重新估計下動作值函數(盡管不是真實值),然后根據近似的動作值函數,進行策略更新。這是一個episode by episode的過程。
一個采用exploring starts的Monte Carlo control算法,如下圖所示,稱為Monte Carlo ES。而對於所有狀態都采用soft policy的版本,這里不再討論。
7. 小結
Monte Carlo方法的一個顯而易見的好處就是我們不需要環境模型了,可以從經驗中直接學到策略。它的另一個好處是,它對所有狀態s的估計都是獨立的,而不依賴與其他狀態的值函數。在很多時候,我們不需要對所有狀態值進行估計,這種情況下蒙特卡羅方法就十分適用。
不過,現在增強學習中,直接使用MC方法的情況比較少,而較多的采用TD算法族。但是如同DP一樣,MC方法也是增強學習的基礎之一,因此依然有學習的必要。
參考資料:
[1] R.Sutton et al. Reinforcement learning: An introduction, 1998
[2] Wikipedia,蒙特卡羅方法