0%

资格迹

如何理解资格迹

考虑这样一个回合$S_0,A_0,R_1,S_1,A_1,…,R_n,S_n,A_n$

我们知道对于 $(S_0,A_0)$计算$q_(S_0,A_0)$,可以用$U(S_0,A_0)=R_1+q(S_1,A_1)$近似为真实值去更新$q_(S_0,A_0)$,这个时候时序误差为$TD_{error}=U(S_0,A_0)-q(S_0,A_0)$,时序误差所包含的信息全部用来更新$q_(S_0,A_0)$

$(S_5,A_5)$时,

$U(S_5,A_5)=R_6+\gamma q(S_6,A_6)$

$U(S_0,A_0)=R_1+\gamma R_2+\gamma ^2R_3+\gamma ^3R_4+\gamma ^4R_5+\gamma ^5U(S_5,A_5) $

这个时候$(S_5,A_5)$处的时序误差对于更新 $(S_0,A_0)$处的$q_(S_0,A_0)$所产生的作用是$\gamma ^5 *TD_{error}$

从上式可以看出与$(S_0,A_0)$状态相距越远的$(S_k,A_k)$所产生的时序误差对于$(S_0,A_0)$所起的作用就越小,所以间隔步数每增加一步,前面的每个动作状态对的资格迹都要进行衰减.

比如在$t=4$时,

$U(S_0,A_0):\gamma^4,U(S_1,A_1):\gamma^3,U(S_2,A_2):\gamma^2,U(S_3,A_3):\gamma$。

前进一步,$t=5$时,

$U(S_0,A_0):\gamma^5,U(S_1,A_1):\gamma^4,U(S_2,A_2):\gamma^3,U(S_3,A_3):\gamma^2,U(S_4,A_4):\gamma$

而对于$TD(\lambda)$ 来说

$U(S_0,A_0)=R_1+q(S_1,A_1)\qquad 1-\lambda$

$U(S_0,A_0)=R_1+\gamma U(S_1,A_1) \qquad (1-\lambda)\lambda$

$U(S_0,A_0)=R_1+\gamma R_2+\gamma ^2 U(S_2,A_2) \qquad (1-\lambda)\lambda ^2$

…….

所以其间隔步数每增加一步,当前状态动作价值产生的时序误差,用到更新前面的状态动作价值时要相应的衰减对应$\gamma\lambda$次幂。

考虑资格迹其实看起来很合理,因为当回合轨迹逐渐延伸,不仅当前的动作状态价值需要更新,由于新的信息的出现,又会使得之前已经更新的动作状态价值,和我们的$U$(类似机器学习的目标)之间重新产生新的误差,我们理应将这部分考虑到损失函数中,进行梯度更新。

带资格迹的梯度下降

《强化学习导论》Richard S.Sutton:资格迹$\mathbf{z}_t$是一个和权值向量$\mathbf{w}_t$ 同维度的向量,在$TD(\lambda)$中,资格迹向量被初始化为零,然后在每一步累加价值函数的梯度,以$\gamma\lambda$

$$
\begin{align}
\mathbf{z_{-1}} &= \mathbf{0}, \\
\mathbf{z_t} &= \gamma\lambda\mathbf{z_{t-1}}+\nabla\hat{v}(S_t,\mathbf{w_t}), 0 \leq t\leq T
\end{align}
$$
某一时刻的单步时序差分误差为
$$
\delta_t=R_{t+1}+\gamma\hat{v}(S_{t+1},\mathbf{w_t})-\hat{v}(S_t,\mathbf{w_t})
$$
在$TD(\lambda)$中,权值向量每一步的更新正比于时序差分的标量的误差和资格迹。
$$
\mathbf{w_{t+1}}=\mathbf{w_t}+\alpha\delta_t\mathbf{z_t}
$$
当时看资格迹时候特别迷这一部分,其实自己稍微推导两个回合就明白了。这里的资格迹其实就是把后面的梯度中的学习率和时序误差提出来剩下的内容。因为是利用函数近似,所以会包含价值的梯度。具体推导两步。

当$t=0$时:
$$
\begin{align*}
U(S_0) &= R_1+\gamma v(S_1,\mathbf{w_0}) \\
Loss &= [U(S_0)-v(S_0,\mathbf{w_0})]^2 \\
\mathbf{w_1} &= \mathbf{w_0}+\alpha[U(S_0)-v(S_0,\mathbf{w_0})]\nabla v(S_0,\mathbf{w_0}) \\
&= \mathbf{w_0}+\alpha\delta_0\nabla v(S_0,\mathbf{w_0}) \\
\mathbf{z_0} &=\mathbf{0} + \nabla v(S_0,\mathbf{w_0})
\end{align*}
$$
从上式资格迹可以看出,其和权值向量是同维度的。

当$t=1$时:
$$
U(S_1)=R_2+\gamma v(S_2,\mathbf{w_1})
$$
这时时序误差为$\delta_1=U(S_1)-v(S_1)$,而$U(S_0) = R_1 + \gamma U(S_1)$,所以在$TD(\lambda)$下,$U(S_0)$和$v(S_0,\mathbf{w_1})$的误差为$\gamma\lambda\delta_1$,这两部分的误差理应都考虑,这个时候的损失函数就变为
$$
Loss=[U(S_0)-v(S_0,\mathbf{w_1})]^2 + [U(S_1)-v(S_1,\mathbf{w_1})]^2
$$
进行梯度更新
$$
\begin{align*}
\mathbf{w_2} &= \mathbf{w_1}+\alpha[U(S_0)-v(S_0,\mathbf{w_1})]\nabla v(S_0,\mathbf{w_1})+ \alpha[U(S_1)-v(S_1,\mathbf{w_1})]\nabla v(S_1,\mathbf{w_1})\\
&= \mathbf{w_1}+\alpha\gamma\lambda\delta_1\nabla v(S_0,\mathbf{w_1}) +\alpha\delta_1\nabla v(S_1,\mathbf{w_1})\\
\end{align*}
$$
把学习率和时序误差$\delta _1$提出来,得到资格迹
$$
\mathbf{z_1} =\gamma\lambda\nabla v(S_0,\mathbf{w_1}) + \nabla v(S_1,\mathbf{w_1})
$$
由于$\nabla v(S_0,\mathbf{w_0})=\nabla v(S_0,\mathbf{w_1})$,所以
$$
\mathbf{z_1} =\gamma\lambda\mathbf{z_0} + \nabla v(S_1,\mathbf{w_1})
$$
以次往下更新……