1. 程式人生 > >DQN(Deep Q-learning)入門教程(三)之蒙特卡羅法演算法與Q-learning演算法

DQN(Deep Q-learning)入門教程(三)之蒙特卡羅法演算法與Q-learning演算法

## 蒙特卡羅法 在介紹Q-learing演算法之前,我們還是對蒙特卡羅法(MC)進行一些介紹。MC方法是一種無模型(model-free)的強化學習方法,目標是得到最優的行為價值函式$q_*$。在前面一篇[部落格](https://www.cnblogs.com/xiaohuiduan/p/12973303.html)中,我們所介紹的動態規劃演算法則是一種有模型的演算法。那麼問題來了,什麼是模型(model)?模型其實就是我們在第一篇部落格:[DQN(Deep Q-learning)入門教程(一)之強化學習介紹](https://www.cnblogs.com/xiaohuiduan/p/12945449.html)種所介紹的狀態轉化模型: $P_{ss'}^a$。 在動態規劃解決問題的時候,我們是已知$P_{ss'}^a$,但是實際上我們也可能對於$P_{ss'}^a$我們是未知的。那麼怎麼辦呢?此時,我們使用經驗平均來解決這個問題。其中的思想有點類似大數定理,儘管我不知道模型概率是什麼,但是我可以使用無數次的實驗來逼近這個概率。 任然是分為兩個部分: 1. 策略評估 2. 策略控制 - 探索性 - 無探索性 ### 策略評估 前面我們說了,我們使用多次實驗來解決model-free,因此我們將歷史實驗資料稱之為**經驗**,然後進行**平均**求得的價值函式當成價值函式當作結果。 - 經驗:我們使用策略做很多次實驗,每次實驗都是從最初狀態到終止狀態。假如一次實驗所得得到的資料如下:$S_1,A_1,R_2,S_2,A_2,...S_t,A_t,R_{t+1},...R_T, S_T$,則在狀態$s$處獲得的回報是:$G_{t}(s)=R_{t+1}+\gamma R_{t+2}+\cdots+\gamma^{T-1} R_{T}$。而我們就可以進行多次實驗,就可以得到多份資料。 - 平均:平均有兩種方式,**第一次訪問蒙特卡羅**方法和**每次訪問蒙特卡羅**方法。假如我們做實驗的到的資料如下,現在需要來計算$G(s)$: ![](https://img2020.cnblogs.com/blog/1439869/202005/1439869-20200528023549551-371860578.jpg) 1. 第一次訪問蒙特卡羅方法:只是使用**每次實驗**第一次出現狀態$s$的放回值。比如說上圖中$G_{11},G_{21}$,但是**不使用**$G_{12}$。 $$ \begin{equation}v(s)=\frac{G_{11}(s)+G_{21}(s)+\cdots}{N(s)}\end{equation} \\ N(s)代表出現的次數 $$ 2. 每次訪問蒙特卡羅方法:則就是隻要出現過,就使用,比如說上圖中的$G_{11},G_{12},G_{21}$。 $$ \begin{equation}v(s)=\frac{G_{11}(s)+G_{12}(s)+\cdots+G_{21}(s)+\cdots}{N(s)}\end{equation} $$ 不過我們可以想一想,這樣計算平均值會有什麼問題?浪費記憶體空間,因為我們需要儲存該狀態**所有歷史實驗資料**然後再取平均。因此我們對取平均值的方法進行改進,改進的原理如下: $$ \begin{equation}\mu_{k}=\frac{1}{k} \sum_{j=1}^{k} x_{j}=\frac{1}{k}\left(x_{k}+\sum_{j=1}^{k-1} x_{j}\right)=\frac{1}{k}\left(x_{k}+(k-1) \mu_{k-1}\right)=\mu_{k-1}+\frac{1}{k}\left(x_{k}-\mu_{k-1}\right)\end{equation} $$ 也就是說,狀態價值公式可以改寫為: $$ \begin{equation}\begin{array}{c} N\left(s\right)=N\left(s\right)+1 \\ V_{k+1}\left(s\right)=V_{k}\left(S\right)+\frac{1}{N\left(S\right)}\left(G_{t}-V_{k}\left(S\right)\right) \end{array}\end{equation} $$ 這樣我們儲存上一步的狀態價值函式就