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


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

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

數學符號看不懂的,先看看這里:

蒙特卡洛方法簡話

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

蒙特卡洛方法的基本思路

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

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

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

蒙特卡洛方法的使用條件

  • 環境是可模擬的
    在實際的應用中,模擬容易實現。相對的,了解環境的完整知識反而比較困難。
    由於環境可模擬,我們就可以抽樣。

  • 只適合情節性任務(episodic tasks)
    因為,需要抽樣完成的結果,只適合有限步驟的情節性任務。

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

只要滿足蒙特卡洛方法的使用條件,就可以使用蒙特卡洛方法。
比如:游戲類都適合:完全信息博弈游戲,像圍棋、國際象棋。非完全信息博弈游戲:21點、麻將等等。

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

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

如何應用到強化學習中呢?
強化學習的目的是得到最優策略。
得到最優策略的一個方法是求\(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)\))是如何得到的?
如果是已知的、根據已知的數據計算出來的,就是基於模型的。
如果是取樣得到的、試驗得到的,就是無模型的。

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

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

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

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

蒙特卡洛方法的優勢

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

  • 蒙特卡洛方法可以用於模擬(樣本)模型。

  • 蒙特卡洛方法可以只考慮一個小的狀態子集。

  • 蒙特卡洛方法的每個狀態價值計算是獨立的。不會影響其他的狀態價值。

蒙特卡洛方法的劣勢

  • 需要大量的探索(模擬)。
  • 基於概率的,不是確定性的。

參照


免責聲明!

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



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