时序差分 (TD) 学习允许在每一步进行更新,而不是等待一个完整的回合结束。最简单的TD方法被称为TD(0),或单步TD,它用于预测问题:估计给定策略 π 的状态值函数 Vπ。
回想一下,蒙特卡洛方法是根据从状态 St 开始的完整观测回报 Gt 来更新状态 St 的值估计 V(St):
V(St)←V(St)+α[Gt−V(St)]
其中 Gt=Rt+1+γRt+2+γ2Rt+3+… 是直到回合终止的实际观测到的累计折扣奖励。计算 Gt 需要等到回合结束。
另一方面,TD(0) 在执行动作 At 并收到奖励 Rt+1 后,观察到从状态 St 到状态 St+1 的转移时,会立即进行更新。TD(0) 不使用完整的返回值 Gt,而是使用估计的返回值。这个估计是通过将即时奖励 Rt+1 与下一状态 V(St+1) 的当前值估计结合起来形成的。这个估计的回报,Rt+1+γV(St+1),被称为TD目标。
TD(0) 对 V(St) 的更新规则是:
V(St)←V(St)+α[Rt+1+γV(St+1)−V(St)]
让我们逐项分析:
- V(St): 时间 t 访问的状态的当前值估计。
- α: 学习率,一个小的正数,决定更新的步长。
- Rt+1: 从 St 转移后立即获得的奖励。
- γ: 折扣因子,用于衡量未来奖励的重要性。
- V(St+1): 下一状态 St+1 的当前值估计。
- Rt+1+γV(St+1): TD目标。这是重要部分。它是对从状态 St 获得回报的估计。它使用实际的即时奖励 Rt+1,并依赖于现有值估计 V(St+1) 作为所有后续状态的值。
- [Rt+1+γV(St+1)−V(St)]: 这个项被称为TD误差,通常表示为 δt。
δt=Rt+1+γV(St+1)−V(St)
TD误差衡量的是 St 的估计值(即TD目标)与当前值估计 V(St) 之间的差异。它表示与当前估计相比,这次转移的结果有多“出乎意料”。
更新规则可以使用TD误差更简洁地写出:
V(St)←V(St)+αδt
这意味着我们根据TD误差所指示的方向调整当前值 V(St)。如果TD目标高于 V(St),表示转移导致的结果(基于 Rt+1 和 V(St+1))好于预期,我们就增加 V(St)。如果低于,我们就减少 V(St)。
引导性质
将TD(0)与蒙特卡洛方法区分开来的核心思想是引导(bootstrapping)。TD(0) 部分基于另一个已学到的估计值 V(St+1) 来更新其估计值 V(St)。它不等待最终结果 (Gt),而是使用当前可用的未来估计作为替代。这使得TD(0)能够在线学习(每一步后更新)并从不完整的序列中学习,使其适用于回合可能永不结束的持续任务。
TD(0) 预测算法
这是估计 Vπ≈V 的算法总结:
- 为所有状态 s 任意初始化 V(s) (例如,V(s)=0)。
- 对每个回合重复:
a. 初始化 S (回合的第一个状态)。
b. 对回合的每一步重复:
i. 根据策略 π 为状态 S 选择动作 A。
ii. 执行动作 A,观察奖励 R 和下一状态 S′。
iii. 计算TD误差:δ←R+γV(S′)−V(S)。
iv. 更新值函数:V(S)←V(S)+αδ。
v. 更新状态:S←S′。
c. 直到 S 是一个终止状态。
这个过程根据观测到的转移和奖励,迭代地调整值估计,最终在某些条件(如学习率 α 的适当衰减)下收敛到真实值函数 Vπ。TD(0) 是更复杂的TD控制方法(如SARSA和Q学习)的起点,我们接下来会讨论它们。