TD(lambda) 算法
\(TD(\lambda)\)是统一蒙特卡洛算法(MC)和时序差分算法(TD)的第二种形式。第一种形式也就是 \(TD(n)\) 算法。具体来说, \(TD(n)\) 的公式可以写为:
在 \(TD(n)\) 中,有 \(n \in [1, +\infty)\) 当 \(n = 1\) 时, \(TD(n)\) 算法退化为 TD算法。当 \(n \to +\infty\) 时, \(TD(n)\) 退化为 MC算法。
一、\(\lambda-return\) 算法
在 \(TD(n)\) 算法中,我们把 t 时刻的回报看作是 t 时刻对应状态走n步之后的回报值,也就是
但是在 \(TD(\lambda)\) 中,我们把最终回报看作是每一步回报的加权值,每一步的加权值为 \(\lambda^{n-1}\) 其中 \(\lambda \in [0, 1]\) 。但是为了保证最终的加权和为1,我们会再乘上 \(1 -\lambda\) 写成公式就是:
在公式(2)中,我们假设走了无限多步,也就是 \(n \to \infty\)。,但是这是不可能的。实际上,如果智能体走了 T 步之后结束回合,公式(2)可以被重写为:
在公式(3)中,当 \(\lambda = 1\) 时, \(G_t^{\lambda} = G_t\), \(\lambda-return\) 算法退化为 蒙特卡洛算法。当 \(\lambda = 0\) 时, \(G_t^{\lambda} = G_{t:t+1}\),此时, \(\lambda-return\) 算法退化为 \(TD\) 算法
二、\(TD(\lambda)\) 算法
\(\lambda-return\) 算法和 \(TD(n)\) 算法在计算某个状态的回报的时候,都需要先知道未来状态的回报,才可以知道当前状态的回报。这也被看作是一种前向视图。

但是实际上,我们没有利用到达当前状态的历史状态的相关信息。这些历史状态信息也被称为后向视图

\(TD(\lambda)\) 就是第一种同时利用了前向视图和后向视图的强化学习算法。
在 \(TD(\lambda)\) 种利用后向视图的方法叫做资格迹。在 \(TD(\lambda)\) 中,资格迹一开始被初始化为0。智能体每走一步,资格迹会累加价值函数的梯度并以 \(\gamma \lambda\) 的大小衰减。写成公式就是:
公式(4)中的 \(\theta_{t}\) 是价值网络的参数。
在更新价值网络时,假设时序差分误差 \(\delta_t = R_{t+1} + \gamma V(S_(t+1),\theta_t) - V(S_t,\theta_t)\),则更新价值网络公式为:
可以看到,资格迹衡量了历史信息的价值大小。当遇到一个重要事件的时候, \(\nabla V(S_t,\theta_t)\) 的值变大,使得 \(z_t\) 的值变大,就增加了当前状态在历史状态中的权重并影响了更新参数 \(\theta_t\) 的大小。

浙公网安备 33010602011771号