此为《强化学习》第六章 Temporal-Difference Learning 。
时序差分学习 (Temporal-Difference Learning, TD) 是强化学习的核心。TD学习是蒙特卡洛MC法和动态规划DP法的综合,它可以像MC那样,不需要知道环境的全部信息,通过交互就能学习;同时,它也可以像DP那样,在(其他值函数)估计的基础上进行估计,从而不需要求解完整个事件(Episode)。
时序差分估计
在上一章的MC增量式实现一节,我们看到状态值函数的增量式更新表达式:
其中, Gn+1−vns G n + 1 − v n s 的部分为预测值和实际交互得到真实值之间的误差,而 Wn+1/Cn+1 W n + 1 / C n + 1 则为误差的权重项。在Off-Policy的重要性采样中,权重项比较复杂;在On-Policy中,权重项只是 1/n 1 / n 。本节中做的一个改进是,把权重项替换为一个常数 α α 。从而状态值函数的更新式变成了:
(注意这里下标的变化,其实就是一回事。前面强调当个状态的更新,这里强调所有状态的更新)。上式的更新方法被称为常数 α α 蒙特卡洛法 (Constant- α α MC) 。但是,这种方法仍然需要求解 Gt G t ,因此需要等整个episode完成后才能完成每个状态的更新。因此我们提出时序差分的方法,用 Rt+1+γGt+1≈Rt+1+γv(St+1) R t + 1 + γ G t + 1 ≈ R t + 1 + γ v ( S t + 1 ) 来替代 Gt G t ,即
由于这里仅用了下一个状态 St+1 S t + 1 的值函数来估计,因此也被称为TD(0)方法。在下一章,我们将看到用更多步后的状态来估计值函数,就有了TD(n)方法。TD(0)方法的伪代码如下(比MC要简单很多):
下图为TD(0)的回溯图模型。可以看到,它使用了下一个状态的值函数来更新当前状态值函数。
我们定义 Rt