本内容暂时为 PPT 转述,后续会进行修编
n 步自举法 (n-step Bootstrapping) 概述#
引入:在 TD 和 MC 之间 (Page 2-4)#
- 回顾 (Page 2):
- Sarsa (同轨 TD):学习动作价值函数 Qπ(s,a)。其 TD 目标是基于下一步的实际奖励和动作价值估计:
yt=Rt+1+γQπ(St+1,At+1)
(注意:PPT Page 2 的 rt 应该是指 St,At 之后获得的奖励,标准记法是 Rt+1。Q 函数下标 π 表明是针对策略 π 的价值)。
- Q-Learning (离轨 TD):学习最优动作价值函数 Q\*(s,a)。其 TD 目标是基于下一步的实际奖励和最优后续价值估计:
yt=Rt+1+γa′maxQ∗(St+1,a′)
(同样,PPT Page 2 的 rt 应为 Rt+1)
- 自举法的谱系 (Spectrum of Bootstrapping Methods) (Page 3-4):
- 强化学习方法可以看作是在一个谱系上,一端是蒙特卡洛 (Monte Carlo, MC) 方法,另一端是一步时序差分 (One-step Temporal Difference, TD) 方法(如 Sarsa(0), Q-learning(0), TD(0))。
- MC:不使用自举 (Bootstrapping)。更新依赖于完整的回报 Gt(从当前状态直到 épisode 结束的所有奖励的折扣和)。只有在 épisode 结束后才能进行更新。方差较高,但无偏(如果样本足够)。
- 一步 TD:完全依赖自举。更新依赖于下一步的奖励 Rt+1 和下一步状态的价值估计 V(St+1) 或 Q(St+1,At+1) 或 maxa′Q(St+1,a′)。每一步之后都可以立即更新。方差较低,但有偏(因为依赖于可能不准确的价值估计)。
- n 步自举法:介于两者之间。它向前看 n 步 的实际奖励,然后使用第 n 步之后的状态的价值估计来进行自举。
- 当 n=1 时,n 步法退化为一步 TD 方法。
- 当 n=∞ 时(或 n 大于等于当前状态到 épisode 结束的步数时),n 步法等价于 MC 方法。
- 动机 (Page 4):通过调整步数 n,可以在偏差和方差之间进行权衡。通常,选择一个中间的 n 值(既不是 1 也不是 ∞)可以获得比纯 TD 或纯 MC 更好的性能。
n 步 TD 预测 (n-step TD Prediction)#
目标:在遵循策略 π 的情况下,估计状态价值函数 Vπ。
- 回顾目标 (Page 5):
- MC 目标:完整回报 Gt≐Rt+1+γRt+2+⋯+γT−t−1RT
- 一步 TD 目标 (TD(0)):Gt:t+1≐Rt+1+γVt(St+1) (Vt 表示 t 时刻的价值估计)
- n 步回报 (n-step Return) Gt:t+n (Page 6):
- 定义:从时间 t+1 开始,累积 n 步的折扣奖励,并加上 n 步之后的状态 St+n 的折扣价值估计。
Gt:t+n≐Rt+1+γRt+2+⋯+γn−1Rt+n+γnVt+n−1(St+n)
- 解释:这个回报混合了 n 步的实际奖励和第 n 步的估计未来价值。Vt+n−1 指的是在时间 t+n 进行更新时,可用的(即 t+n−1 时刻或之前的)对 V(St+n) 的估计值。
- 终止情况:如果在 n 步内(即在时间 t+n 或之前)épisode 终止(到达终止状态 ST),则 n 步回报就是从 t 开始的完整回报 Gt。
Gt:t+n≐Gt(如果 t+n≥T)
这保证了当 n 足够大时,n 步回报等于 MC 回报。
- n 步 TD 更新规则 (Page 7):
- 使用 n 步回报 Gt:t+n 作为 TD 目标来更新状态 St 的价值。
Vt+n(St)←Vt+n−1(St)+α[Gt:t+n−Vt+n−1(St)]
- 关键点:对状态 St 的价值更新发生在时间 t+n,也就是在观察到 Rt+n 和 St+n 之后。这与一步 TD 不同,一步 TD 在 t+1 时刻就更新 V(St)。这意味着 n 步法需要存储过去 n 步的状态和奖励。
- 算法:n 步 TD 预测 (Page 8):
算法参数: 步长 α ∈ (0, 1], 步数 n ≥ 1
初始化 V(s) 任意, 对所有 s ∈ S
对 每个 episode 循环:
初始化并存储 S_0 ≠ 终止状态
存储 R_0 = 0 // 实际不会用到,占位符
T ← ∞
对 t = 0, 1, 2, ... 循环:
如果 t < T:
采取动作 A_t (根据策略 π, 对于 S_t)
观察并存储下一奖励 R_{t+1} 和下一状态 S_{t+1}
如果 S_{t+1} 是终止状态:
T ← t + 1
τ ← t - n + 1 (τ 是正在被更新的时间步)
如果 τ ≥ 0:
计算 n 步回报 G:
G ← Σ_{i=τ+1}^{min(τ+n, T)} γ^{i-τ-1} R_i
如果 τ + n < T:
G ← G + γ^n V(S_{τ+n}) // 使用 τ+n 时刻的 V 估计
// 更新状态 S_τ 的价值
V(S_τ) ← V(S_τ) + α [G - V(S_τ)]
如果 τ = T - 1:
终止循环 (épisode 结束)
plaintext
- 解释:算法维护一个存储窗口(或队列)来保存最近的状态和奖励。当时间 t 前进时,最早的状态 Sτ(其中 τ=t−n+1)的更新所需的所有信息 (Rτ+1,…,Rmin(τ+n,T) 以及 Sτ+n(如果 τ+n\<T))都已经获得,于是可以计算 Gτ:τ+n 并更新 V(Sτ)。
- 误差减少性质 (Error Reduction Property) (Page 9):
- n 步回报的期望值与真实价值 vπ(s) 之间的差距,其上界与 n 步之后价值估计的最大误差有关,并且以 γn 的速度衰减。
smax∣Eπ[Gt:t+n∣St=s]−vπ(s)∣≤γns′max∣Vt+n−1(s′)−vπ(s′)∣
- 含义:如果价值函数的估计误差是有界的,那么 n 步回报的期望值会比一步 TD 目标(n=1)更接近真实价值 vπ(s)(因为 γn 随着 n 增大而减小)。这为 n 步法通常优于一步 TD 提供了一定的理论依据。
n 步 Sarsa (用于同轨策略控制 On-policy Control)#
目标:学习动作价值函数 Qπ,并根据 Qπ 改进策略 π (通常是 ϵ-greedy)。
-
回顾目标 (Page 10):
- MC 目标: Gt (用于更新 Q(St,At))
- Sarsa(0) 目标: Gt:t+1=Rt+1+γQ(St+1,At+1)
-
n 步 Sarsa 回报 (Gt:t+n) (Page 11):
- 定义:类似于 n 步 TD 回报,但最后使用动作价值估计 Q。
Gt:t+n≐Rt+1+γRt+2+⋯+γn−1Rt+n+γnQt+n−1(St+n,At+n)
- 终止情况:如果 t+n≥T,则 Gt:t+n≐Gt。
-
n 步 Sarsa 更新规则 (Page 12):
- 使用 n 步 Sarsa 回报作为目标来更新状态-动作对 (St,At) 的价值。
Qt+n(St,At)←Qt+n−1(St,At)+α[Gt:t+n−Qt+n−1(St,At)]
- 更新时机:同样,更新发生在时间 t+n。
-
算法:n 步 Sarsa (Page 13):
算法参数: 步长 α ∈ (0, 1], 步数 n ≥ 1, 小的 ε > 0
初始化 Q(s, a) 任意, 对所有 s ∈ S⁺, a ∈ A(s), Q(终止状态, ·) = 0
对 每个 episode 循环:
初始化并存储 S_0 ≠ 终止状态
使用从 Q 推导的策略 (例如 ε-greedy) 选择并存储 A_0
存储 R_0 = 0, A_{-1} = 0 // 占位符
T ← ∞
对 t = 0, 1, 2, ... 循环:
如果 t < T:
执行动作 A_t
观察并存储下一奖励 R_{t+1} 和下一状态 S_{t+1}
如果 S_{t+1} 是终止状态:
T ← t + 1
否则:
使用从 Q 推导的策略 (例如 ε-greedy, 基于 Q_{t+n-1} 或 Q_t) 选择并存储 A_{t+1}
τ ← t - n + 1 (τ 是正在被更新的时间步)
如果 τ ≥ 0:
计算 n 步回报 G:
G ← Σ_{i=τ+1}^{min(τ+n, T)} γ^{i-τ-1} R_i
如果 τ + n < T:
G ← G + γ^n Q(S_{τ+n}, A_{τ+n}) // 使用 Q_{t+n-1} 的估计
// 更新状态-动作对 (S_τ, A_τ) 的价值
Q(S_τ, A_τ) ← Q(S_τ, A_τ) + α [G - Q(S_τ, A_τ)]
如果 τ = T - 1:
终止循环 (épisode 结束)
plaintext
- 解释:与 n 步 TD 类似,但存储的是 (St,At,Rt+1) 序列。更新 Q(Sτ,Aτ) 需要直到 Aτ+n 被选定(如果是 τ+n<T 的情况)。
-
n 步期望 Sarsa (n-step Expected Sarsa) (Page 14):
- 思想:为了降低 n 步 Sarsa 的方差(因为它依赖于 At+n 这个随机样本),在最后一步使用期望值代替采样值。
- n 步期望 Sarsa 回报 (Gt:t+n) (Page 14 公式):
Gt:t+n≐Rt+1+⋯+γn−1Rt+n+γnQˉt+n−1(St+n)
其中 Qˉ∗t+n−1(S∗t+n)≐∑aπ(a∣St+n)Qt+n−1(St+n,a) 是在状态 St+n 处根据当前策略 π 的期望动作价值。
- 更新规则:
Qt+n(St,At)←Qt+n−1(St,At)+α[Gt:t+n−Qt+n−1(St,At)]
- 优点:通常比 n 步 Sarsa 方差更小,计算量稍大(需要计算期望)。
n 步离轨策略学习 (n-step Off-policy Learning)#
目标:使用由行为策略 μ 生成的数据 St,At,Rt+1,… 来学习目标策略 π 的价值函数 (Vπ 或 Qπ)。
方法一:使用重要性采样 (Importance Sampling, IS) (Page 15-20)#
- 挑战 (Page 15):直接使用行为策略 μ 产生的 n 步回报来更新目标策略 π 的价值是有偏的,因为奖励和后续状态的分布不同。
- 解决方案:重要性采样 (Page 16):通过乘以一个修正因子——重要性采样率 (Importance Sampling Ratio) ρ——来调整回报的期望值。
- n 步重要性采样率 (ρt:h) (Page 16):从时间 t+1 到时间 h 之间,目标策略 π 选择实际发生的动作序列 At+1,…,Ah 的概率 与 行为策略 μ 选择同样序列的概率 之比。
ρt:h≐k=t+1∏min(h,T−1)μ(Ak∣Sk)π(Ak∣Sk)
(注意指数上界是 min(h,T−1),因为 AT 没有定义)。
- n 步离轨 TD 更新 (Page 17):用 IS 比率修正 n 步 TD 回报。
Vt+n(St)←Vt+n−1(St)+αρt:t+n−1[Gt:t+n−Vt+n−1(St)]
- 注意 ρ 的范围:IS 比率只乘到 ρt:t+n−1,即 At+1 到 At+n−1。因为 Gt:t+n 仅依赖于这些动作来产生 Rt+1,…,Rt+n 和 St+n。而 V(St+n) 是我们对目标策略价值的估计,与 At+n 如何选择无关。
- n 步离轨 Sarsa 更新 (Page 18):用 IS 比率修正 n 步 Sarsa 回报。
Qt+n(St,At)←Qt+n−1(St,At)+αρt+1:t+n[Gt:t+n−Qt+n−1(St,At)]
- 注意 ρ 的范围:这里 IS 比率乘到 ρt+1:t+n,包含了 At+n。因为 Gt:t+n 中的 Q(St+n,At+n) 项依赖于实际采取的动作 At+n。我们需要校正从 St+1 到 At+n 这一整段路径的概率。
- 重要性采样的问题 (Page 19):
- 高方差:当 n 很大,或者 π 和 μ 相差很大时,ρ 的乘积可能变得非常大或非常接近于 0,导致更新极其不稳定(方差爆炸)。
- 对 μ 的要求:行为策略 μ 必须覆盖目标策略 π,即 π(a∣s)0⟹μ(a∣s)0。
- 算法:带重要性采样的 n 步离轨 TD (Page 20):给出了预测 Vπ 的伪代码,展示了如何计算和使用 ρt:t+n−1。
方法二:n 步树回溯算法 (n-step Tree Backup, TB) (Page 21-25)#
- 动机 (Page 21):实现离轨学习,同时避免重要性采样带来的高方差问题。
- 核心思想 (Page 21 图示):不使用 IS 比率,而是通过对目标策略 π 下未被选择的动作进行期望回溯来构造目标。它结合了 Q-learning 的 max (隐式在目标策略 π 中,如果 π 是贪心的话) 和 Expected Sarsa 的期望思想,并扩展到 n 步。
- 回顾一步情况:
- Expected Sarsa (on-policy): Rt+1+γ∑aπ(a∣St+1)Q(St+1,a)
- Tree Backup (1-step, off-policy): 与 Expected Sarsa 形式相同,但 π 是目标策略,而数据来自 μ。
- n 步树回溯回报 (Gt:t+n(TB)) (Page 22-23):
- 递归定义 (更容易理解):
- 基础 (k=t+n−1):
Gt+n−1:t+n(TB)=Rt+n+γa′∑π(a′∣St+n)Qt+n−1(St+n,a′)
(这正是期望 Sarsa 的目标)
- 递归步骤 (对 k 从 t+n−2 向下到 t):
Gk:t+n(TB)=Rk+1+γa=Ak+1∑π(a∣Sk+1)Qt+n−1(Sk+1,a)+γπ(Ak+1∣Sk+1)Gk+1:t+n(TB)
- 解释 (Page 22, 2-step case):在 Sk+1 处,我们观察到了实际执行的动作 Ak+1 (由 μ 产生) 和奖励 Rk+2。目标策略 π 会以 π(Ak+1∣Sk+1) 的概率选择 Ak+1,这种情况下,后续的回报由 Gk+1:t+n(TB) 给出。对于所有其他未被选择的动作 a=Ak+1,目标策略 π 会以 π(a∣Sk+1) 的概率选择它们,由于我们没有实际观察到这些路径,我们使用它们当前的 Q 值估计 Qt+n−1(Sk+1,a) 作为这些分支的价值。这两部分加权求和构成了从 Sk+1 开始的期望回报(根据 π)。最后加上实际获得的 Rk+1。
- 终止情况:如果 k+1≥T,则 Gk:t+n(TB)=Rk+1。
- n 步树回溯更新规则 (Page 24):
Qt+n(St,At)←Qt+n−1(St,At)+α[Gt:t+n(TB)−Qt+n−1(St,At)]
- 算法:n 步树回溯 (Page 25):给出了计算 G(TB) 并更新 Q 值的伪代码。
- 优点:
- 实现了离轨学习。
- 没有使用重要性采样,避免了高方差问题。
- 只需要目标策略 π 的信息,不需要行为策略 μ 的信息(μ 仅用于生成数据)。
统一视角:n 步 Q(σ) (Page 26-29)#
- 动机 (Page 26):提供一个统一的框架,可以涵盖 n 步 Sarsa、n 步 Expected Sarsa/Tree Backup 以及它们之间的插值。
- 参数 σ (Page 27):引入一个状态(或状态-动作)相关的参数 σt∈[0,1] 来控制在每一步是进行采样 (σt=1) 还是期望 (σt=0)。
- σ=1: 对应 Sarsa (采样下一个动作 At+1)。
- σ=0: 对应 Expected Sarsa 或 Tree Backup (对下一个动作求期望)。
- n 步 Q(σ) 回报 (Gt:h(σ)) (Page 28 公式):
这个回报的定义比较复杂,似乎是混合了重要性采样和期望操作。
Gt:h(σ)≐Rt+1+γ(σt+1ρt+1+(1−σt+1)π(At+1∣St+1))(Gt+1:h(σ)−Qh−1(St+1,At+1))+γVˉh−1(St+1)
其中,
- h=t+n
- Vˉ∗h−1(s)≐∑aπ(a∣s)Q∗h−1(s,a) (状态的期望价值)
- ρt+1=μ(At+1∣St+1)π(At+1∣St+1) (一步 IS 比率)
- 基础: Gh:h(σ)≐Qh−1(Sh,Ah) (注意这里使用的是 Q(Sh,Ah) 而不是期望 Vˉ(Sh))
- n 步 Q(σ) 更新 (Page 28):
Qt+n(St,At)←Qt+n−1(St,At)+α[Gt:t+n(σ)−Qt+n−1(St,At)]
- 特殊情况 (Page 29):
- 当所有 σk=1 (始终采样):这似乎对应于带 IS 的 n 步 Sarsa。
- 当所有 σk=0 (始终期望):这对应于 n 步 Tree Backup 算法。
- 意义:Q(σ) 提供了一个灵活的框架,允许在采样和期望之间进行平滑过渡,可能找到比纯粹方法更好的中间点。
总结 (Page 30)#
- n 步方法是 TD 和 MC 方法的推广,通过步数 n 控制自举的程度。
- n=1 对应一步 TD, n=∞ 对应 MC。
- 中间的 n 值 通常表现最好,能在偏差和方差之间取得更好的平衡。
- 适用于连续任务和分幕式任务。
- 计算成本:需要存储最近 n 步的转移信息(状态、动作、奖励),学习更新会延迟 n 步。但每步计算量相对均匀。
- 易于扩展:这些思想可以进一步推广到更复杂的方法,如资格迹 (Eligibility Traces, 结合不同 n 的回报) 和更通用的 Q(σ) 框架。