強化學習(一)—— 基本概念及馬爾科夫決策過程(MDP)


1、策略與環境模型

  強化學習是繼監督學習和無監督學習之后的第三種機器學習方法。強化學習的整個過程如下圖所示:

    

  具體的過程可以分解為三個步驟:

  1)根據當前的狀態 $s_t$ 選擇要執行的動作 $ a_t $。

  2)根據當前的狀態 $s_t $ 和動作 $ a_t$ 選擇轉移后的狀態 $s_{t+1} $。

  3)根據在當前狀態 $s_t$ 采取動作 $a_t$ 給出對應的獎勵 $ r_{t+1} $。

  因此我們可以得到強化學習中三個重要的要素:環境的狀態 $S$,個體的動作 $A$,環境的獎勵 $R$。

  通過不斷的重復上述三個過程就可以得到一條狀態—動作鏈,其表示如下:

     $ {s_0, a_0, s_1, a_1, ......s_{t-1}, a_{t-1}, s_t} $

  現在我們來具體看看是如何生成動作—狀態鏈的:

  1)從狀態到動作

    從狀態到動作是有Agent 的策略 $\pi$ 決定的,從條件概率上來說當前的動作選擇應該和之前的所有狀態和動作都有關系,如下在時刻 $t$ 的動作應該是:

    $ {a_t}^* = argmax_{a_{t, i}} p(a_{t, i}|{s_0, a_0, ..., s_t}) $

    然而對於上面的式子計算復雜度太高了,引入馬爾科夫理論,認為當前的動作選擇之和當前的狀態有關,於是上面的公式就變成了:

    $ {a_t}^* = argmax_{a_{t, i}} p(a_{t, i}|s_t) $

    個體的策略函數 $\pi$ 可以表示為:

    $ \pi(a|s) = P(A_t=a | S_t=s)$

  2)從狀態到狀態

    在當前狀態轉移到下一狀態時,我們同樣假設下一狀態之和當前狀態以及當前動作相關,具體表達式如下:

    $ P(S_{t+1} | S_t, a_t)$

 

