1. 程式人生 > >馬爾可夫決策過程

馬爾可夫決策過程

直接 mic async 兩種 bellman states force sum 它的

馬爾可夫決策過程

  1. 概述

現在我們開始討論增強學習(RL,reinforcement learning)和自適應控制( adaptive control)。在監督式學習中,我們的算法總是嘗試著在訓練集合中使預測輸出盡可能的模仿(mimic)實際標簽y(或者潛在標簽)。在這樣的設置下,標簽明確的給出了每個輸入x的正確答案。然而,對於許多序列決策和控制問題(sequential decision making and control problems),很難提供這樣的明確的監督式學習。比如我們現在正在做一個四條腿的機器人,目前我們正在嘗試編程讓他能夠行走,在最開始的時候,我們就無法定義什麽是正確的行走,那麽我們就無法提供一個明確的監督式學習算法來嘗試模仿。

在增強學習框架下,我們的算法將僅包含回報函數(reward function),該函數能夠表明學習主體(learning agent)什麽時候做的好,什麽時候做的不好。在四足機器人行走例子中,回報函數可以是在機器人向前移動時,給予機器人積極的回報,在機器人後退後者跌倒時給予消極的回報。那麽我們的學習算法任務是如何隨著時間的變化而選擇一個能夠讓回報最大的行動。

目前增強學習已經能夠成功的應用在不同的自主直升飛機駕駛、機器人步態運動、手機網絡路由、市場策略選擇、工廠控制和不同的網頁檢索等等。在這裏,我們的增強學習將從馬爾可夫決策過程(MDP, Markov decision processes)開始。

  1. 馬爾可夫決策過程

一個馬爾可夫決策過程是一個元組 (S, A, {Psa}, γ, R),其中(以自主直升飛機駕駛為例):

  • S是狀態(states)集合,例:直升飛機的所有可能的位置和方向的集合。
  • A是動作(actions)集合,例:可以控制直升飛機方向的方向集合
  • Psa是狀態轉移概率,例:對於每個狀態s∈ S,動作a∈ A,Psa是在狀態空間的一個分布。之後我們會詳細介紹,簡而言之Psa給出了在狀態s下采取動作a,我們會轉移到其他狀態的概率分布情況。
  • γ ∈ [0, 1),稱之為折現因子(discount factor)
  • R:S × A → R是回報函數。有些時候回報函數也可以僅僅是S的函數。

MDP動態過程如下:我們的學習體(agent)以某狀態s0開始,之後選擇了一些動作a0 ∈ A並執行,之後按照Psa概率隨機轉移到下一個狀態s1,其中s1 Ps0a0。之後再選擇另一個動作a1 ∈ A並執行,狀態轉移後得到s2 Ps1a1,之後不斷的繼續下去。即如下圖所示:

技術分享圖片

基於上面一系列的在狀態s0,s1,…,伴隨著動作a0,a1,…,我們最終的回報為: R(s0,a0)+γR(s1,a1)+γ2R(s2,a2)+…當我們僅以狀態來定義回報,總回報為R(s0)+γR(s1)+γ2R(s2)+…,在多數情況下,盡管基於狀態-動作的回報函數R(s,a)並不是很難給出,但是我們仍將會選擇較為簡單的基於狀態的回報函數R(s)。

在增強學習中,我們的目標就是在時間過程中,選擇合適的動作,使得最終的回報期望最大,其中回報期望為E[R(s0)+γR(s1)+γ2R(s2)+…]。註意在時間步t下的回報函數的折現因子為γt。為了使得期望最大,我們希望過程中盡可能的取得積極的回報(也盡可能的減少消極回報)。在經濟學應用中,R(·)是賺取的錢的數量,而γ則可以解釋為利率(即今天的一美元比明天的一美元更值錢)。

一個策略(policy)是對於任意函數π : S → A,即從狀態到動作函數。無論什麽時候,如果我們在狀態s,那麽我們就會執行一些策略π,使得我們的動作a=π(s)。對於策略π,我們定義值函數(value function)為:Vπ(s)=E[R(s0)+γR(s1)+γ2R(s2)+· · ·|s0=s,π],其中Vπ(s)是在狀態為s下,采取基於策略π而選擇行動a的各個折現回報總和的期望(the expected sum of discounted rewards)。

對於一個策略π,它的值函數Vπ滿足貝爾曼等式(Bellman equations):

Vπ(s)= R(s) +γ

這說明折現回報總和的期望Vπ(s)包含兩項:其一是即時匯報(immediate reward) R(s),即在開始狀態s就可以直接得到的匯報。而第二項是未來折現回報總和的期望。進一步看第二項,求和項可以寫成Es′P(s)[Vπ(s′)],這是在狀態s‘下的折現回報總和的期望,這裏的s‘滿足P(s)分布,而P(s)是我們在MDP中狀態s下采取動作a的轉移概率。這樣,第二項就可以看成是MDP第一步之後,觀察到的折現回報總和的期望。

我們可以用貝爾曼等式求解Vπ,即在有限狀態的MDP(|S|<∞),對於每一個狀態s都可以得到Vπ(s),那麽我們就得到了一系列關於 |S| 的線性等式(對於每個狀態s,Vπ(s)未知)。此外,我們定義最優值方程為V?(s) = maxπVπ(s),即在所有的策略π中,尋找能夠使得折現回報總和期望最大的最優策略。把該表達式轉換成貝爾曼等式形式,即

V?(s) = R(s) + maxa∈A γ

這裏的第一項就是之前說的即時回報,而第二項就是在行動a之後各個狀態的折現回報總和的期望。

