TD(λ),资格迹(Eligibility Traces)与时序差分学习的统一

TD(λ) 是时序差分学习与资格迹结合的统一算法,通过参数 λ ∈ [ 0 , 1 ] λ∈[0,1] λ∈[0,1] 实现 单步 TD(0)蒙特卡洛方法 的连续插值。它提供两种等价的实现视角:前向视图 (理论分析)和后向视图(在线实现)。

文章目录

    • [1. λ-回报(λ-return)](#1. λ-回报(λ-return))
    • [2. 前向视图(Forward View):时序差分学习](#2. 前向视图(Forward View):时序差分学习)
      • [2.1 批量更新规则](#2.1 批量更新规则)
      • [2.2 公式符号说明](#2.2 公式符号说明)
    • [3. 后向视图(Backward View):资格迹实现](#3. 后向视图(Backward View):资格迹实现)
      • [3.1 更新规则](#3.1 更新规则)
      • [3.2 表格型特例](#3.2 表格型特例)
    • [4. 等价性证明:前向 = 后向](#4. 等价性证明:前向 = 后向)
    • [5. 离线 vs 在线更新](#5. 离线 vs 在线更新)
    • [5 资格迹的三种实现方式](#5 资格迹的三种实现方式)
      • [累积迹(Accumulating Trace)](#累积迹(Accumulating Trace))
      • [替换迹(Replacing Trace)](#替换迹(Replacing Trace))
      • [荷兰迹(Dutch Trace)](#荷兰迹(Dutch Trace))
    • [6. 资格迹版本的 Sarsa(λ) 与 Q(λ)](#6. 资格迹版本的 Sarsa(λ) 与 Q(λ))
    • [7. 关键公式总结表](#7. 关键公式总结表)

1. λ-回报(λ-return)

对于时刻 t 的状态 S t S_t St,λ-回报 G t λ G_t^\lambda Gtλ 是所有 n 步回报的指数加权平均
G t λ = ( 1 − λ ) ∑ n = 1 ∞ λ n − 1 G t ( n ) G_t^\lambda = (1-\lambda) \sum_{n=1}^{\infty} \lambda^{n-1} G_t^{(n)} Gtλ=(1−λ)n=1∑∞λn−1Gt(n)

其中 n 步回报 G t ( n ) G_t^{(n)} Gt(n) 定义为:
G t ( n ) = R t + 1 + γ R t + 2 + γ 2 R t + 3 + ⋯ + γ n − 1 R t + n + γ n v ^ ( S t + n ) G_t^{(n)} = R_{t+1} + \gamma R_{t+2} + \gamma^2 R_{t+3} + \cdots + \gamma^{n-1} R_{t+n} + \gamma^n \hat{v}(S_{t+n}) Gt(n)=Rt+1+γRt+2+γ2Rt+3+⋯+γn−1Rt+n+γnv^(St+n)

当 episode 在 T 时刻结束时, v ^ ( S T ) = 0 \hat{v}(S_T) = 0 v^(ST)=0,求和自动截断为有限项。

展开 λ-回报可见其本质:
G t λ = R t + 1 + γ [ ( 1 − λ ) v ^ ( S t + 1 ) + λ G t + 1 λ ] G_t^\lambda = R_{t+1} + \gamma \left[ (1-\lambda) \hat{v}(S_{t+1}) + \lambda G_{t+1}^\lambda \right] Gtλ=Rt+1+γ[(1−λ)v^(St+1)+λGt+1λ]

递推关系显示:

  • λ = 0 λ = 0 λ=0 : G t λ = R t + 1 + γ v ^ ( S t + 1 ) G_t^\lambda = R_{t+1} + \gamma \hat{v}(S_{t+1}) Gtλ=Rt+1+γv^(St+1) → 单步 TD 目标
  • λ = 1 λ = 1 λ=1 : G t λ = R t + 1 + γ R t + 2 + γ 2 R t + 3 + ⋯ G_t^\lambda = R_{t+1} + \gamma R_{t+2} + \gamma^2 R_{t+3} + \cdots Gtλ=Rt+1+γRt+2+γ2Rt+3+⋯ → 蒙特卡洛回报

2. 前向视图(Forward View):时序差分学习

2.1 批量更新规则

前向视图基于"事后"视角,在 episode 结束后用 λ-回报更新所有历史状态:
w ← w + α ∑ t = 0 T − 1 [ G t λ − v ^ ( S t , w ) ] ∇ v ^ ( S t , w ) \mathbf{w} \leftarrow \mathbf{w} + \alpha \sum_{t=0}^{T-1} \big[ G_t^\lambda - \hat{v}(S_t, \mathbf{w}) \big] \nabla \hat{v}(S_t, \mathbf{w}) w←w+αt=0∑T−1[Gtλ−v^(St,w)]∇v^(St,w)

2.2 公式符号说明

符号 含义 维度/范围
w \mathbf{w} w 价值函数参数向量 R n \mathbb{R}^n Rn
v ^ ( S t , w ) \hat{v}(S_t, \mathbf{w}) v^(St,w) 状态 S t S_t St 的价值估计 R \mathbb{R} R
∇ v ^ ( S t , w ) \nabla \hat{v}(S_t, \mathbf{w}) ∇v^(St,w) 价值函数梯度 R n \mathbb{R}^n Rn
α \alpha α 学习率 ( 0 , 1 ) (0,1) (0,1)
γ \gamma γ 折扣因子 [ 0 , 1 ] [0,1] [0,1]
λ \lambda λ 迹衰减率 [ 0 , 1 ] [0,1] [0,1]

缺点 :必须等待序列结束才能计算 G t λ G_t^\lambda Gtλ,无法在线学习。

3. 后向视图(Backward View):资格迹实现

维护资格迹向量 z \mathbf{z} z 和价值函数参数向量 w \mathbf{w} w。

3.1 更新规则

后向视图每步增量更新,数学等价于前向视图:

资格迹更新
z t = γ λ z t − 1 + ∇ v ^ ( S t , w t ) \mathbf{z}t = \gamma \lambda \mathbf{z}{t-1} + \nabla \hat{v}(S_t, \mathbf{w}_t) zt=γλzt−1+∇v^(St,wt)

权重更新
w t + 1 = w t + α δ t z t \mathbf{w}_{t+1} = \mathbf{w}_t + \alpha \delta_t \mathbf{z}_t wt+1=wt+αδtzt

其中 TD 误差 δ t \delta_t δt 为:
δ t = R t + 1 + γ v ^ ( S t + 1 , w t ) − v ^ ( S t , w t ) \delta_t = R_{t+1} + \gamma \hat{v}(S_{t+1}, \mathbf{w}_t) - \hat{v}(S_t, \mathbf{w}_t) δt=Rt+1+γv^(St+1,wt)−v^(St,wt)

3.2 表格型特例

当使用表格型表示 时(每个状态独立参数, ∇ v ^ ( S t ) = 1 S t \nabla \hat{v}(S_t) = \mathbf{1}_{S_t} ∇v^(St)=1St),公式简化为:

状态 s 的资格迹
z t ( s ) = { γ λ z t − 1 ( s ) + 1 if s = S t γ λ z t − 1 ( s ) otherwise z_t(s) = \begin{cases} \gamma \lambda z_{t-1}(s) + 1 & \text{if } s = S_t \\ \gamma \lambda z_{t-1}(s) & \text{otherwise} \end{cases} zt(s)={γλzt−1(s)+1γλzt−1(s)if s=Stotherwise

状态价值更新
V ( S t ) ← V ( S t ) + α δ t z t ( S t ) V(S_t) \leftarrow V(S_t) + \alpha \delta_t z_t(S_t) V(St)←V(St)+αδtzt(St)

4. 等价性证明:前向 = 后向

回顾前向和后向更新的公式:

资格迹的展开式
z t = ∑ k = 0 t ( γ λ ) k ∇ v ^ ( S t − k , w t − k ) \mathbf{z}t = \sum{k=0}^{t} (\gamma\lambda)^k \nabla \hat{v}(S_{t-k}, \mathbf{w}_{t-k}) zt=k=0∑t(γλ)k∇v^(St−k,wt−k)

TD 误差的望远镜求和
G t λ − v ^ ( S t ) = ∑ k = 0 ∞ ( γ λ ) k δ t + k G_t^\lambda - \hat{v}(S_t) = \sum_{k=0}^{\infty} (\gamma\lambda)^k \delta_{t+k} Gtλ−v^(St)=k=0∑∞(γλ)kδt+k

证明过程

从后向视图的总更新量出发:
Δ w = ∑ t = 1 T α δ t z t = α ∑ t = 1 T δ t ∑ k = 0 t ( γ λ ) k ∇ v ^ ( S t − k ) \Delta \mathbf{w} = \sum_{t=1}^{T} \alpha \delta_t \mathbf{z}t = \alpha \sum{t=1}^{T} \delta_t \sum_{k=0}^{t} (\gamma\lambda)^k \nabla \hat{v}(S_{t-k}) Δw=t=1∑Tαδtzt=αt=1∑Tδtk=0∑t(γλ)k∇v^(St−k)

交换求和顺序(令 j = t − k j = t-k j=t−k):
Δ w = α ∑ j = 0 T ∇ v ^ ( S j ) ∑ t = j T ( γ λ ) t − j δ t = α ∑ j = 0 T [ G j λ − v ^ ( S j ) ] ∇ v ^ ( S j ) \Delta \mathbf{w} = \alpha \sum_{j=0}^{T} \nabla \hat{v}(S_j) \sum_{t=j}^{T} (\gamma\lambda)^{t-j} \delta_t = \alpha \sum_{j=0}^{T} \big[ G_j^\lambda - \hat{v}(S_j) \big] \nabla \hat{v}(S_j) Δw=αj=0∑T∇v^(Sj)t=j∑T(γλ)t−jδt=αj=0∑T[Gjλ−v^(Sj)]∇v^(Sj)

这正是前向视图的更新公式,证明两者在时间平均意义上完全等价。

5. 离线 vs 在线更新

离线更新(episodic)

权重在 episode 内保持不变 ,仅资格迹和 TD 误差计算使用固定权重:
w t ≡ w 0 ∀ t ∈ [ 0 , T ] \mathbf{w}_t \equiv \mathbf{w}_0 \quad \forall t \in [0,T] wt≡w0∀t∈[0,T]

收敛保证:严格收敛至 λ-误差最小化器。

在线更新(online)

权重每步实时更新,资格迹使用最新权重
z t = γ λ z t − 1 + ∇ v ^ ( S t , w t ) \mathbf{z}t = \gamma \lambda \mathbf{z}{t-1} + \nabla \hat{v}(S_t, \mathbf{w}_t) zt=γλzt−1+∇v^(St,wt)

实际表现:收敛速度更快,但理论分析更复杂。实践中几乎总是使用在线更新。

5 资格迹的三种实现方式

累积迹(Accumulating Trace)

适用于稀疏特征场景(如二进制特征),每次访问都累加:
e t ( i ) = { λ e t − 1 ( i ) + 1 若特征 i 在当前状态被激活 λ e t − 1 ( i ) 否则 e_t(i) = \begin{cases} \lambda e_{t-1}(i) + 1 & \text{若特征}i\text{在当前状态被激活} \\ \lambda e_{t-1}(i) & \text{否则} \end{cases} et(i)={λet−1(i)+1λet−1(i)若特征i在当前状态被激活否则

性质:同一特征在单步内可被多次激活,迹值可超过1。

替换迹(Replacing Trace)

适用于线性函数逼近,避免迹值无界增长:
e t ( i ) = { 1 若特征 i 在当前状态被激活 λ e t − 1 ( i ) 否则 e_t(i) = \begin{cases} 1 & \text{若特征}i\text{在当前状态被激活} \\ \lambda e_{t-1}(i) & \text{否则} \end{cases} et(i)={1λet−1(i)若特征i在当前状态被激活否则

性质:每次访问将迹重置为1,而非累积。

荷兰迹(Dutch Trace)

前两种的凸组合,在实践中更稳定:
e t ( i ) = ( 1 − α γ λ ) λ e t − 1 ( i ) + ∇ i v ^ ( S t ) e_t(i) = (1-\alpha\gamma\lambda)\lambda e_{t-1}(i) + \nabla_i \hat{v}(S_t) et(i)=(1−αγλ)λet−1(i)+∇iv^(St)

6. 资格迹版本的 Sarsa(λ) 与 Q(λ)

Sarsa(λ)(on-policy)

动作价值函数 q ^ ( S t , A t ) \hat{q}(S_t, A_t) q^(St,At) 的 TD 误差:
δ t = R t + 1 + γ q ^ ( S t + 1 , A t + 1 ) − q ^ ( S t , A t ) \delta_t = R_{t+1} + \gamma \hat{q}(S_{t+1}, A_{t+1}) - \hat{q}(S_t, A_t) δt=Rt+1+γq^(St+1,At+1)−q^(St,At)

状态-动作资格迹
z t = γ λ z t − 1 + ∇ q ^ ( S t , A t ) \mathbf{z}t = \gamma \lambda \mathbf{z}{t-1} + \nabla \hat{q}(S_t, A_t) zt=γλzt−1+∇q^(St,At)

Watkins' Q(λ)(off-policy)

资格迹仅在执行贪心动作 时累积,否则重置:
z t = { γ λ z t − 1 + ∇ q ^ ( S t , A t ) if A t = arg ⁡ max ⁡ a q ^ ( S t , a ) 0 otherwise \mathbf{z}t = \begin{cases} \gamma \lambda \mathbf{z}{t-1} + \nabla \hat{q}(S_t, A_t) & \text{if } A_t = \arg\max_a \hat{q}(S_t,a) \\ \mathbf{0} & \text{otherwise} \end{cases} zt={γλzt−1+∇q^(St,At)0if At=argmaxaq^(St,a)otherwise

7. 关键公式总结表

算法 TD 误差 δ t \delta_t δt 资格迹 z t \mathbf{z}_t zt 权重更新
TD(λ) R t + 1 + γ v ^ ( S t + 1 ) − v ^ ( S t ) R_{t+1} + \gamma \hat{v}(S_{t+1}) - \hat{v}(S_t) Rt+1+γv^(St+1)−v^(St) γ λ z t − 1 + ∇ v ^ ( S t ) \gamma \lambda \mathbf{z}_{t-1} + \nabla \hat{v}(S_t) γλzt−1+∇v^(St) w t + 1 = w t + α δ t z t \mathbf{w}_{t+1} = \mathbf{w}_t + \alpha \delta_t \mathbf{z}_t wt+1=wt+αδtzt
Sarsa(λ) R t + 1 + γ q ^ ( S t + 1 , A t + 1 ) − q ^ ( S t , A t ) R_{t+1} + \gamma \hat{q}(S_{t+1},A_{t+1}) - \hat{q}(S_t,A_t) Rt+1+γq^(St+1,At+1)−q^(St,At) γ λ z t − 1 + ∇ q ^ ( S t , A t ) \gamma \lambda \mathbf{z}_{t-1} + \nabla \hat{q}(S_t,A_t) γλzt−1+∇q^(St,At) 同上
Q(λ) 同上 贪心动作累积/重置 同上

收敛条件 : α \alpha α 需满足 Robbins-Monro 条件( ∑ α = ∞ \sum \alpha = \infty ∑α=∞, ∑ α 2 < ∞ \sum \alpha^2 < \infty ∑α2<∞),且特征向量线性无关。

相关推荐
用户5191495848452 小时前
深入解析Samba WINS命令注入漏洞(CVE-2025-10230) - 完整PoC实现
人工智能·aigc
走在路上的菜鸟3 小时前
Android学Flutter学习笔记 第一节 Android视角认知Flutter(View,intent,Async UI)
android·学习·flutter
mys55183 小时前
杨建允:AI搜索优化对演艺行业获客的影响
人工智能·geo·ai搜索优化·geo优化·ai引擎优化
企智小茶馆3 小时前
AI新闻2026年1月1日
人工智能
坚持学习前端日记3 小时前
个人运营小网站的最佳策略
java·学习·程序人生·职场和发展·创业创新
曾响铃3 小时前
昭陵六骏IP强势破圈,AI技术如何重塑文旅“基因与骨架”?
人工智能
编码小哥3 小时前
OpenCV GrabCut前景提取技术详解
人工智能·opencv·计算机视觉
崇山峻岭之间3 小时前
Matlab学习记录20
开发语言·学习·matlab
Coder_Boy_3 小时前
基于SpringAI企业级智能教学考试平台考试模块全业务闭环方案
java·人工智能·spring boot·aiops