Temporal-Difference Learning
TD 预测
TD 和蒙特卡洛方法都使用了经验来解决预测问题
粗略地说,蒙特卡洛一直等到访问后的回报已知,接着使用该回报作为 V ( S t ) V(S_t) V(St) 的目标
一个简单的适用于非平稳环境的每次访问蒙特卡洛法是:
V ( S t ) ← V ( S t ) + α [ G t − V ( S t ) ] V(S_t) \gets V(S_t) + \alpha [G_t - V(S_t) ] V(St)←V(St)+α[Gt−V(St)]
式中, G t G_t Gt 是时间 t t t 的实际回报, α \alpha α 是恒定的步长参数,这种方法叫做恒定 α M C \alpha MC αMC
在蒙特卡洛方法中,必须等到回合的结束才能确定 V ( S t ) V(S_t) V(St) 的增量,因为只有此时才知道 G t G_t Gt
而 TD 方法只需要等到下一个时间步,在时间 t + 1 t+1 t+1 ,使用观测到的奖励 R t + 1 R_{t+1} Rt+1 和预测 V ( S t + 1 ) V(S_{t+1}) V(St+1) 立即进行更新
最简单的 TD 方法在过渡到状态 S t + 1 S_{t+1} St+1 并收到奖励 R t + 1 R_{t+1} Rt+1 立即进行更新:
V ( S t ) ← V ( S t ) + α [ R t + 1 + γ V ( S t + 1 ) − V ( S t ) ] V(S_t) \gets V(S_t) + \alpha [R_{t+1} + \gamma V(S_{t+1}) - V(S_t)] V(St)←V(St)+α[Rt+1+γV(St+1)−V(St)]
蒙特卡洛更新的目标是 G t G_t Gt ,而 TD 法更新的目标是 R t + 1 + γ V ( S t + 1 ) R_{t+1} + \gamma V(S_{t+1}) Rt+1+γV(St+1)
这种 TD 法叫做 TD(0) 或一步 TD
书中的伪代码:
因为 TD(0) 基于现有估计进行更新,所以我们把它叫做自举法
在前面我们得知:
v π ( s ) ≐ E π [ G t ∣ S t = s ] = E π [ R t + 1 + γ G t + 1 ∣ S t = s ] = E π [ R t + 1 + γ π ( S t + 1 ) ∣ S t = s ] v_\pi(s) \doteq \mathbb{E}_\pi [G_t | S_t = s] \\[5pt] = \mathbb{E}_\pi [ R_{t+1} + \gamma G_{t+1} | S_t = s] \\[5pt] = \mathbb{E}_\pi [R_{t+1} + \gamma_\pi (S_{t+1}) | S_t = s ] vπ(s)≐Eπ[Gt∣St=s]=Eπ[Rt+1+γGt+1∣St=s]=Eπ[Rt+1+γπ(St+1)∣St=s]
(具体证明可以参见之前的文章)
粗略地说,蒙特卡洛法使用第一个等式的估计作为目标,而 DP 法使用第三个等式的估计作为目标
TD 法在第三个等式中对预期值进行采样,并且使用当前的估计 V V V 而不是真实的 v π v_\pi vπ,因此 TD 法将蒙特卡洛的采样和 DP 的自举相结合
最后,TD(0) 更新中,括号里的值是一种误差,衡量 S t S_t St 的估计值和更好的估计 R t + 1 + γ V ( S t + 1 ) R_{t+1} + \gamma V(S_{t+1}) Rt+1+γV(St+1) 之间的误差,这个数量叫做 TD 误差:
δ t ≐ R t + 1 + γ V ( S t + 1 ) − V ( S t ) \delta_t \doteq R_{t+1} + \gamma V(S_{t+1}) - V(S_t) δt≐Rt+1+γV(St+1)−V(St)
注意到,TD 误差是当时估算的误差,因为 TD 误差依赖于下一个状态和下一个奖励,因此直到一个时间步之后才可用
也就是说, V ( S t ) V(S_t) V(St) 的误差 δ t \delta_t δt 直到时间 t + 1 t+1 t+1 才可用
另外,如果数组 V V V 在回合中没有改变,那么蒙特卡洛误差可以写成 TD 误差的和:
G t − V ( S t ) = R t + 1 + γ G t + 1 − V ( S t ) + γ V ( S t + 1 ) − γ V ( S t + 1 ) = δ t