強化學習讀書筆記 - 05 - 蒙特卡洛方法(Monte Carlo Methods)

強化學習讀書筆記 - 05 - 蒙特卡洛方法(Monte Carlo Methods)

學習筆記:
Reinforcement Learning: An Introduction, Richard S. Sutton and Andrew G. Barto c 2014, 2015, 2016html

數學符號看不懂的,先看看這裏:算法

蒙特卡洛方法簡話

蒙特卡洛是一個賭城的名字。馮·諾依曼給這方法起了這個名字,增長其神祕性。
蒙特卡洛方法是一個計算方法,被普遍的用於許多領域,用於求值。
相對於肯定性的算法,蒙特卡洛方法是基於抽樣數據來計算結果。bootstrap

蒙特卡洛方法的基本思路

蒙特卡洛方法的總體思路是:模擬 -> 抽樣 -> 估值app

示例:
好比:如何求\(\pi\)的值。一個使用蒙特卡洛方法的經典例子以下:
咱們知道一個直徑爲1的圓的面積爲\(\pi\)
把這個圓放到一個邊長爲2的正方形(面積爲4)中,圓的面積和正方形的面積比是:\(\frac{\pi}{4}\)
若是能夠測量出這個比值\(c\),那麼\(\pi=c \times 4\)
如何測量比值\(c\)呢?用飛鏢去扎這個正方形。紮了許屢次後,用圓內含的小孔數除以正方形含的小孔數能夠近似的計算比值\(c\)ide

說明:
模擬 - 用飛鏢去扎這個正方形爲一次模擬。
抽樣 - 數圓內含的小孔數和正方形含的小孔數。
估值 - 比值\(c\) = 圓內含的小孔數 / 正方形含的小孔數oop

蒙特卡洛方法的使用條件

  • 環境是可模擬的
    在實際的應用中,模擬容易實現。相對的,瞭解環境的完整知識反而比較困難。
    因爲環境可模擬,咱們就能夠抽樣。學習

  • 只適合情節性任務(episodic tasks)
    由於,須要抽樣完成的結果,只適合有限步驟的情節性任務。優化

蒙特卡洛方法在強化學習中的用例

只要知足蒙特卡洛方法的使用條件,就可使用蒙特卡洛方法。
好比:遊戲類都適合:徹底信息博弈遊戲,像圍棋、國際象棋。非徹底信息博弈遊戲:21點、麻將等等。idea

蒙特卡洛方法在強化學習中的基本思路

蒙特卡洛方法的總體思路是:模擬 -> 抽樣 -> 估值spa

如何應用到強化學習中呢?
強化學習的目的是獲得最優策略。
獲得最優策略的一個方法是求\(v_{pi}(s), \ q_{pi}{s, a}\)。 - 這就是一個求值問題

結合通用策略迭代(GPI)的思想。
下面是蒙特卡洛方法的一個迭代過程:

  1. 策略評估迭代
    1. 探索 - 選擇一個狀態(s, a)。
    1. 模擬 - 使用當前策略\(\pi\),進行一次模擬,從當前狀態(s, a)到結束,隨機產生一段情節(episode)。
    1. 抽樣 - 得到這段情節上的每一個狀態(s, a)的回報\(G(s, a)\),記錄\(G(s, a)\)到集合\(Returns(s, a)\)
    1. 估值 - q(s, a) = Returns(s, a)的平均值。
    (由於狀態(s, a)可能會被屢次選擇,因此狀態(s, a)有一組回報值。)
  2. 策略優化 - 使用新的行動價值\(q(s, a)\)優化策略\(\pi(s)\)

