RL 博客:http://blog.sciencenet.cn/home.php?mod=space&uid=3189881&do=blog&view=me&from=space&srchtxt=RL&page=1php
轉自:http://blog.sciencenet.cn/home.php?mod=space&uid=3189881&do=blog&id=1128648,感謝分享html
Monte carlo 和TD 都是model-free 的估值方法, TD 用於online RL 場景算法
強化學習中的Model-free問題主要的解決思路來源於統計方法。所謂統計方法又可分爲Monte Carlo與TD算法。當學習任務可轉化爲episode task形式時,Monte Carlo與TD算法在實現上的不一樣主要體如今如何更新狀態動做值函數。n-step TD算法則是由兩種不一樣的值函數更新形式相結合所產生的,因此想要理解n-step TD算法,對Monte Carlo與TD進行透徹地的解析是十分有必要的。bootstrap
Backup Diagram的區別dom
Monte Carlo方法:每一個執行一個episode task,更新episode開始時的狀態值函數。假設一個episode開始時的狀態爲StartStart,結束時的狀態爲EndEnd。若是將一個episode通過的狀態寫爲狀態集合StateState,則每一個episode可更新的狀態值函數集合能夠寫爲V(State)V(State),用於更新狀態值函數的Return=R(End)Return=R(End)。因此對Monte Carlo來講,一個episode中狀態集合的值函數更新更像是對多個狀態獨立地更新,在強化學習中,能夠稱其爲non-bootstrap,這也應證了Monte Carlo方法最爲重要的性質:每個狀態的估計都是獨立的,不依賴於其它狀態的! 因此爲了儘量保證每一個狀態均可以被更新到,纔有了Exploring Start策略(什麼是Exploring Start?能夠閱讀【RL系列】從蒙特卡羅方法正式引入強化學習)下面將經過Backup Diagram將MC方法的更新形式更加清晰的表現出來:函數
Monte Carlo學習
TD方法:在任意一個episode task執行過程當中所遇到的每一個狀態都會被更新,且每一個狀態的更新都依賴於下一個狀態的值函數與到達下一個狀態所得到的獎勵。由於是邊執行episode邊更新值函數,這種方法又被稱爲on-line learning。實際上,相似MC方法將執行好的episode的軌跡(trajectory)保存在下來,再依照TD方法更新也能夠達到與on-line learning相同的效果,但很明顯,這個方法是off-line learning,也就是說線下與線上學習並非區分Monte Carlo與TD算法的依據。TD算法的值函數更新可用下圖表示出來:優化
TDui
由上述示意圖能夠發現,TD方法的最後一步,也就是對狀態SnSn的值函數更新與Monte Carlo方法並沒有任何區別。對狀態SnSn的更新依賴於R(End)R(End)與V(End)V(End),但因爲終止狀態實際上不參與值函數更新過程,因此通常狀況下都設V(End)=0V(End)=0,這樣一來,這最後一步就與Monte Carlo方法一致了。atom
定步長與不定步長,TD方法
定步長與不定步長的更新方法在Bandit問題裏就曾討論過,定步長實際上爲Recency-Weighted Average,不定步長則是Incremental形式。一般來講,Monte Carlo Prediction採用的是不定步長的值函數更新,TD方法則採用的是定步長形式,但也不是固定的,能夠互換使用。理論上來講,定步長與不定步長的通用形式能夠寫爲:
在這個式子中,αα一般小於1,如果常數不變則爲定步長,若αα是變量則爲不定步長。不論定步長與不定步長,該式皆可表示爲對隨機變量XX的均值估計,且該估計爲無偏估計,也就是說當迭代次數無窮大時,這個估計的均值與指望E[X]E[X]是相同的。可是,αα越大估計值的方差就越大(特別注意,這是發生在當迭代次數較大進入收斂狀態時),同時也存在着,αα越小收斂速度越慢的狀況,因此對於αα的處理老是須要平衡收斂速度與均值方差。
Incremental Implementation做爲不定步長的一種形式,能夠說是比較好的平衡了收斂速度與均值方差之間的矛盾。對於Incremental形式來講,開始須要收斂速度時,αα很大,進入收斂狀態後須要精確度時,αα又變的很小。但有時爲了突出優化收斂速度,就必需要犧牲必定的精確度,最簡單的方法就是提升αα的值,但須要估計的隨機變量XX的方差大小給這種方法帶來了不肯定性。如果XX的方差D[X]D[X]較大,則估計均值的方差D[V(S)]D[V(S)]會對αα值的增大很是敏感,這樣一來不但收斂速度未獲得很大改善反而精確度降低得厲害。(舉例:均勻分佈與0-1分佈)
爲了解決這個問題,咱們能夠人爲的構造出與原有須要估計的隨機變量XX指望相同的新的隨機變量YY,且但願隨機變量YY的方差能夠有所減少。在MC方法中,隨機變量XX就是終態的Reward(除終態外各狀態Reward爲0),而人爲構造出的隨機變量YY在TD中被描述爲:
爲何MC方法中的隨機變量XX與TD方法中的隨機變量YY的均值估計是等價的?咱們使用一個簡單例子來稍做計算(這裏只考慮除終態Reward外其它Reward值爲0的這種獎勵設計,這樣比較簡單)。下圖爲一個以狀態S1S1爲起點的馬爾可夫決策模型,每一條之路能夠表示爲一個episode。
例子一:
假設共執行了N個episode,其中到達終態的episode個數分別爲N1~N7。估計狀態S1S1的均值,先用Monte Carlo方法能夠得出V(S1)V(S1)爲:
若是使用TD方法,對狀態S1S1的估計能夠寫爲以下形式。假設episode通過狀態S2S2的次數爲K1K1,通過狀態S3S3的次數爲K2K2,其中K1=N1+N2+N3K1=N1+N2+N3與K2=N4+N5+N6K2=N4+N5+N6始終成立。
至於觀察方差的變化,咱們首先將通用的值函數更新方程作一個簡單的化簡:
值函數V(S)V(S)的不肯定性所有來源於後一項αXαX。首先看αα對估計值方差的影響,有公式Var(cX+b)=c2Var(X)Var(cX+b)=c2Var(X)因此當αα擴大cc倍時,方差會變爲原先的c2c2倍。讓咱們再舉個例子,看一看隨機變量XX自己對估計值方差的影響。
例子二:
如上圖所示,終態只有End1與End2,讓咱們假設episode到達End1所得到的Reward爲1,到達End2所得到的Reward爲0。如按照MC方法更新,則值函數通用更新方程中的隨機變量XX即爲終態時所得到的Reward,該隨機變量XX定然服從伯努利分佈(0-1分佈)。假設每一類episode發生的機率皆爲1/6(共有6條支路,6類episode),則隨機變量XX的機率分佈能夠寫爲:
依據方差計算公式,隨機變量XX的方差爲:
若是咱們按照TD方法更新,則可先計算出V(S2)=13V(S2)=13,V(S3)=23V(S3)=23,則TD方法所構造的隨機變量YY的機率分佈能夠寫爲以下形式,並依據方差公式計算Var(Y)Var(Y):
TD方法的估計均值偏差是MC方法的1/10,這也就是TD方法一般能夠在保持與MC方法相同的估計均值偏差的前提下會以更快的速度收斂的緣由(Random Walk問題就很好的應證了這一點,能夠參考Sutton書的Figure 6.2與Figure 6.3)。但實際上這也並不是是絕對的,MC方法的表現很是仰賴Reward設計與實際的環境,當終態數量不少時,Reward值之間比較接近時,MC方法的估計均值偏差也不必定差。
n-step TD
對於上述的例子二,可將其episode前進的過程分爲三個階段或三層(以下圖所示),所構造的待估計隨機變量Y={V(S2),V(S3)}Y={V(S2),V(S3)},能夠視爲估計第一層而依賴於第二層的估計,這就是1-step TD。若構造的待估計隨機變量爲第三層估計的值函數,即Y={V(S4),V(S5),V(S6),V(S7)}Y={V(S4),V(S5),V(S6),V(S7)},也就是對第一層的估計依賴於第三層,而跳過了第二層(第二層的估計直接依賴於終態的Reward),這就是2-step TD。能夠證實2-step TD的估計均值與1-step TD和MC方法徹底一致,但均值估計偏差卻各不相同。
下面給出2-step TD的Backup Diagram:
2-Step TD
能夠寫出n-step TD的構造隨機變量YY的通用表達形式:
一般來講,在進入收斂狀態後,n-step TD的均值估計偏差並不會必定優於1-step TD,但卻能夠很好的控制收斂的速度與RMSE之間的平衡,而且n-step TD的優點在於能夠很好與eligibility traces相關聯,這裏就再也不深刻討論,只探討n-step TD自己。