強化學習-蒙特卡羅法

1. 前言

從本章起,咱們開始解決更貼近實際的問題。前面提到咱們接觸過的問題有一個特色,即咱們能夠知道環境運轉的細節,具體說就是知道狀態轉移機率\(P(s_{t+1}|s_t,a_t)\)。對蛇棋來講,咱們能夠看到蛇棋的棋盤,也就能夠了解到整個遊戲的全貌,這時咱們至關於站在上帝視角,可以看清一切狀況。算法

在不少實際問題中,咱們沒法獲得遊戲的全貌,也就是說,狀態轉移的信息\(P(s_{t+1}|s_t, a_t)\)沒法得到。函數

通常來講,咱們知曉狀態轉移機率的問題稱爲「基於模型」的問題(Model-based),將不知曉的稱爲「無模型」問題(Model-free)。後面咱們要繼續升級咱們的問題,模擬一個真人去玩遊戲,沒法知道全部遊戲的全貌。學習

2. Model-free原理

  1. 肯定一個初始策略(這和前面的算法一致)。
  2. 用這個策略進行遊戲,獲得一些遊戲序列(Episode):\({s_1,a_1,s_2,a_2,...,s_n,a_n}\)
  3. 一旦遊戲的輪數達到必定數目,就能夠認爲這些遊戲序列表明瞭當前策略與環境交互的表現,就能夠將這些序列聚合起來,獲得狀態對應的值函數。
  4. 獲得了值函數,就至關於完成了策略評估的過程,這樣就能夠繼續按照策略迭代的方法進行策略改進的操做,獲得更新後的策略。若是策略更新完成,則過程結束;不然回到步驟2。

上面的流程十分清晰地介紹了學習的過程,此時學習的關鍵就落在了下面兩個問題上。spa

  1. 如何獲得這些遊戲序列?
  2. 如何使用序列進行評估?

咱們用2個方法介紹Model-free的過程,本篇介紹「蒙特卡羅法(Monte Carlo Method)」和下一篇介紹「時序差分法(Temporal Difference Method)blog

3. 蒙特卡羅法原理

3.1 如何使用序列進行評估

本節咱們介紹蒙特卡羅法。在前面的章節裏,咱們曾介紹當環境信息,也就是狀態轉移機率已知時,可使用Bellman公式,經過不斷迭代獲得狀態-行動值函數:
\[ q_{\pi}(s_t,a_t)=\sum_{s_{t+1}}p(s_{t+1}|s_t,a_t)[r_{a_t}^{s_{t+1}} + \gamma * v_{\pi}(s_{t+1})] \]遊戲

而後經過值函數進行策略改進。而在無模型問題中,狀態轉移機率將沒法知曉。因而咱們須要把公式轉變爲class

\[ q_{\pi}(s_t,a_t)=E_{s_{t+1}-p \pi}[\sum_{k=0}^{\infty}\gamma^kr_{t+k}] \]
看到了等號右邊的指望,咱們很天然地聯想到了蒙特卡羅法,它是一種經過隨機採樣估計指望值的方法,假設咱們經過一些方法,從狀態\(s_t\)和行動\(a_t\)開始不斷地與環境交互,獲得了大量的樣本序列原理

\[ \{s_t,a_t,s_{t+1}^i,a_{t+1}^i,...,s_{t+K}^i,a_{t+K}^i\}_{i=1}^N \]
獲得對應的回報序列
\[ \{r_t,r_{t+1}^i,...,r_{t+K}^i\}_{i=1}^N \]隨機數

其中N表明隨機採樣的輪數,K表明到達結束的步數。sed

而後咱們有一個狀態-行動值函數的公式:

\[ q(s,a) = \frac{1}{N}\sum_{i=0}^N\sum_{k=0}^K\gamma^kr^i_{t+k} \]

經過大量的隨機採樣,上面這個公式可以比較號的描述初始的狀態-行動值函數。

3.2 狀態-行動值函數更新

令狀態行動價值爲\(q\),當前的時間爲\(t\),積累的數量爲\(N\),咱們要求的值爲\(q^N_t\),當前已知的值爲\(q^{N-1}_t\)\(N\),每個時刻的價值爲\(q'^i_t\),因而能夠獲得:

\[ q^N_t = q^{N-1}_t + \frac{1}{N}(q'^N_t - q^{N-1}_t) \]
咱們觀察下,上面公式很像梯度降低法\(\theta_t=\theta_{t-1}-\alpha\nabla{J}\),由於咱們想要值函數儘可能大,因此這裏是一個梯度上升的過程。

3.3 蒙特卡羅法步驟

以上就是蒙特卡羅法的所有內容,咱們能夠將它的算法全過程總結以下。

  1. 讓Agent和環境交互後獲得交互序列。
  2. 經過序列計算出每一時刻的價值。
  3. 將這些價值累積到值函數中進行更新。
  4. 根據更新的值函數更新策略」

4. 探索與利用

4.1 如何獲得這些遊戲序列

那麼,爲了達到和基於模型的算法接近的效果,咱們首先要作的是確保當前的問題有遍歷全部狀態-行動對的可能。

在一些狀態很是多的環境中,咱們很難遍歷全部的狀態,這裏採用一種叫\(\epsilon-greedy\)的算法,首先隨機生成一個0~1的數,而後用這個隨機數進行判斷,若是隨機數小於某個值\(\epsilon\),就採用徹底隨機的方式產生行動,此時每一個行動產生的機率是同樣的;若是隨機數不小於某個值\(\epsilon\),就選擇當前的最優策略。

image

\(\epsilon-greedy\)算法其實是在解決強化學習中的一個經典問題:探索與利用。這是兩種與環境交互的策略。

  • 探索:是指不拘泥於當前的表現,選擇一些不一樣於當前策略的行動。
  • 利用:就是持續使用當前的最優策略,儘量地得到更多的回報。

5. 總結

蒙特卡羅法是第一個不基於模型的強化問題求解方法。它能夠避免動態規劃求解過於複雜,同時還能夠不事先知道環境轉化模型,所以能夠用於海量數據和複雜模型。可是它也有本身的缺點,這就是它每次採樣都須要一個完整的狀態序列。若是咱們沒有完整的狀態序列,或者很難拿到較多的完整的狀態序列,這時候蒙特卡羅法就不太好用了,也就是說,咱們還須要尋找其餘的更靈活的不基於模型的強化問題求解方法。

相關文章
相關標籤/搜索