解釋

  • 上述的策略評估迭代步驟,通常會針對全部的狀態-行動,或者一個起始(\(s_0, a_0\))下的全部狀態-行動。
    這也說明持續探索(continual exploration)是蒙特卡洛方法的主題
  • 模擬過程 - 會模擬到結束。是前進式的,隨機選擇下一個行動,一直前進到結束爲止。
    所以能夠看出蒙特卡洛方法須要大量的迭代,才能正確的找到最優策略。
  • 策略評估是計算行動價值(\(q(s, a)\))。
    (也能夠是狀態價值,則\(\pi(s)\)爲狀態\(s\)到其下一個最大價值狀態\(s‘\)的任意行動。)
    計算方法:
    \[ q(s, a) = average(Returns(s, a)) \]

一些概念

  • Exploring Starts 假設 - 指有一個探索起點的環境。
    好比:圍棋的當前狀態就是一個探索起點。自動駕駛的汽車也許是一個沒有起點的例子。

  • first-visit - 在一段情節中,一個狀態只會出現一次,或者只需計算第一次的價值。
  • every-visit - 在一段情節中,一個狀態可能會被訪問屢次,須要計算每一次的價值。
  • on-policy method - 評估和優化的策略和模擬的策略是同一個。

  • off-policy method - 評估和優化的策略和模擬的策略是不一樣的兩個。
    有時候,模擬數據來源於其它處,好比:已有的數據,或者人工模擬等等。

  • target policy - 目標策略。off policy method中,須要優化的策略。
  • behavior policy - 行爲策略。off policy method中,模擬數據來源的策略。

根據上面的不一樣情境,在強化學習中,提供了不一樣的蒙特卡洛方法。

  • 蒙特卡洛(起始點(Exploring Starts))方法
  • On-policy first visit 蒙特卡洛方法(for \(\epsilon\)-soft policies)
  • Off-policy every-visit 蒙特卡洛方法

蒙特卡洛(起始點(Exploring Starts))方法

Initialize, for all \(s \in \mathcal{S}, \ a \in \mathcal{A}(s)\):
\(Q(s,a) \gets\) arbitrary
\(\pi(s) \gets\) arbitrary
\(Returns(s, a) \gets\) empty list

Repeat forever:
 Choose \(S_0 \in \mathcal{S}\) and \(A_0 \in \mathcal{A}(S_0)\) s.t. all pairs have probability > 0
 Generate an episode starting from \(S_0, A_0\), following \(\pi\)
 For each pair \(s,a\) appearing in the episode:
   $G \gets $ return following the first occurrence of s,a
   Append \(G\) to \(Returns(s, a)\)
   \(Q(s, a) \gets average(Returns(s, a))\)
 For each s in the episode:
   \(\pi(s) \gets \underset{a}{argmax} Q(s,a)\)

On-policy first visit 蒙特卡洛方法(for \(\epsilon\)-soft policies)

Initialize, for all \(s \in \mathcal{S}, \ a \in \mathcal{A}(s)\):
\(Q(s,a) \gets\) arbitrary
\(\pi(a|s) \gets\) an arbitrary \(\epsilon\)-soft policy
\(Returns(s, a) \gets\) empty list

Repeat forever:
  (a) Generate an episode using \(\pi\)
  (b) For each pair \(s,a\) appearing in the episode:
   $G \gets $ return following the first occurrence of s,a
   Append \(G\) to \(Returns(s, a)\)
   \(Q(s, a) \gets average(Returns(s, a))\)
  (c) For each s in the episode:
   \(A^* \gets \underset{a}{argmax} \ Q(s,a)\)
   For all \(a \in \mathcal{A}(s)\):
    if \(a = A^*\)
     \(\pi(a|s) \gets 1 - \epsilon + \frac{\epsilon}{|\mathcal{A}(s)|}\)
    if \(a \ne A^*\)
     \(\pi(a|s) \gets \frac{\epsilon}{|\mathcal{A}(s)|}\)

Off-policy every-visit 蒙特卡洛方法

Initialize, for all \(s \in \mathcal{S}, \ a \in \mathcal{A}(s)\):
\(Q(s,a) \gets\) arbitrary
\(C(s,a) \gets\) 0
\(\mu(a|s) \gets\) an arbitrary soft behavior policy
\(\pi(a|s) \gets\) a deterministic policy that is greedy with respect to Q

