在強化學習(一)模型基礎中,咱們講到了強化學習模型的8個基本要素。可是僅憑這些要素仍是沒法使用強化學習來幫助咱們解決問題的, 在講到模型訓練前,模型的簡化也很重要,這一篇主要就是講如何利用馬爾科夫決策過程(Markov Decision Process,如下簡稱MDP)來簡化強化學習的建模。html
MDP這一篇對應Sutton書的第三章和UCL強化學習課程的第二講。函數
強化學習的8個要素咱們在第一節已經講了。其中的第七個是環境的狀態轉化模型,它能夠表示爲一個機率模型,即在狀態$s$下采起動做$a$,轉到下一個狀態$s'$的機率,表示爲$P_{ss'}^a$。post
若是按照真實的環境轉化過程看,轉化到下一個狀態$s'$的機率既與上一個狀態$s$有關,還與上上個狀態,以及上上上個狀態有關。這一會致使咱們的環境轉化模型很是複雜,複雜到難以建模。所以咱們須要對強化學習的環境轉化模型進行簡化。簡化的方法就是假設狀態轉化的馬爾科夫性,也就是假設轉化到下一個狀態$s'$的機率僅與上一個狀態$s$有關,與以前的狀態無關。用公式表示就是:$$P_{ss'}^a = \mathbb{E}(S_{t+1}=s'|S_t=s, A_t=a)$$學習
對於馬爾科夫性自己,我以前講過的隱馬爾科夫模型HMM(一)HMM模型,條件隨機場CRF(一)從隨機場到線性鏈條件隨機場以及MCMC(二)馬爾科夫鏈都有講到。它自己是一個比較簡單的假設,所以這裏就不專門對「馬爾可夫性」作專門的講述了。ui
除了對於環境的狀態轉化模型這個因素作馬爾科夫假設外,咱們還對強化學習第四個要素個體的策略(policy)$\pi$也作了馬爾科夫假設。即在狀態$s$時採起動做$a$的機率僅與當前狀態$s$有關,與其餘的要素無關。用公式表示就是$$\pi(a|s) = P(A_t=a | S_t=s)$$url
對於第五個要素,價值函數$v_{\pi}(s)$也是同樣, $v_{\pi}(s)$如今僅僅依賴於當前狀態了,那麼如今價值函數$v_{\pi}(s)$表示爲:$$v_{\pi}(s) = \mathbb{E}_{\pi}(G_t|S_t=s ) = \mathbb{E}_{\pi}(R_{t+1} + \gamma R_{t+2} + \gamma^2R_{t+3}+...|S_t=s)$$spa
其中,$G_t$表明收穫(return), 是一個MDP中從某一個狀態$S_t$開始採樣直到終止狀態時全部獎勵的有衰減的之和。xml
對於MDP,咱們在第一節裏已經講到了它的價值函數$v_{\pi}(s)$的表達式。可是這個表達式沒有考慮到所採用的動做$a$帶來的價值影響,所以咱們除了$v_{\pi}(s)$這個狀態價值函數外,還有一個動做價值函數$q_{\pi}(s,a)$,即:$$q_{\pi}(s,a) = \mathbb{E}_{\pi}(G_t|S_t=s, A_t=a) = \mathbb{E}_{\pi}(R_{t+1} + \gamma R_{t+2} + \gamma^2R_{t+3}+...|S_t=s,A_t=a)$$htm
根據價值函數的表達式,咱們能夠推導出價值函數基於狀態的遞推關係,好比對於狀態價值函數$v_{\pi}(s)$,能夠發現:$$\begin{align} v_{\pi}(s) &= \mathbb{E}_{\pi}(R_{t+1} + \gamma R_{t+2} + \gamma^2R_{t+3}+...|S_t=s) \\ &= \mathbb{E}_{\pi}(R_{t+1} + \gamma (R_{t+2} + \gamma R_{t+3}+...)|S_t=s) \\ &= \mathbb{E}_{\pi}(R_{t+1} + \gamma G_{t+1} | S_t=s) \\ &= \mathbb{E}_{\pi}(R_{t+1} + \gamma v_{\pi}(S_{t+1}) | S_t=s) \end{align}$$blog
也就是說,在$t$時刻的狀態$S_t$和$t+1$時刻的狀態$S_{t+1}$是知足遞推關係的,即:$$v_{\pi}(s) = \mathbb{E}_{\pi}(R_{t+1} + \gamma v_{\pi}(S_{t+1}) | S_t=s) $$
這個遞推式子咱們通常將它叫作貝爾曼方程。這個式子告訴咱們,一個狀態的價值由該狀態的獎勵以及後續狀態價值按必定的衰減比例聯合組成。
一樣的方法,咱們能夠獲得動做價值函數$q_{\pi}(s,a)$的貝爾曼方程:$$q_{\pi}(s,a) = \mathbb{E}_{\pi}(R_{t+1} + \gamma q_{\pi}(S_{t+1},A_{t+1}) | S_t=s, A_t=a) $$
根據動做價值函數$q_{\pi}(s,a)$和狀態價值函數$v_{\pi}(s)$的定義,咱們很容易獲得他們之間的轉化關係公式:$$v_{\pi}(s) = \sum\limits_{a \in A} \pi(a|s)q_{\pi}(s,a)$$
也就是說,狀態價值函數是全部動做價值函數基於策略$\pi$的指望。通俗說就是某狀態下全部狀態動做價值乘以該動做出現的機率,最後求和,就獲得了對應的狀態價值。
反過來,利用上貝爾曼方程,咱們也很容易從狀態價值函數$v_{\pi}(s)$表示動做價值函數$q_{\pi}(s,a)$,即:$$q_{\pi}(s,a) = R_s^a + \gamma \sum\limits_{s' \in S}P_{ss'}^av_{\pi}(s')$$
通俗說就是狀態動做價值有兩部分相加組成,第一部分是即時獎勵,第二部分是環境全部可能出現的下一個狀態的機率乘以該下一狀態的狀態價值,最後求和,並加上衰減。
這兩個轉化過程也能夠從下圖中直觀的看出:
把上面兩個式子互相結合起來,咱們能夠獲得:
$$v_{\pi}(s) = \sum\limits_{a \in A} \pi(a|s)(R_s^a + \gamma \sum\limits_{s' \in S}P_{ss'}^av_{\pi}(s'))$$
$$q_{\pi}(s,a) = R_s^a + \gamma \sum\limits_{s' \in S}P_{ss'}^a\sum\limits_{a' \in A} \pi(a'|s')q_{\pi}(s',a')$$
解決強化學習問題意味着要尋找一個最優的策略讓個體在與環境交互過程當中得到始終比其它策略都要多的收穫,這個最優策略咱們能夠用 $\pi^{*}$表示。一旦找到這個最優策略$\pi^{*}$,那麼咱們就解決了這個強化學習問題。通常來講,比較難去找到一個最優策略,可是能夠經過比較若干不一樣策略的優劣來肯定一個較好的策略,也就是局部最優解。
如何比較策略的優劣呢?通常是經過對應的價值函數來比較的,也就是說,尋找較優策略能夠經過尋找較優的價值函數來完成。能夠定義最優狀態價值函數是全部策略下產生的衆多狀態價值函數中的最大者,即:$$v_{*}(s) = \max_{\pi}v_{\pi}(s)$$
同理也能夠定義最優動做價值函數是全部策略下產生的衆多動做狀態價值函數中的最大者,即:$$q_{*}(s,a) = \max_{\pi}q_{\pi}(s,a)$$
對於最優的策略,基於動做價值函數咱們能夠定義爲:$$\pi_{*}(a|s)= \begin{cases} 1 & {if\;a=\arg\max_{a \in A}q_{*}(s,a)}\\ 0 & {else} \end{cases}$$
只要咱們找到了最大的狀態價值函數或者動做價值函數,那麼對應的策略$\pi^{*}$就是咱們強化學習問題的解。同時,利用狀態價值函數和動做價值函數之間的關係,咱們也能夠獲得:$$v_{*}(s) = \max_{a}q_{*}(s,a) $$
反過來的最優價值函數關係也很容易獲得:$$q_{*}(s,a) = R_s^a + \gamma \sum\limits_{s' \in S}P_{ss'}^av_{*}(s')$$
利用上面的兩個式子也能夠獲得和第三節末尾相似的式子:
$$v_{*}(s) = \max_a(R_s^a + \gamma \sum\limits_{s' \in S}P_{ss'}^av_{*}(s'))$$
$$q_{*}(s,a) = R_s^a + \gamma \sum\limits_{s' \in S}P_{ss'}^a\max_{a'}q_{*}(s',a')$$
上面的公式有點多,須要一些時間慢慢消化,這裏給出一個UCL講義上實際的例子,首先看看具體咱們如何利用給定策略來計算價值函數。
例子是一個學生學習考試的MDP。裏面左下那個圓圈位置是起點,方框那個位置是終點。上面的動做有study, pub, facebook, quit, sleep,每一個狀態動做對應的即時獎勵R已經標出來了。咱們的目標是找到最優的動做價值函數或者狀態價值函數,進而找出最優的策略。
爲了方便,咱們假設衰減因子$\gamma =1, \pi(a|s) = 0.5$。
對於終點方框位置,因爲其沒有下一個狀態,也沒有當前狀態的動做,所以其狀態價值函數爲0。對於其他四個狀態,咱們依次定義其價值爲$v_1,v_2,v_3,v_4$, 分別對應左上,左下,中下,右下位置的圓圈。咱們基於$v_{\pi}(s) = \sum\limits_{a \in A} \pi(a|s)(R_s^a + \gamma \sum\limits_{s' \in S}P_{ss'}^av_{\pi}(s'))$計算全部的狀態價值函數。能夠列出一個方程組。
對於$v_1$位置,咱們有:$v_1 = 0.5*(-1+v_1) +0.5*(0+v_2)$
對於$v_2$位置,咱們有:$v_2 = 0.5*(-1+v_1) +0.5*(-2+v_3)$
對於$v_3$位置,咱們有:$v_3 = 0.5*(0+0) +0.5*(-2+v_4)$
對於$v_4$位置,咱們有:$v_4 = 0.5*(10+0) +0.5*(1+0.2*v_2+0.4*v_3+0.4*v_4)$
解出這個方程組能夠獲得$v_1=-2.3, v_2=-1.3, v_3=2.7, v_4=7.4$, 即每一個狀態的價值函數以下圖:
上面咱們固定了策略$\pi(a|s)$,雖然求出了每一個狀態的狀態價值函數,可是卻並不必定是最優價值函數。那麼如何求出最優價值函數呢?這裏因爲狀態機簡單,求出最優的狀態價值函數$v_{*}(s)$或者動做價值函數$q_{*}(s,a)$比較容易。
咱們此次以動做價值函數$q_{*}(s,a)$來爲例求解。首先終點方框處的好求。$$q_{*}(s_3, sleep) = 0, q_{*}(s_4, study) = 10$$
接着咱們就可利用$q_{*}(s,a) = R_s^a + \gamma \sum\limits_{s' \in S}P_{ss'}^a\max_{a'}q_{*}(s',a')$列方程組求出全部的$q_{*}(s,a)$。有了全部的$q_{*}(s,a)$,利用$v_{*}(s) = \max_{a}q_{*}(s,a) $就能夠求出全部的$v_{*}(s)$。最終求出的全部$v_{*}(s)$和$q_{*}(s,a)$以下圖:
從而咱們的最優決策路徑是走6->6->8->10->結束。
MDP是強化學習入門的關鍵一步,若是這部分研究的比較清楚,後面的學習就會容易不少。所以值得多些時間在這裏。雖然MDP能夠直接用方程組來直接求解簡單的問題,可是更復雜的問題卻沒有辦法求解,所以咱們還須要尋找其餘有效的求解強化學習的方法。
下一篇討論用動態規劃的方法來求解強化學習的問題。
(歡迎轉載,轉載請註明出處。歡迎溝通交流: liujianping-ok@163.com)