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