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