一、問題引入
回顧上篇強化學習 2 —— 用動態規划求解 MDP我們使用策略迭代和價值迭代來求解MDP問題
1、策略迭代過程:
- 1、評估價值 (Evaluate)
- 2、改進策略(Improve)
2、價值迭代過程:
然后提取最優策略 $ \pi $
可以發現,對於這兩個算法,有一個前提條件是獎勵 R 和狀態轉移矩陣 P 我們是知道的,因此我們可以使用策略迭代和價值迭代算法。對於這種情況我們叫做 Model base
。同理可知,如果我們不知道環境中的獎勵和狀態轉移矩陣,我們叫做 Model free
。
不過有很多強化學習問題,我們沒有辦法事先得到模型狀態轉化概率矩陣 P,這時如果仍然需要我們求解強化學習問題,那么這就是不基於模型(Model Free)的強化學習問題了。
其實稍作思考,大部分的環境都是 屬於 Model Free 類型的,比如 熟悉的雅達利游戲等等。另外動態規划還有一個問題:需要在每一次回溯更新某一個狀態的價值時,回溯到該狀態的所有可能的后續狀態。導致對於復雜問題計算量很大。
所以,我們本次探討在 Model Free 情況下的策略評估方法,策略控制部分留到下篇討論。對於 Model Free 類型的強化學習模型如下如所示:
此時需要智能體直接和環境進行交互,環境根據智能體的動作返回下一個狀態和相應的獎勵給智能體。這時候就需要智能體搜集和環境交互的軌跡(Trajectory / episode)。
對於 Model Free 情況下的 策略評估,我們介紹兩種采樣方法。蒙特卡洛采樣法(Monte Carlo)和時序差分法(Temporal Difference)
二、蒙特卡洛采樣法(MC)
對於Model Free 我們不知道 獎勵 R 和狀態轉移矩陣,那應該怎么辦呢?很自然的,我們就想到,讓智能體和環境多次交互,我們通過這種方法獲取大量的軌跡信息,然后根據這些軌跡信息來估計真實的 R 和 P。這就是蒙特卡洛采樣的思想。
蒙特卡羅法通過采樣若干經歷完整的狀態序列(Trajectory / episode)來估計狀態的真實價值。所謂的經歷完整,就是這個序列必須是達到終點的。比如下棋問題分出輸贏,駕車問題成功到達終點或者失敗。有了很多組這樣經歷完整的狀態序列,我們就可以來近似的估計狀態價值,進而求解預測和控制問題了。
1、MC 解決預測問題
一個給定策略 \(\pi\) 的完整有 T 個狀態的狀態序列如下
在馬爾科夫決策(MDP)過程中,我們對價值函數 \(v_\pi(s)\) 的定義:
可以看出每個狀態的價值函數等於所有該狀態收獲的期望,同時這個收獲是通過后續的獎勵與對應的衰減乘積求和得到。那么對於蒙特卡羅法來說,如果要求某一個狀態的狀態價值,只需要求出所有的完整序列中該狀態出現時候的收獲再取平均值即可近似求解,也就是:
上面預測問題的求解公式里,我們有一個average的公式,意味着要保存所有該狀態的收獲值之和最后取平均。這樣浪費了太多的存儲空間。一個較好的方法是在迭代計算收獲均值,即每次保存上一輪迭代得到的收獲均值與次數,當計算得到當前輪的收獲時,即可計算當前輪收獲均值和次數。可以通過下面的公式理解:
這樣上面的狀態價值公式就可以改寫成:
這樣我們無論數據量是多還是少,算法需要的內存基本是固定的 。我們可以把上面式子中 \(\frac{1}{N(S_t)}\) 看做一個超參數 \(\alpha\) ,可以代表學習率。
對於動作價值函數\(Q(S_t, A_t)\), 類似的有:
2、MC 解決控制問題
MC 求解控制問題的思路和動態規划策略迭代思路類似。在動態規划策略迭代算法中,每輪迭代先做策略評估,計算出價值 \(v_k(s)\) ,然后根據一定的方法(比如貪心法)更新當前 策略 \(\pi\) 。最后得到最優價值函數 \(v_*\) 和最優策略\(\pi_*\) 。在文章開始處有公式,還請自行查看。
對於蒙特卡洛算法策略評估時一般時優化的動作價值函數 \(q_*\),而不是狀態價值函數 \(v_*\) 。所以評估方法是:
蒙特卡洛還有一個不同是一般采用\(\epsilon - 貪婪法\)更新。\(\epsilon -貪婪法\)通過設置一個較小的 \(\epsilon\) 值,使用 \(1-\epsilon\) 的概率貪婪的選擇目前認為有最大行為價值的行為,而 \(\epsilon\) 的概率隨機的從所有 m 個可選行為中選擇,具體公式如下:
在實際求解控制問題時,為了使算法可以收斂,一般 \(\epsilon\) 會隨着算法的迭代過程逐漸減小,並趨於0。這樣在迭代前期,我們鼓勵探索,而在后期,由於我們有了足夠的探索量,開始趨於保守,以貪婪為主,使算法可以穩定收斂。
Monte Carlo with \(\epsilon - Greedy\) Exploration 算法如下:
3、在 策略評估問題中 MC 和 DP 的不同
對於動態規划(DP)求解
通過 bootstrapping
上個時刻次評估的價值函數 \(v_{i-1}\) 來求解當前時刻的 價值函數 \(v_i\) 。通過貝爾曼等式來實現:
對於蒙特卡洛(MC)采樣
MC通過一個采樣軌跡來更新平均價值
MC可以避免動態規划求解過於復雜,同時還可以不事先知道獎勵和裝填轉移矩陣,因此可以用於海量數據和復雜模型。但是它也有自己的缺點,這就是它每次采樣都需要一個完整的狀態序列。如果我們沒有完整的狀態序列,或者很難拿到較多的完整的狀態序列,這時候蒙特卡羅法就不太好用了。如何解決這個問題呢,就是下節要講的時序差分法(TD)。
如果覺得文章寫的不錯,還請各位看官老爺點贊收藏加關注啊,小弟再此謝謝啦
參考資料:
B 站 周老師的強化學習綱要第三節上