我們也定義最優策略π?:S → A,如下:

π?(s) = arg maxa∈A

註意是π?(s)給出了動作a,而動作a使得該式子最大化。

事實上,對於每一個狀態s和策略π,我們都有V?(s) = Vπ?(s) ≥ Vπ(s),這裏第一個等式說明對於最優策略π?的值等於最優值。而不等式說明,π?的值在所有的策略中是最優的。這裏需要註意π?對於所有的s都是最優策略。也就是說,π?並不是對於某些狀態的最優策略,而是對於所有狀態而言的,換句話說無論我們MDP的初始狀態是什麽,都是最優的策略。

  1. 值叠代和策略叠代

我們討論兩個有效的算法用來求解有限狀態下MDP。接下來,我們討論的MDP是在狀態空間和動作空間均是有限空間的情況下,即|S | <∞, |A| < ∞。

第一個方法是值叠代,如下:

  1. 對於每一個狀態s,初始化V(s) := 0
  2. 循環直到收斂 {

對於每一個狀態,更新V (s) := R(s) + maxa∈A γ }

該算法是根據貝爾曼等式不斷的嘗試更新值函數,以得到最優值函數。

在內循環中,有兩種方法。第一種是,我們可以計算每一個狀態s的新值V(s),然後用這些值更新舊的值(統一更新)。這稱之為同步更新(synchronous update)。在這個例子中,算法可以被認為是Bellman backup operator的一個應用,即估計當前的值作為新值。此外,我們也可以采用異步更新(asynchronous updates),也就是在按照某個順序循環所有狀態,然後更新一次值。在同步更新中,第一次更新之後,V(s)=R(s),而對於異步更新,第一次更新之後大部分V(s)>R(s)。

無論是同步更新還是異步更新,值叠代都可以由V收斂到V*,在得到V* 之後,我們就可以根據π?(s)得到最優的策略。

另外一種求解算法是策略叠代(policy iteration),算法如下:

  1. 隨機初始化策略π
  2. 循環直到收斂 {

    a) 令 V := Vπ

    b) 對於每一個狀態s,取π(s) := maxa∈A γ}

這裏的內循環不斷重復的計算當前策略的值函數,然後使用當前的值函數更新策略(b)中更新的策略π也被稱為對於V的貪婪策略)。註意步驟a)可以用求解貝爾曼方程來得到Vπ。在足夠多的叠代下,V會收斂到V*,π會收斂到π*

以上兩種算法是求解MDP的標準算法,但並不是說沒有更好的方法。對於小的MDP,策略叠代通常能夠更快的收斂。而對於具有較大狀態空間的MDP而言,求解V*是非常困難的(需要求解大量的線性等式),這時候一般選擇值叠代。因此,在實際問題中值叠代通常多余策略叠代。

  1. MDP的一個學習模型

到目前為止,我們已經討論了MDP以及在狀態轉移概率和回報已知的情況下求解MDP的算法。在許多現實的例子裏,我們並不知道明確的狀態轉移概率和回報,因此必須從數據中提取(通常S,A,γ是已知的)。

舉個例子,對於倒擺問題(inverted pendulum problem,倒擺是一個棒通過一個連接軸,其底端連接在一輛可推動的小車上,控制的目的是當倒擺出現偏角時,在水平方向上給小車以作用力,通過小車的水平運動,使倒擺保持在垂直的位置。),我們有多個路徑(這裏成為轉移鏈)的狀態轉移路線如下:

技術分享圖片

這裏的s(j )i是在時間i轉移鏈j下的狀態,a(j )i是在那個狀態之後采取的動作。實際上,每個轉移路徑中狀態數是有限的,每個轉移鏈要麽進入終結狀態,要麽達到規定的步數就會終結。如果我們獲得了很多上面類似的轉移鏈(相當於有了樣本),那麽我們就可以使用最大似然估計來估計狀態轉移概率,Psa(s‘) = A/B,其中A是樣本中在狀態s采取動作a而到達s‘的總次數,B是在狀態s下采取行動a的總次數。此外,如果A=B=0,就表明了在狀態s下從來沒有采取過動作a,這個時候可以令Psa(s‘) = 1/|S| (即轉移到各個狀態的概率相等)。

註意,如果我們在MDP中得到越多的經驗(越多的轉移鏈),那麽我們有很有效的方法來更新我們的轉移概率。也就是說我們只需要根據更多的觀測樣本,就可以很容易的更新分子分母,進而更新得到Psa。相似的,如果R是未知的,那麽我們可以選擇在狀態s下的即時回報R(s)的期望為在所有樣本觀測到的狀態s下回報的均值。

在此基礎之上(使用轉移鏈中估計到的轉移概率和回報),我們可以選擇使用值叠代或策略叠代求解MDP。以值叠代為例,把所有的放在一起,得到一個MDP學習算法,整體如下:

  1. 隨機初始化策略π
  2. 循環{
    1. 統計執行了策略π的樣本;
    2. 根據樣本估計Psa (如果可以,則得到R);
    3. 根據估計的狀態轉移概率和回報,采用值叠代得到一個V新的估計值;
    4. 根據V的貪婪策略更新策略π }

我們註意到,對於該算法,有一個優化的方法使得他可以運行的更快。即在算法的內循環中,我們使用了值叠代,如果初始化V的時候不為0,而使用在上一次大循環中得到的V,那麽在一個更好的初始化V值的情況下,該算法叠代的速度將會更快。

技術分享圖片

馬爾可夫決策過程