強化學習 蒙特卡羅法

2022-07-04 05:54:12 字數 2174 閱讀 7060

從本章起,我們開始解決更貼近實際的問題。前面提到我們接觸過的問題有乙個特點,即我們可以知道環境運轉的細節,具體說就是知道狀態轉移概率\(p(s_|s_t,a_t)\)。對蛇棋來說,我們可以看到蛇棋的棋盤,也就可以了解到整個遊戲的全貌,這時我們相當於站在上帝視角,能夠看清一切情況。

在很多實際問題中,我們無法得到遊戲的全貌,也就是說,狀態轉移的資訊\(p(s_|s_t, a_t)\)無法獲得。

一般來說,我們知曉狀態轉移概率的問題稱為「基於模型」的問題(model-based),將不知曉的稱為「無模型」問題(model-free)。後面我們要繼續公升級我們的問題,模擬乙個真人去玩遊戲,無法知道所有遊戲的全貌。

確定乙個初始策略(這和前面的演算法一致)。

用這個策略進行遊戲,得到一些遊戲序列(episode):\(\)

一旦遊戲的輪數達到一定數目,就可以認為這些遊戲序列代表了當前策略與環境互動的表現,就可以將這些序列聚合起來,得到狀態對應的值函式。

得到了值函式,就相當於完成了策略評估的過程,這樣就可以繼續按照策略迭代的方法進行策略改進的操作,得到更新後的策略。如果策略更新完成,則過程結束;否則回到步驟2。

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

如何得到這些遊戲序列?

如何使用序列進行評估?

本節我們介紹蒙特卡羅法。在前面的章節裡,我們曾介紹當環境資訊,也就是狀態轉移概率已知時,可以使用bellman公式,通過不斷迭代得到狀態-行動值函式:

\[q_(s_t,a_t)=\sum_}p(s_|s_t,a_t)[r_^} + \gamma * v_(s_)]

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

\[q_(s_t,a_t)=e_-p \pi}[\sum_^\gamma^kr_]

\]看到了等號右邊的期望,我們很自然地聯想到了蒙特卡羅法,它是一種通過隨機取樣估計期望值的方法,假設我們通過一些方法,從狀態\(s_t\)和行動\(a_t\)開始不斷地與環境互動,得到了大量的樣本序列

\[\^i,a_^i,...,s_^i,a_^i\}_^n

\]得到對應的回報序列

\[\^i,...,r_^i\}_^n

\]其中n代表隨機取樣的輪數,k代表到達結束的步數。

然後我們有乙個狀態-行動值函式的公式:

\[q(s,a) = \frac\sum_^n\sum_^k\gamma^kr^i_

\]通過大量的隨機取樣,上面這個公式能夠比較號的描述初始的狀態-行動值函式。

令狀態行動價值為\(q\),當前的時間為\(t\),積累的數量為\(n\),我們要求的值為\(q^n_t\),當前已知的值為\(q^_t\)和\(n\),每乙個時刻的價值為\(q'^i_t\),於是可以得到:

\[q^n_t = q^_t + \frac(q'^n_t - q^_t)

\]我們觀察下,上面公式很像梯度下降法\(\theta_t=\theta_-\alpha\nabla\),因為我們想要值函式盡量大,所以這裡是乙個梯度上公升的過程。

以上就是蒙特卡羅法的全部內容,我們可以將它的演算法全過程總結如下。

讓agent和環境互動後得到互動序列。

通過序列計算出每一時刻的價值。

將這些價值累積到值函式中進行更新。

根據更新的值函式更新策略」

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

在一些狀態非常多的環境中,我們很難遍歷所有的狀態,這裡採用一種叫\(\epsilon-greedy\)的演算法,首先隨機生成乙個0~1的數,然後用這個隨機數進行判斷,如果隨機數小於某個值\(\epsilon\),就採用完全隨機的方式產生行動,此時每個行動產生的概率是一樣的;如果隨機數不小於某個值\(\epsilon\),就選擇當前的最優策略。

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

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

強化學習(四)用蒙特卡羅法(MC)求解

在強化學習 三 用動態規劃 dp 求解中,我們討論了用動態規劃來求解強化學習 問題和控制問題的方法。但是由於動態規劃法需要在每一次回溯更新某乙個狀態的價值時,回溯到該狀態的所有可能的後續狀態。導致對於複雜問題計算量很大。同時很多時候,我們連環境的狀態轉化模型pp都無法知道,這時動態規劃法根本沒法使用...

Python通過蒙特卡羅法計算 值

我們知道以r為半徑的圓的面積是 r2 pi r 2 r2,以r為邊長的正方形的面積是r 2r 2 r2,兩者面積之比即為 pi 的值。具體演算法是模擬乙個邊長為1的正方形,隨機在其中生成n個點,當n趨向於無窮大時,整個正方形就被這n個點所填滿 下圖中藍色區域 在這n個點之中,統計出落入以1為半徑的扇...

馬爾可夫鏈蒙特卡羅法

蒙特卡羅法 思想 假設概率分布的定義已知,然後通過隨機抽樣獲得概率分布的隨機樣本,通過得到的隨機樣本對概率分布的特徵進行分析。for example 從隨機抽出的樣本中計算出樣本均值,從而得到總體的期望。蒙特卡羅方法的核心 隨機抽樣 主要有直接抽樣,接受 拒絕抽樣,重要性抽樣 隨機抽樣 接受拒絕抽樣...