資格跡Eligibility Traces是RL中一項基本技術,Sarsa, Q-Learning等一切TD類方法,都可以用資格跡來提升學習效率。提升效率的方式是不用等到n-step再去更新n步前的value。
資格跡和n-步Bootstrap一樣,將MC和TD進行了統一。
12.1 λ回報
在第七章中我們有
我們可以采用不同n值的任意線性組合來對參數進行更新,只要它們權和為1。
我們定義
對應參數的更新迭代式
不同λ的值和不同的n-step值產生的效果類似:
這是一個離線算法,因為需要一個episode執行完才能更新θ。
執行完之后,回頭在每一步觀察后面各步的回報,並通過更新\theta校正對應的v/q值:
12.2 TD(λ)算法
根據上面的off-line算法,我們做一些改進,我們在每一步都更新參數θ,而不是等到最后一步。早更新效率通常會更好,另外也把計算量均勻地分攤了。
這里我們引入資格跡向量,稱為accmulative trace:
TD誤差為:
迭代更新式為:
理解上面的式子,我們把$\boldsymbol e_t$展開為
$\boldsymbol e_t=\nabla\hat v(S_t,\boldsymbol \theta_t)+\gamma\lambda\nabla\hat v(S_{t-1},\boldsymbol \theta_{t-1})+\gamma^2\lambda^2\nabla\hat v(S_{t-2},\boldsymbol \theta_{t-2})+\cdots+\gamma^{t-1}\lambda^{t-1}\nabla\hat v(S_1,\boldsymbol \theta_1)$
然后代入至$\boldsymbol\theta$的迭代式中,有:
$\theta_{t+1}=\theta_t+\alpha(\delta_t\nabla\hat v(S_t,\boldsymbol \theta_t)+\gamma\lambda\delta_t\nabla\hat v(S_{t-1},\boldsymbol \theta_{t-1})+\gamma^2\lambda^2\delta_t\nabla\hat v(S_{t-2},\boldsymbol \theta_{t-2})+\cdots+\gamma^{t-1}\lambda^{t-1}\delta_t\nabla\hat v(S_1,\boldsymbol \theta_1))$
觀察式子,實際上更新了每一步的v值。並且和12.1中的式子近似,只是更新θ的時機順序不同導致最后結果會有細微差別。
12.3 在線觀點
我們定義h截斷λ回報
可以理解為在h就終止的λ回報。
對每個episode,我們定義\theta_0^h$均為上一episode更新完之后的\theta值,然后計算每個截斷點的$\theta_t^h$
12.4 真在線TD(λ)
將上一節的θ序列排成三角形:
我們需要的只是對角線上的值。在episode中,每走一步,就計算出一排。但這樣計算太繁瑣了。對於線性近似,我們可以用下面的式子來簡化計算:
其中
可以證明由此可以正確產生對角線上的θ值。
上面的$\boldsymbol e_t$我們成為dutch trace,是為了和12.2中的$\boldsymbol e_t$作區分(accumulating trace)。之前對tile coding中的binnary features還出現過replacement trace,但是現在已經被dutch trace替代
12.5 蒙特卡洛學習中的dutch trace(略)