褪去轨迹依赖:从Monte Carlo到Actor-Critic
强化学习(Reinforcement Learning, RL)作为人工智能的核心支柱之一,其算法设计经历了从简单高效到复杂稳定的演变过程。其中,一个关键的转变是从依赖完整轨迹的Monte Carlo (MC) 方法(如REINFORCE)到不依赖完整轨迹的Actor-Critic (AC) 架构。这一进化不仅降低了方差、提高了学习效率,还使RL适用于更广泛的场景,如长序列任务或连续控制。本文将深入剖析这一演变过程,结合数学基础和实现细节,帮助读者理解其背后的原理。如果你对PPO、CISPO等现代变体感兴趣,本文也将简要联系这些算法。
引言:为什么需要进化?
传统的策略梯度(Policy Gradient, PG)方法,如REINFORCE,依赖Monte Carlo采样来估计梯度。这要求算法等待整个“episode”(完整轨迹)结束才能更新参数,导致高方差和低效率,尤其在长episode或实时任务中。为了解决这些问题,RL社区引入了基线(baseline)、bootstrapping(引导机制)和Temporal Difference (TD) 学习,最终形成了Actor-Critic架构。这一进化路径可以概括为:
- Monte Carlo (MC):无偏差、高方差、依赖完整轨迹。
- 过渡:引入基线:减少方差,但仍依赖MC。
- Actor-Critic (AC):使用TD和bootstrapping,低方差、不依赖完整轨迹。
这一转变的核心是“从实际回报转向引导估计”,让算法能在episode中途进行更新。下面我们一步步拆解。
起点:Monte Carlo方法与REINFORCE
REINFORCE(REward Increment = Nonnegative Factor × Offset Reinforcement × Characteristic Eligibility)是传统PG的代表性算法,它完全基于Monte Carlo采样。MC方法的核心是使用实际采样轨迹来估计价值或梯度,而不引入任何引导。
REINFORCE的核心机制
REINFORCE通过最大化期望回报来优化策略 πθ(a∣s)\pi_\theta(a|s)πθ(a∣s)。其梯度估计公式为:
∇θJ(θ)=Eτ∼πθ[∑t=0T∇θlogπθ(at∣st)Gt], \nabla_\theta J(\theta) = \mathbb{E}_{\tau \sim \pi_\theta} \left[ \sum_{t=0}^T \nabla_\theta \log \pi_\theta(a_t | s_t) G_t \right], ∇θJ(θ)=Eτ∼πθ[t=0∑T∇θlogπθ(at∣st)Gt],
其中:
- τ=(s0,a0,r1,s1,…,sT)\tau = (s_0, a_0, r_1, s_1, \dots, s_T)τ=(s0,a0,r1,s1,…,sT) 是完整轨迹。
- Gt=∑k=tTγk−trk+1G_t = \sum_{k=t}^T \gamma^{k-t} r_{k+1}Gt=∑k=tTγk−trk+1 是从时刻 ttt 开始的折扣累积回报(γ\gammaγ 为折扣因子)。
依赖完整轨迹的原因:GtG_tGt 需要整个episode的实际奖励序列来计算。这使得REINFORCE适合离线学习(如游戏结束后的更新),但在在线或长任务中效率低下。
局限性:
- 高方差:GtG_tGt 来自随机采样,导致梯度噪声大。
- 更新延迟:必须等待episode结束,无法实时调整策略。
- 适用场景:短episode任务,如简单网格世界,但不适合复杂环境。
REINFORCE是传统PG的具体实现,PG泛指直接优化策略参数的方法族。这一阶段的算法纯净但原始,为后续改进奠定了基础。
第一步:引入基线减少方差
为了缓解MC的高方差问题,研究者引入了基线 b(st)b(s_t)b(st),这是一种不改变梯度期望但降低方差的技巧。REINFORCE with Baseline的更新公式变为:
∇θJ(θ)=Eτ∼πθ[∑t=0T∇θlogπθ(at∣st)(Gt−b(st))]. \nabla_\theta J(\theta) = \mathbb{E}_{\tau \sim \pi_\theta} \left[ \sum_{t=0}^T \nabla_\theta \log \pi_\theta(a_t | s_t) (G_t - b(s_t)) \right]. ∇θJ(θ)=Eτ∼πθ[t=0∑T∇θlogπθ(at∣st)(Gt−b(st))].
这里,At=Gt−b(st)A_t = G_t - b(s_t)At=Gt−b(st) 称为优势(advantage),表示动作相对于平均水平的优劣。
基线的实现
- 简单基线:使用平均回报(如所有 GtG_tGt 的均值)。
- 高级基线:参数化价值函数 Vϕ(st)V_\phi(s_t)Vϕ(st),通过最小化均方误差 (Gt−Vϕ(st))2(G_t - V_\phi(s_t))^2(Gt−Vϕ(st))2 来学习。
- 数学证明:基线不引入偏差,因为 E[Gt−b(st)]=0\mathbb{E}[G_t - b(s_t)] = 0E[Gt−b(st)]=0(在状态 sts_tst 下)。
进步:方差显著降低,使训练更稳定。但学习 VϕV_\phiVϕ 仍依赖MC采样 GtG_tGt,所以更新仍需完整轨迹。这一步是向Actor-Critic的桥梁:价值函数开始独立出来,作为“Critic”的雏形。
核心转变:Actor-Critic架构与Bootstrapping
Actor-Critic架构将策略优化分解为两个互补组件:
- Actor:策略 πθ(a∣s)\pi_\theta(a|s)πθ(a∣s),使用优势信号更新。
- Critic:价值函数(如 Vϕ(s)V_\phi(s)Vϕ(s) 或 Qϕ(s,a)Q_\phi(s,a)Qϕ(s,a)),提供低方差的回报估计。
关键创新:Bootstrapping。Critic不再用实际 GtG_tGt,而是用当前价值估计“引导”未来估计:
G^t=rt+1+γVϕ(st+1). \hat{G}_t = r_{t+1} + \gamma V_\phi(s_{t+1}). G^t=rt+1+γVϕ(st+1).
这允许在不完整轨迹上更新:只需观察单步转移 (st,at,rt+1,st+1)(s_t, a_t, r_{t+1}, s_{t+1})(st,at,rt+1,st+1),即可计算优势 At≈rt+1+γVϕ(st+1)−Vϕ(st)A_t \approx r_{t+1} + \gamma V_\phi(s_{t+1}) - V_\phi(s_t)At≈rt+1+γVϕ(st+1)−Vϕ(st)。
不依赖完整轨迹的实现
-
Actor更新:类似于REINFORCE,但用引导优势:
∇θJ(θ)=E[∇θlogπθ(at∣st)At]. \nabla_\theta J(\theta) = \mathbb{E} \left[ \nabla_\theta \log \pi_\theta(a_t | s_t) A_t \right]. ∇θJ(θ)=E[∇θlogπθ(at∣st)At].
-
Critic更新:见下一节的TD学习。
-
优势:
- 在线学习:每步后更新Actor和Critic,无需等待episode结束。
- 低方差:Bootstrapping使用Critic的稳定估计替换 noisy 的MC回报。
- 适用性:适合连续任务(如机器人控制),或长序列(如自然语言生成)。
示例算法:
- Vanilla AC:基本形式。
- A2C/A3C:使用优势函数,A3C添加异步并行以加速。
这一转变使RL从“全采样”转向“部分引导”,显著提高了效率。
Critic的更新:Temporal Difference (TD) 学习
Critic的进化是整个过程的核心,它从MC的实际回报转向TD的引导估计。TD学习介于MC(无偏差、高方差)和动态规划(低方差、有偏差)之间。
TD学习的原理
TD计算TD-error(时序差分误差):
δt=rt+1+γVϕ(st+1)−Vϕ(st). \delta_t = r_{t+1} + \gamma V_\phi(s_{t+1}) - V_\phi(s_t). δt=rt+1+γVϕ(st+1)−Vϕ(st).
这测量了当前估计与“一步引导”目标的差异。
-
单步TD(0)更新:
Vϕ(st)←Vϕ(st)+αδt, V_\phi(s_t) \leftarrow V_\phi(s_t) + \alpha \delta_t, Vϕ(st)←Vϕ(st)+αδt,
其中 α\alphaα 为学习率。
-
多步TD(λ):使用资格迹(eligibility trace)结合n步回报:
Gt(λ)=(1−λ)∑n=1∞λn−1Gt(n), G_t^{(\lambda)} = (1-\lambda) \sum_{n=1}^\infty \lambda^{n-1} G_t^{(n)}, Gt(λ)=(1−λ)n=1∑∞λn−1Gt(n),
然后 δt=Gt(λ)−Vϕ(st)\delta_t = G_t^{(\lambda)} - V_\phi(s_t)δt=Gt(λ)−Vϕ(st)。λ=0\lambda = 0λ=0 纯TD,λ=1\lambda = 1λ=1 纯MC。
为什么不需完整轨迹:TD只需当前转移,而非整个 GtG_tGt。这实现了在线更新,并通过bootstrapping传播价值估计。
在AC中,TD-error直接作为优势信号:At≈δtA_t \approx \delta_tAt≈δt。高级变体如Generalized Advantage Estimation (GAE) 在PPO中使用:
A^t=∑l=0∞(γλ)lδt+l, \hat{A}_t = \sum_{l=0}^\infty (\gamma \lambda)^l \delta_{t+l}, A^t=l=0∑∞(γλ)lδt+l,
平衡了MC和TD的权衡。
整体进化路径与现代应用
-
路径总结:REINFORCE (MC PG) → REINFORCE with Baseline (仍MC) → Actor-Critic (TD-based) → 高级如PPO/TRPO (添加信任区域)。
-
联系现代算法:
- PPO:在AC框架下,使用GAE估计优势,通过裁剪概率比率稳定更新。不严格依赖完整轨迹,支持mini-batch。
- CISPO:基于REINFORCE,但通过裁剪重要性采样权重适应长序列;可扩展到AC-like设置,使用组相对优势减少价值模型依赖。
方差-偏差权衡:MC无偏差但高方差;TD有偏差但低方差。实践证明,TD/AC在大多数任务中更优。
结论:启示与未来
从MC到AC的进化体现了RL的核心追求:平衡准确性与效率。这一转变不仅加速了学习,还开启了off-policy、multi-agent等新方向。对于从业者,建议从REINFORCE代码入手,逐步添加Critic和TD模块。未来,随着大型模型的兴起(如CISPO针对推理任务),这一进化将继续演进,融入更多混合机制。