1. 程式人生 > >3. 同策略學習

3. 同策略學習

上一篇動態規劃講的是在馬爾科夫模型$<S, A, P, R, \gamma>$完全已知的情況下,利用概率全展開求解最優策略。這一篇講馬爾科夫模型不完全已知,即轉移概率未知,不能全概率展開的情況下,利用蒙特卡洛(Monte-Carlo)時序差分(Temporal-Difference)來通過取樣的方式估計價值函式,求解最優策略。

本篇的策略對應上一篇動態規劃中的策略估計和策略迭代部分,是先估計策略再改進策略的蒙特卡洛同策略學習方式,下一篇對應值迭代,是邊評估邊改進的時序差分異策略學習方式。

蒙特卡洛和時序差分的區別在於,蒙特卡洛是從完整的從初始狀態到終止狀態,的序列(episode)中學習,利用平均值估計價值值函式。時序差分是從不完整的序列中學習,利用自舉(bootstrapping )來更新價值值函式。下面具體展開來講。

蒙特卡洛學習

策略估計

從根據策略$\pi$得到的完整序列$<S_1, A_1, R_1, ..., S_{terminal}>$

對完整序列中的某一狀態$s$,計算累積獎勵:

$G_t = R_{t+1} + \gamma R_{t+2} +... + \gamma^{T-1} R_T$

對每一個完整序列,有兩種方式累積$G_t$,針對每一個狀態只計算第一次出現(First-Visit)時的$G_t$,或者是累積每一次出現(Every-Visit)時的$G_t$。

然後利用累積的$G_t$除以次數,也就是經驗平均值來更新$v_{\pi}({s_t})$,是$G_t$的無偏估計,

$v_{\pi}({s_t})=E[G_t]$

為了加快計算,利用遞增來更新,

$v_{\pi}({s_t}) \leftarrow v_{\pi}({s_t}) + \alpha ({G_t} - v_{\pi}({s_t}))$

策略迭代

像動態規劃裡解釋的一樣,迭代收斂得到了新的$v_\pi$後,就可以依據新的$v_\pi$改進我們的策略$\pi$。改進的策略$\pi$又可以繼續迭代收斂到新的$v_\pi$,如此迴圈,最終收斂至$\pi^*$,稱之為蒙特卡洛學習

時序差分學習

像動態規劃裡解釋的一樣,為了加快收斂速度,我們可以在$v_\pi$還沒有收斂的迭代過程中,就立馬改進策略$\pi$,再迴圈這個過程,稱之為時序差分學習。


蒙特卡洛朝著實際能到的累計獎勵$G_t$的方向更新$v_{\pi}({s_t})$,

$v_{\pi}({s_t}) \leftarrow v_{\pi}({s_t}) + \alpha ({G_t} - v_{\pi}({s_t}))$

時序差分朝著估計得到的累計獎勵$R_t+\gamma v(s_{t+1})$的方向更新$v_{\pi}({s_t})$,$R_t+\gamma v(s_{t+1})$是TD目標,${R_{t + 1}} + \gamma v(s_{t+1}) - v({s_t})$是TD誤差,

$v({s_t}) \leftarrow v({s_t}) + \alpha ({R_{t + 1}} + \gamma v(s_{t+1}) - v({s_t}))$

蒙特卡洛和時序差分的區別

時序差分利用了馬爾科夫特性,可每一步線上學習,不必等到序列結束,可以從不完整的序列中學習,更有效率,但收斂性一般,對初始值較敏感,低方差,有一些偏差。

蒙特卡洛沒有利用馬爾科夫特性,必須等到序列結束,從完成的序列中學習,有很好的收斂性,對初始值不那麼敏感,高方差,零偏差。

 

參考:

1. David Silver 課程

2. Reinforcement learning: An Introduction. Richard S. Sutton