2、值函數與貝爾曼公式

  在強化學習中我們該如何評價我們每一步動作的好壞呢?這就需要值函數了。在執行每一個動作時都會有一個對應的獎賞,我們的目的就是要使得最終的加起來的獎賞最高。表達式如下:

    $ max \sum\limits_{t=0}^n r_t $  

  當n無限大時,上鏈的式子是一個無窮數列,且無法收斂,因此我們也無法計算出最高的獎賞。針對這個問題引入了獎勵衰減因子 $\gamma$,表達式變成:

    $ max \sum\limits_{t=0}^n \gamma^t\, r_t $

  根據上面的結果可以給出 $t$ 時刻的狀態價值函數,狀態價值函數是期望值。在下式中的$G_t$表示從狀態$S_t$出發到終點一條完整的序列的回報值,從$S_t$通過隨機性采樣到終點會得到無數條隨機的$G_t$,而我們要得到一個確定的狀態價值函數,那就是對隨機值取期望即可。

    $ 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) $

  上面的公式又可以稱為貝爾曼公式。對狀態價值函數使用代換消元法可以推導出狀態價值函數 $ v_{\pi}(s)$ 的遞推關系:

    $ v_{\pi}(s) = \mathbb{E}_{\pi}(r_{t+1} + \gamma v_{\pi}(S_{t+1}) |S_t=s) $

  根據上式可知在 $t$ 時刻的狀態 $S_T$ 和 $t+1$ 時刻的狀態 $S_{T+1}$ 是滿足遞推關系的。

  除了上述的狀態價值函數之外,還有一個狀態-動作價值函數 $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) $

    $ 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) $

  狀態價值函數和狀態-動作價值函數之間也存在遞推關系,狀態價值函數可以用狀態-動作價值函數表示:

    $v_{\pi}(s) = \sum\limits_{a \in A} \pi(a|s)q_{\pi}(s,a)$

  根據上面式子可知狀態價值函數其實就是在該狀態下基於策略 $\pi$ 得到的所有動作的狀態-動作價值函數的期望。

  反過來,狀態-動作價值函數也可以用狀態價值函數表示:

    $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')$

   

 3、策略迭代與值迭代

  解決強化學習的一個問題就是要尋找最優策略使得個體在與環境的交互過程中獲得最高的獎賞。用 $\pi^*$ 來表示這個最優策略,一旦找到該最優策略,強化學習的問題就解決了。

  首先提出強化學習的兩個基本問題:

  1)預測問題。給定強化學習的狀態集$S$, 動作集 $A$ ,模型狀態轉化概率矩陣 $ P$,即時獎勵 $R$,獎勵衰減因子 $\gamma$,策略 $\pi$。求解該策略的狀態價值函數 $v(\pi)$。

  2)控制問題。也就是求解最優的價值函數和策略。只給定了強化學習的狀態集$S$, 動作集 $A$ ,模型狀態轉化概率矩陣 $ P$,即時獎勵 $R$,獎勵衰減因子 $\gamma$。求解最優策略 $\pi^*$ 和最優狀態價值函數 $v^*$。

  現在來看看如何解決這些問題:

  1)預測問題也稱為策略評估。

  其整體步驟如下:

  首先給定策略,狀態轉移概率,回報和衰減因子,對狀態集中的所有狀態初始化狀態價值。

  然后從$t=0$時刻開始迭代:

  假設在第 $t$ 輪迭代已經計算出所有的狀態的狀態價值,那么在 $t+1$輪就可以利用之前計算出的狀態價值計算當前的狀態價值,在已知狀態轉移概率的情況下,可以通過貝爾曼方程來實現:

    $v_{t+1}(s) = \sum\limits_{a \in A} \pi(a|s)(r_s^a + \gamma \sum\limits_{s' \in S}P_{ss'}^av_{t}(s'))$

  因此策略評估的求解問題本質上迭代解法,而且用的是高斯-賽德爾迭代法。

  2)控制問題的解決方案有兩個:策略迭代和值迭代。這個兩個方法都包含策略評估和策略改善兩個步驟,具體的解決方案如下:

  策略迭代的過程:

    1)初始化策略 $\pi = \pi_0$,$t=0$時刻的狀態集合中各狀態的價值函數。

    2)for 1 to l(策略更新迭代至收斂的步數):

      3)for 1 to m(高斯-賽德爾迭代求解的步數):

        4)根據下面的方程更新狀態空間中狀態的價值函數:

          $v_{t+1}(s) = \max_{a \in A}(r_s^a + \gamma \sum\limits_{s' \in S}P_{ss'}^av_{t}(s'))$

      5)利用該狀態價值函數計算出狀態-動作價值函數 $q(s, a)$,然后找到更好的策略 $\pi^*$(備注:此時的狀態價值函數是完全收斂的結果,求解方案和上面的策略評估是完全一樣的)。

        $\pi' = argmax_{a} q(s, a)$

    6)重復2)到5),直至$\pi_{l+1} = \pi_l$,則得到最優策略 $\pi^* = \pi_l$。

    策略迭代在每一個策略下都要得到收斂后的狀態價值函數,然后根據該狀態價值函數來更新策略(實際上是一個策略評估過程),因此收斂會比較慢。

  值迭代的過程:

    1)初始化策略 $\pi = \pi_0$,$t=0$時刻的狀態集合中各狀態的價值函數。

    2)for 1 to l(策略更新迭代至收斂的步數):

      3)for 1 to m(高斯-賽德爾迭代求解的步數):

        4)根據下面的方程更新狀態空間中狀態的價值函數:

          $v_{t+1}(s) = \max_{a \in A}(r_s^a + \gamma \sum\limits_{s' \in S}P_{ss'}^av_{t}(s'))$

        5)利用該狀態價值函數計算出狀態-動作價值函數 $q(s, a)$,然后找到更好的策略 $\pi^*$(備注:此時的狀態價值函數是完全收斂的結果,求解方案和上面的策略評估是完全一樣的)。

          $\pi' = argmax_{a} q(s, a)$

    6)重復2)到5),直至$\pi_{l+1} = \pi+l$,則得到最優策略 $\pi^* = \pi_l$。

    值迭代和策略迭代唯一不同的是隨着狀態價值的迭代及時調整策略,也就是上面第5步時緊跟着第4步發生的,而不是等到第3步循環完,即狀態價值函數收斂的情況下才更新策略。這種做法的收斂更快。

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM