基于“蘑菇书”的强化学习知识点(七):什么是时序差分方法
什么是时序差分方法
什么是时序差分方法
摘要
本系列知识点讲解基于蘑菇书EasyRL中的内容进行详细的疑难点分析!具体内容请阅读蘑菇书EasyRL!
1. 强化学习中的时序差分方法(Temporal Difference, TD)
(1)什么是强化学习中的时序差分方法?
时序差分(Temporal Difference, TD)方法是一类用于 估计值函数 的强化学习算法。它结合了动态规划(Dynamic Programming, DP) 和 蒙特卡洛方法(Monte Carlo, MC) 的优点,同时不需要完整的回合数据即可进行学习。
在强化学习中,我们的目标是找到最优策略 π ∗ \pi^* π∗,使得智能体在与环境交互的过程中获得最大的累积奖励。而在策略评估过程中,我们通常需要估计 状态值函数 或 状态-动作值函数:
- 状态值函数(State Value Function)
V π ( s ) = E π [ ∑ t = 0 ∞ γ t R t + 1 ∣ S 0 = s ] V^\pi(s) = \mathbb{E}_\pi \left[ \sum_{t=0}^{\infty} \gamma^t R_{t+1} \mid S_0 = s \right] Vπ(s)=Eπ[t=0∑∞γtRt+1∣S0=s] - 状态-动作值函数(State-Action Value Function)
Q π ( s , a ) = E π [ ∑ t = 0 ∞ γ t R t + 1 ∣ S 0 = s , A 0 = a ] Q^\pi(s, a) = \mathbb{E}_\pi \left[ \sum_{t=0}^{\infty} \gamma^t R_{t+1} \mid S_0 = s, A_0 = a \right] Qπ(s,a)=Eπ[t=0∑∞γtRt+1∣S0=s,A0=a]
其中:
- S t S_t St 是时间步 t t t 时智能体所处的状态
- A t A_t At 是时间步 t t t 时采取的动作
- R t + 1 R_{t+1} Rt+1 是采取动作后的即时奖励
- γ ∈ [ 0 , 1 ] \gamma \in [0,1] γ∈[0,1] 是折扣因子(表示未来奖励的重要程度)
(2)蒙特卡洛方法 vs. 时序差分方法
蒙特卡洛方法(Monte Carlo, MC)
蒙特卡洛方法通过 完整的一次轨迹 来计算值函数的估计值。公式如下:
V ( S t ) ← V ( S t ) + α ( G t − V ( S t ) ) V(S_t) \leftarrow V(S_t) + \alpha \left( G_t - V(S_t) \right) V(St)←V(St)+α(Gt−V(St))
其中:
- G t = R t + 1 + γ R t + 2 + γ 2 R t + 3 + … G_t = R_{t+1} + \gamma R_{t+2} + \gamma^2 R_{t+3} + \dots Gt=Rt+1+γRt+2+γ2Rt+3+… 是从时间步 t t t 开始的累积奖励(回报)
- α \alpha α 是学习率
但是,蒙特卡洛方法的缺点是:
- 必须等到一整个回合结束后 才能更新值函数,无法用于非终止状态的学习。
- 高方差,因为它依赖于完整轨迹,不同的采样会产生较大的波动。
时序差分方法(Temporal Difference, TD)
时序差分方法是一种 不需要等待整个回合结束就能更新值函数 的方法。它的核心思想是:
通过当前状态的估计值 来更新自身,而不依赖完整的回报。
TD 方法的更新公式为:
V ( S t ) ← V ( S t ) + α ( R t + 1 + γ V ( S t + 1 ) − V ( S t ) ) V(S_t) \leftarrow V(S_t) + \alpha \left( R_{t+1} + \gamma V(S_{t+1}) - V(S_t) \right) V(St)←V(St)+α(Rt+1+γV(St+1)−V(St))
其中:
- R t + 1 R_{t+1} Rt+1 是下一步的即时奖励
- V ( S t + 1 ) V(S_{t+1}) V(St+1) 是下一个状态的值函数估计
- R t + 1 + γ V ( S t + 1 ) R_{t+1} + \gamma V(S_{t+1}) Rt+1+γV(St+1) 这一项称为 TD 目标(TD Target)
- R t + 1 + γ V ( S t + 1 ) − V ( S t ) R_{t+1} + \gamma V(S_{t+1}) - V(S_t) Rt+1+γV(St+1)−V(St) 这一项称为 TD 误差(TD Error)
相比蒙特卡洛方法,TD 方法的优点是:
- 可以在线更新,不需要等待回合结束
- 方差较小,因为它是基于一步预测,而不是整个回报
举例:
假设有一个简单的回合:
- S 0 = A S_0 = A S0=A
- 采取动作 A 0 A_0 A0,到达 S 1 = B S_1 = B S1=B,得到奖励 R 1 = 10 R_1 = 10 R1=10
- 采取动作 A 1 A_1 A1,到达 S 2 = C S_2 = C S2=C,得到奖励 R 2 = 5 R_2 = 5 R2=5
- 终止状态, G 0 = 10 + 5 = 15 G_0 = 10 + 5 = 15 G0=10+5=15
在 蒙特卡洛方法 中:
- 只有当整个回合结束后,才能使用 G 0 = 15 G_0 = 15 G0=15 来更新 V ( A ) V(A) V(A)
在 时序差分方法 中:
- 可以直接在 t = 0 t=0 t=0 处更新 V ( A ) V(A) V(A):
V ( A ) ← V ( A ) + α ( 10 + γ V ( B ) − V ( A ) ) V(A) \leftarrow V(A) + \alpha (10 + \gamma V(B) - V(A)) V(A)←V(A)+α(10+γV(B)−V(A)) - 这使得学习过程更高效,适用于持续任务(continuing tasks)。
(3)TD(0)、TD(λ) 和 Q-learning
TD(0)
- 只使用当前时间步的 TD 误差进行更新,直接依赖 V ( S t + 1 ) V(S_{t+1}) V(St+1)。
- 公式:
V ( S t ) ← V ( S t ) + α ( R t + 1 + γ V ( S t + 1 ) − V ( S t ) ) V(S_t) \leftarrow V(S_t) + \alpha \left( R_{t+1} + \gamma V(S_{t+1}) - V(S_t) \right) V(St)←V(St)+α(Rt+1+γV(St+1)−V(St))
TD(λ)
- 结合 TD(0) 和蒙特卡洛方法,使用资格迹(Eligibility Trace) 来权衡不同时间步的信息。
Q-learning
- 时序差分方法的一种特殊形式,更新的是 状态-动作值函数 Q ( s , a ) Q(s,a) Q(s,a)。
- 公式:
Q ( S t , A t ) ← Q ( S t , A t ) + α ( R t + 1 + γ max a Q ( S t + 1 , a ) − Q ( S t , A t ) ) Q(S_t, A_t) \leftarrow Q(S_t, A_t) + \alpha \left( R_{t+1} + \gamma \max_{a} Q(S_{t+1}, a) - Q(S_t, A_t) \right) Q(St,At)←Q(St,At)+α(Rt+1+γamaxQ(St+1,a)−Q(St,At)) - 适用于最优策略学习。
2. 自举(Bootstrapping)
自举(Bootstrapping) 是强化学习中的一个核心概念,指的是:
使用当前的估计值来更新自身,而不是等待真实值。
在时序差分方法中,我们通过 V ( S t + 1 ) V(S_{t+1}) V(St+1) 来估计 V ( S t ) V(S_t) V(St),但 V ( S t + 1 ) V(S_{t+1}) V(St+1) 也是一个估计值,这就是自举的核心。
(1)为什么要用自举?
-
减少计算开销
- 直接计算真实回报 G t G_t Gt 可能很耗时,而 TD 方法可以 逐步更新,避免等待整个轨迹完成。
-
可以处理无终止任务
- 蒙特卡洛方法必须等到回合结束,而自举方法可以在非终止状态更新,使得强化学习可以用于持续任务。
(2)自举 vs. 非自举
| 方法 | 是否使用自举 | 依赖完整回报 |
|---|---|---|
| 蒙特卡洛方法 | ❌ 不自举 | ✅ 需要完整回报 |
| 时序差分方法(TD) | ✅ 自举 | ❌ 只依赖局部回报 |
| 动态规划 | ✅ 自举 | ❌ 依赖状态转移模型 |
总结
- 时序差分(TD)方法 是强化学习中的一种策略评估方法,结合了动态规划和蒙特卡洛方法的优点。
- TD 方法不需要等待回合结束,而是使用 V ( S t + 1 ) V(S_{t+1}) V(St+1) 作为估计值进行更新,这就是自举(Bootstrapping)。
- Q-learning 是一种基于时序差分的强化学习方法,用于学习最优策略。
- 自举 使得 TD 方法比蒙特卡洛方法更高效,适用于在线学习和持续任务。
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐

所有评论(0)