Repeat forever:
  Generate an episode using \(\mu\):
   \(S_0,A_0,R_1,\cdots,S_{T-1},A_{T-1},R_T,S_T\)
\(G \gets 0\)
\(W \gets 1\)
  For t = T - 1 downto 0:
   \(G \gets \gamma G + R_{t+1}\)
   \(C(S_t, A_t) \gets C(S_t, A_t) + W\)
   \(Q(S_t, A_t) \gets Q(S_t, A_t) + \frac{W}{C(S_t, A_t)} |G - Q(S_t, A_t)|\)
   \(\pi(S_t) \gets \underset{a}{argmax} \ Q(S_t, a)\) (with ties broken consistently)
   If \(A_t \ne \pi(S_t)\) then ExitForLoop
   \(W \gets W \frac{1}{\mu(A_t|S_t)}\)

總結

蒙特卡洛方法和動態規劃的區別

  1. 動態規劃是基於模型的,而蒙特卡洛方法是無模型的。

    注:基於模型(model-base)仍是無模型(model-free)是看(狀態或者行動)價值(\(G, v(s), q(s,a)\))是如何獲得的?
    若是是已知的、根據已知的數據計算出來的,就是基於模型的。
    若是是取樣獲得的、試驗獲得的,就是無模型的。

  2. 動態規劃的計算的,而蒙特卡洛方法的計算是取樣性的(sampling)。

    注:引導性的(bootstrapping)仍是取樣性的(sampling)是看(狀態或者行動)價值(\(G, v(s), q(s,a)\))是如何計算的?
    若是是根據其它的價值計算的,就是引導性的。
    若是是經過在實際環境中模擬的、取樣的,就是取樣性的。
    引導性和取樣性並非對立的。能夠是取樣的,而且是引導的。
    若是價值是根據其它的價值計算的,可是有部分值(好比:獎賞)是取樣獲得的,就是無模型、取樣的、引導性的。

解釋:
上面兩個區別,能夠從計算狀態價值\(v_{\pi}(s), q_{\pi}(s, a)\)的過程來看:
動態規劃是從初始狀態開始,一次計算一步可能發生的全部狀態價值,而後迭代計算下一步的全部狀態價值。這就是引導性。
蒙特卡洛方法是從初始狀態開始,經過在實際環境中模擬,獲得一段情節(從頭到結束)。
好比,若是結束是失敗了,這段情節上的狀態節點,本次價值都爲0,;若是成功了,本次價值都爲1。

下面的比喻(雖然不太恰當,可是比較形象)
想象一棵樹,動態規劃是先算第一層的全部節點價值,而後算第二層的全部節點價值。
蒙特卡洛方法,隨便找一個從根到葉子的路徑。根據葉子的值,計算路徑上每一個節點價值。
能夠看出蒙特卡洛方法比較方便。

蒙特卡洛方法的優點

  • 蒙特卡洛方法能夠從交互中直接學習優化的策略,而不須要一個環境的動態模型。
    環境的動態模型 - 彷佛表示環境的狀態變化是能夠徹底推導的。代表瞭解環境的全部知識。
    說白了,就是能夠計算\(v(s), q(s, a)\)這意味着必須瞭解全部狀態變化的可能性。
    蒙特卡洛方法只須要一些(多是大量的)取樣就能夠。

  • 蒙特卡洛方法能夠用於模擬(樣本)模型。
  • 蒙特卡洛方法能夠只考慮一個小的狀態子集。
  • 蒙特卡洛方法的每一個狀態價值計算是獨立的。不會影響其餘的狀態價值。

 蒙特卡洛方法的劣勢

  • 須要大量的探索(模擬)。
  • 基於機率的,不是肯定性的。

參照

相關文章
相關標籤/搜索