《強化學習Sutton》讀書筆記(六)——n步Bootstrapping(n-step Bootstrapping)
阿新 • • 發佈:2018-12-25
此為《強化學習》第七章 n-step Bootstrapping 。
步Bootstrapping是MC和TD(0)的綜合。隨著對引數 的調整,我們可以看到TD是如何過渡到MC的。而最佳的方法往往就是介於TD和MC之間。
步TD估計
在上一章的TD(0)方法中,我們有
並且,我們使用了一步後的狀態值函式來估計
,從而得到
那麼如果我們考慮
步,那麼顯然
也可以使用以下等式進行估計:
在書本中,上面每個
都會有一個下標,表示此處的值函式是哪一步迭代的值函式。 但實際上,我們只有一個表格用來存值函式,所以實踐上應該很容易知道到底是哪一步迭代的,因此這裡省略不寫(可見下文虛擬碼即可知)。令上述表示式為
,則演算法TD(n)為
如果
,那麼TD(n)將成為MC。在回溯圖中,我們可以看到TD(n)包含了從TD(0)到MC的所有演算法。
TD(n)的虛擬碼如下:
稍微解釋一下。第一個迴圈當然是針對episode,第二個迴圈是在一個episode中產生樣本。第一個if表示如果該episode沒有結束,那麼就繼續取樣;if後的 表示已經執行的步數和 的差。如果 ,就說明 步還沒有走完,當然沒有任何可以迭代的;如果 ,則進入第二個if,使用 步後的狀態值函式 來更新 。
步Sarsa
考慮完狀態值函式,下一步當然是行為值函式。過程幾乎完全一樣,先定義
: