強化學習-蒙特卡羅法


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。

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

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

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

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})] \]

然后通過值函數進行策略改進。而在無模型問題中,狀態轉移概率將無法知曉。於是我們需要把公式轉變為

\[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代表到達結束的步數。

然后我們有一個狀態-行動值函數的公式:

\[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. 總結

蒙特卡羅法是第一個不基於模型的強化問題求解方法。它可以避免動態規划求解過於復雜,同時還可以不事先知道環境轉化模型,因此可以用於海量數據和復雜模型。但是它也有自己的缺點,這就是它每次采樣都需要一個完整的狀態序列。如果我們沒有完整的狀態序列,或者很難拿到較多的完整的狀態序列,這時候蒙特卡羅法就不太好用了,也就是說,我們還需要尋找其他的更靈活的不基於模型的強化問題求解方法。


免責聲明!

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



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