前面讲到了MC(蒙特卡洛方法)和TD(0)算法。MC方式是根据采样到的经验轨迹实际得到的奖励来更新轨迹中出现的状态的价值,即在每个轨迹结束之后更新。TD(0)方法中某个状态的价值是根据从当前状态走一步的即时奖励和后续状态的估计价值相加得来的,即在执行一个动作之后就更新价值。
那么,能否将MC和TD(0)结合呢?基于这个想法,就产生了n步时序差分算法。即在某个状态的价值等于在当前状态下走n步得到的奖励加上后续状态的估计价值。
1. n步时序差分预测
关于MC、TD(0)以及n-步TD的关系可以用下面一张图完美诠释。
上图中的空心圆代表状态,实心圆代表动作。最左边是TD(0),最右边是MC。中间就是今天要讲的n步时序差分方法。对于2-step TD,状态 s s s的价值是根据其后两步得到的奖励和执行这两步之后到达的状态的估计价值来计算的,公式表示如下,上标(2)表示2-步TD的奖励。
G t ( 2 ) = R t + 1 + λ R t + 2 + λ 2 V ( S t + 2 ) G_t^{(2)} = R_{t+1} + \lambda R_{t+2} + \lambda^2 V(S_{t+2}) Gt(2)=Rt+1+λRt+2+λ2V(St+2)
那么,n步TD的返回奖励就表示为:
G t ( n ) = R t + 1 + λ R t + 2 + ⋯ + λ n − 1 R t + n + λ n V ( S t + n ) G_t^{(n)} = R_{t+1} + \lambda R_{t+2} + \cdots + \lambda^{n-1} R_{t+n} + \lambda^n V(S_{t+n}) Gt(n)=Rt+1+λRt+2+⋯+λn−1Rt+n+λ