1 前言
在上一篇blog中,我們分析了蒙特卡洛方法,這個方法的一個特點就是需要運行完整個episode從而獲得準確的result。但是往往很多場景下要運行完整個episode是很費時間的,因此,能不能還是沿着bellman方程的路子,估計一下result呢?並且,注意這裏,依然model free。那麼什麼方法可以做到呢?就是TD(temporal-difference時間差分)方法。
有個名詞注意一下:boostraping。所謂boostraping就是有沒有通過估計的方法來引導計算。那麼蒙特卡洛不使用boostraping,而TD使用boostraping。
接下來具體分析一下TD方法
2 TD與MC的不同
MC使用準確的return來更新value,而TD則使用Bellman方程中對value的估計方法來估計value,然後將估計值作爲value的目標值進行更新。
也因此,估計的目標值的設定將衍生出各種TD下的算法。
那麼TD方法的優勢有什麼呢?
- 每一步都可以更新,這是顯然,也就是online learning,學習快
- 可以面對沒有結果的場景,應用範圍廣
不足之處也是顯而易見的,就是因爲TD target是估計值,估計是有誤差的,這就會導致更新得到value是有偏差的。很難做到無偏估計。但是以此同時,TD target是每一個step進行估計的,僅最近的動作對其有影響,而MC的result則受到整個時間片中動作的影響,因此TD target的方差variance會比較低,也就是波動性小。
還是放一下David Silver的總結吧:
那麼David Silver的ppt中有三張圖,很清楚的對比了MC,TD以及DP的不同:
從上面可以很清楚的看到三者的不同。DP就是理想化的情況,遍歷所有。MC現實一點,TD最現實,但是TD也最不準確。但是沒關係,反覆迭代之下,還是可以收斂的。
整個增強學習算法也都在上面的範疇裏:
3 TD算法
這只是TD(0)的估計方式,顯然可以拓展到n-step。就是講TD-target再根據bellman方程展開。
再下來的思想,就是可以把TD(i)和TD(j)合在一起求個平均吧。
再下來就是把能算的TD(i)都算一遍,每一個給個係數,總和爲1,這就是
4 SARSA算法
SARSA算法的思想很簡單,就是增加一個A,下一步的A,然後據此來估計
之所以算法稱爲SARSA,就是指一次更新需要用到這5個量。
5 Q-Learning算法
著名的Q-Learning。
這裏直接使用最大的Q來更新。
爲什麼說SARSA是on-policy而Q-Learning是off-policy呢?
因爲SARSA只是對policy進行估計,而Q-Learning的Q則是通往最優。
6 Double Q-Learning
Q-Learning可能會出現對Q值過度估計的問題,Double Q-Learning可以解決這個問題:
使用兩個Q交替更新。
7 多種方法比較
由上面兩圖可以理解TD,Sarsa,和Q-Learning的算法來源,本質上都是基於Bellman方程。
可以這麼理解:Bellman方程是一種理想條件的解法,而這些方法則是放棄理想準確度而形成的可實現方法。
小結
本文梳理了TD相關的幾個算法。TD算法特別是
聲明
本文的圖片截取自:
1 Reinforcement Learning: An Introduction
2 Reinforcement Learning Course by David Silver