[RL Notes] 时序差分的目标

1. 半梯度下降

  对于通用 SGD 方法

\begin{equation}
\boldsymbol{\mathrm{w}}_{t+1} \doteq \boldsymbol{\mathrm{w}}_t + \alpha \big[U_t – \hat{v}(s, \boldsymbol{\mathrm{w}}_t)^2\big] \nabla \hat{v}(s, \boldsymbol{\mathrm{w}}_t) \tag{1}
\end{equation}

如果 $U_t$ 是一个无偏估计,即满足对于任意的 $t$,有 $\mathbb{E}[U_t|S_t=s] = v_{\pi}(S_t)$,那么 $\boldsymbol{\mathrm{w}}$ 会收敛到局部最优。

  如果使用将式 $(1)$ 中的 $U_t$ 替换为自举的目标,例如单步时序差分的目标,即

\begin{equation}
U_{t} \doteq R_{t+1} + \gamma \hat{v}(S_{t+1}, \boldsymbol{\mathrm{w}}) \tag{2}
\end{equation}

此时的目标会依赖于当前的价值估计 $\hat{v}(S_{t+1}, \boldsymbol{\mathrm{w}})$,当前的价值估计很可能不等于真实的价值,这就导致 $U_{t}$ 是有偏的,不能保证 $\boldsymbol{\mathrm{w}}$ 收敛到价值误差的局部最优。计算式 $(2)$ 对 $\boldsymbol{\mathrm{w}}$ 的梯度,可得

\begin{equation}
\nabla \frac{1}{2} \big[U_t – \hat{v}(S_t, \boldsymbol{\mathrm{w}})\big]^2 = \big(U_t – \hat{v}(S_t, \boldsymbol{\mathrm{w}})\big) \big(\nabla U_t – \nabla \hat{v}(S_t, \boldsymbol{\mathrm{w}})\big) \tag{3}
\end{equation}

注意由式 $(2)$ 可知 $U_t$ 依赖于 $\boldsymbol{\mathrm{w}}$,有

\begin{equation}
\nabla U_t = \nabla \big(R_{t+1} + \gamma \hat{v}(S_{t+1}, \boldsymbol{\mathrm{w}})\big) = \gamma \nabla \hat{v}(S_{t+1}, \boldsymbol{\mathrm{w}}) \tag{4}
\end{equation}

如果使用式 $(3)$ 进行“梯度下降”,则在对权重的优化过程中,只考虑了改变权重对估计的影响,而忽略了对目标的影响。由于只包含一部分梯度,这种方法称为半梯度(semi-gradient)方法。

  虽然半梯度方法不能像梯度方法那样稳健地收敛,但它在多数情况下仍能可靠地收敛,而且由于时序差分目标相比收益的采样通常具有较小的方差,这使得它能更快收敛。

2. 半梯度 TD 算法

  使用半梯度的 TD(0) 算法如下所示。


半梯度 TD(0),用于估计 $\hat{v} \approx v_{\pi}$
输入:待评估的策略 $\pi$
输入:一个可微的函数 $\hat{v}: \mathcal{S}^+ \times \mathbb{R}^d \rightarrow \mathbb{R}$,满足 $\hat{v}(终止状态,\cdot) = 0$
算法参数:步长 $\alpha > 0$
对价值函数的权值 $\boldsymbol{\mathrm{w}} \in \mathbb{R}^d$ 进行任意的初始化(例如 $\boldsymbol{\mathrm{w}} = 0$)
对每一幕循环:
  初始化 $S$
  对该幕的每一步循环:
    选取 $A \sim \pi(\cdot|S)$
    采取动作 $A$,观察 $R, S’$
    $\boldsymbol{\mathrm{w}} \leftarrow \boldsymbol{\mathrm{w}} + \alpha [R + \gamma \hat{v}(S’, \boldsymbol{\mathrm{w}}) – \hat{v}(S, \boldsymbol{\mathrm{w}})] \nabla \hat{v}(S, \boldsymbol{\mathrm{w}})$
    $S \leftarrow S’$
  直到 $S’$ 为终止状态