时序差分学习

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)+α[GtV(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π[GtSt=s]=Eπ[Rt+1+γGt+1St=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) δtRt+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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值