【LLM 对齐系列】(五):Actor-Critic 架构与优势函数¶
在上一篇文章中,我们介绍了 REINFORCE 算法——策略梯度定理的最简实现。REINFORCE 使用蒙特卡洛回报 \(G_t\) 作为学习信号,因此通常需要先采样完整轨迹,才能在时刻 \(t\) 得到对应的回报估计,这会带来较高的采样成本和较大的方差。
针对 REINFORCE 需要完整轨迹才能得到回报信号、从而带来信号延迟和高方差的问题,Actor-Critic 的核心改进是引入 Critic(价值函数近似器),用模型去估计 \(V_\pi(s)\) 或 \(Q_\pi(s,a)\),并结合一步回报对价值进行递推估计,从而提供更及时的学习信号,而不必总是等到整条轨迹结束。进一步地,为了降低策略梯度方差,可以在更新中引入基线(Baseline);当使用价值函数 \(V(s)\) 作为基线并以优势函数进行更新时,就得到 Advantage Actor-Critic(A2C)。
本文作为 LLM 对齐系列的第五篇,将介绍价值函数、优势函数以及 Actor-Critic 架构的工作原理。这些概念是对 REINFORCE 的直接改进,更是理解 TRPO、PPO 等高级算法的必要基础。

回顾:REINFORCE 的高方差问题¶
让我们先回顾一下 REINFORCE 算法的梯度估计公式:
其中 \(G_t^{(i)}=\sum_{k=t}^{T-1}\gamma^{k-t}r_k^{(i)}\) 是从时刻 \(t\) 开始的回报。
这个公式的问题在于:\(G_t\) 的方差很大。即使在相同的状态 \(s_t\) 采取相同的动作 \(a_t\),由于后续轨迹的随机性,最终得到的回报 \(G_t\) 可能差异很大。这种高方差会导致:
- 梯度估计不准确,参数更新方向不稳定;
- 需要大量样本才能得到可靠的估计;
- 训练过程震荡,收敛缓慢。
举个例子:你在某次考试中使用了一种答题策略。第一次使用时,恰好考到的都是你熟悉的题型,最终得了 100 分;第二次使用时,考到的都是偏题难题,只得了 20 分。如果直接用这些分数来评估你的答题策略,结论会非常不稳定。这就是为什么我们需要引入基线:用相对表现代替绝对分数。
引入基线:保持无偏的梯度估计¶
一个自然的想法是:能否引入一个参考值,让我们关注“比平均水平好多少”,而不是绝对的回报值?
数学上,我们可以在梯度公式中减去一个基线 \(b(s_t)\):
关键问题:这样做会改变梯度的期望值(引入偏差)吗?
证明目标:为了证明引入基线是无偏(unbiased)的,我们只需证明被减去的那一项的期望为零即可。也就是:
如果这个等式成立,那么引入基线后的梯度期望就等于原始梯度期望:
下面让我们逐步证明这一点。对于任意不依赖动作 \(a\) 的基线函数 \(b(s)\),我们有:
第一步:展开轨迹期望
首先,我们将对轨迹 \(\tau\) 的期望展开为对状态 \(s_t\) 和动作 \(a_t\) 的期望。根据期望的定义,这等价于对所有可能的 \((s_t, a_t)\) 对进行加权求和:
这一步运用了期望的展开:在给定状态 \(s_t\) 下,对所有可能动作求和,每个动作按其选择概率 \(\pi_\theta(a_t|s_t)\) 加权。
第二步:应用对数梯度技巧
接下来,我们利用一个重要的数学恒等式——对数梯度技巧(Log-Derivative Trick):
将这个技巧应用到我们的公式中,\(\pi_\theta(a_t|s_t) \nabla_\theta \log \pi_\theta(a_t|s_t) = \nabla_\theta \pi_\theta(a_t|s_t)\),于是:
第三步:提取不依赖动作的项
由于基线 \(b(s_t)\) 只依赖状态 \(s_t\),不依赖动作 \(a_t\),在对动作求和时,它就像一个常数,可以提取到求和符号外面:
这一步的关键在于:基线的选择必须与动作无关,这是保持无偏性的核心条件。
第四步:交换求和与梯度算子
梯度算子 \(\nabla_\theta\) 与求和算子 \(\sum_{a_t}\) 可以交换顺序:
第五步:利用概率的归一化性质
\(\pi_\theta(a_t|s_t)\) 是一个概率分布,它必须满足概率的基本性质:所有可能动作的概率和为 1。这是一个恒等式,无论参数 \(\theta\) 如何变化,这个性质永远成立:
第六步:常数的梯度为 0
既然 \(\sum_{a_t} \pi_\theta(a_t|s_t) = 1\) 是一个常数,而常数对任何参数的梯度都是 0:
证明完成!
直观理解
这个证明告诉我们:只要基线 \(b(s_t)\) 不依赖当前动作 \(a_t\),减去它不会改变梯度的期望值,即保持无偏性。
为什么会是这样的?直观理解:
- 概率归一化是数学证明的关键一步:因为所有动作的概率和恒为 1,所以“对所有动作的策略梯度求和”会得到 0;
- 基线改变的是参考系:就像温度从摄氏度换算成华氏度,水的沸点和冰点的相对差异不变;在期望意义下,梯度方向不变;
- 保持相对优劣关系:给所有动作都加上/减去同样的分数,不会改变哪个动作“相对更好”,而梯度更新本质上是在调整不同动作之间的相对概率。
这意味着我们可以放心地使用基线来降低方差,而不引入梯度偏差;但是,合理选择的基线才能真正显著降低方差。
那么,什么是“好”的基线呢?直觉上,如果 \(b(s_t)\) 能够准确反映“在状态 \(s_t\) 下的平均表现”,那么 \(G_t - b(s_t)\) 就能准确衡量“这次表现比平均水平好/差多少”。这就引出了价值函数的概念。
价值函数:评估状态的好坏¶
在强化学习中,有两个重要的价值函数:
状态价值函数 \(V_\pi(s)\)¶
状态价值函数 \(V_\pi(s)\) 表示:在策略 \(\pi\) 下,从状态 \(s\) 出发,未来能获得的期望回报。
直观理解:\(V_\pi(s)\) 回答的是“从这个状态开始,按照当前策略行动,平均能得多少分?”
动作价值函数 \(Q_\pi(s, a)\)¶
动作价值函数 \(Q_\pi(s, a)\) 表示:在状态 \(s\) 执行动作 \(a\) 后,再按照策略 \(\pi\) 行动,未来能获得的期望回报。
和 \(V_\pi(s)\) 相比,\(Q_\pi(s, a)\) 多了一个额外条件:不仅固定状态 \(s\),还固定当前动作必须是 \(a\)。
直观理解:\(Q_\pi(s, a)\) 回答的是“在这个状态下执行动作 \(a\),然后继续按策略行动,平均能得多少分?”
两者的关系¶
状态价值函数是动作价值函数对所有可能动作的期望:
这个关系很直观:在状态 \(s\) 的价值,就是在这个状态下,按照策略 \(\pi\) 选择各个动作的概率加权平均。
优势函数:这个动作比平均水平好多少?¶
有了价值函数的概念,我们可以定义一个更精细的评估指标:优势函数(Advantage Function)。
直观含义:优势函数衡量的是“在状态 \(s\) 执行动作 \(a\) 比该状态下的平均表现好/差多少”。
- 如果 \(A_\pi(s, a) > 0\),说明这个动作比平均水平好,应该增加它的概率;
- 如果 \(A_\pi(s, a) < 0\),说明这个动作比平均水平差,应该减少它的概率;
- 如果 \(A_\pi(s, a) = 0\),说明这个动作就是平均水平。
为什么优势函数比单纯的回报更好?¶
回顾 REINFORCE 的更新规则:
这个公式的问题是:\(G_t\) 的绝对值可能很大,且不同状态之间的回报范围差异很大。
举个例子:假设一个学期中,期中测验的平均分是 10 分(满分 15 分),期末考试的平均分是 100 分(满分 120 分)。
- 在期中测验使用了一个不错的学习策略,得到 15 分,更新幅度是 \(\nabla_\theta \log \pi \cdot 15\);
- 在期末考试使用了一个糟糕的学习策略,得到 95 分,更新幅度是 \(\nabla_\theta \log \pi \cdot 95\)。
即使期中的学习策略更值得鼓励,但因为期末分数的基数大,期末的糟糕策略反而得到了更大的权重!
如果改用优势函数:
- 期中策略的优势:\(A = 15 - 10 = +5\)(好策略);
- 期末策略的优势:\(A = 95 - 100 = -5\)(坏策略)。
现在评估更合理了:好动作得到正反馈,坏动作得到负反馈,权重大小也更相称。
Actor-Critic 与 A2C¶
Actor-Critic(AC)是一类在策略梯度框架下,同时学习策略函数 \(\pi_\theta(a \mid s)\) 与价值函数 \(V_\phi(s)\) 或 \(Q_\phi(s,a)\) 的算法结构。
- Q 形式:
$$ g_t^{Q}=\nabla_\theta\log\pi_\theta(a_t|s_t)\,Q_\pi(s_t,a_t) $$
- A2C 形式(工程实践常见):
$$ g_t^{A}=\nabla_\theta\log\pi_\theta(a_t|s_t)\,A_\pi(s_t,a_t) $$
其中
$$ A_\pi(s,a)=Q_\pi(s,a)-V_\pi(s) $$
两种写法在期望梯度上等价;A2C 形式引入了状态基线 \(V_\pi(s)\),由前文的数学证明可知,引入与动作无关的状态基线 \(V_\pi(s)\) 不会改变梯度的期望值,且通常能降低估计方差。
| 维度 | Q 形式 | A2C 形式 |
|---|---|---|
| 策略学习信号 | \(Q(s,a)\) | \(A(s,a)=Q(s,a)-V(s)\) |
| 梯度估计方差 | 较高 | 较低 |
| 训练稳定性 | 一般 | 较好 |
| 工程应用 | 常用于理论推导 | 主流实现 |
后续推导与算法流程默认采用 A2C 这一实现形态。
A2C 的更新机制¶
在 A2C 中,Actor 的更新目标为:
由于真实的 \(A_\pi(s,a)\) 不可直接观测,实践中采用 Critic 对价值函数进行近似,再由 TD 误差构造优势估计。
估计优势函数(TD 误差)¶
一阶 TD 近似写为:
其推导关系为:
含义如下:
- \(V_\phi(s_t)\):状态 \(s_t\) 的价值预测;
- \(r_t+\gamma V_\phi(s_{t+1})\):一步回报与下一状态价值的引导目标;
- 二者差值:该动作在当前状态下的相对改进量(优势估计)。

参数更新¶
1. Critic 更新(用实际获得的回报更新对价值的估计)
其中 \(y_t\) 为一步 TD 目标。
2. Actor 更新(优势加权策略梯度)
A2C 算法流程¶

LLM 场景下的 A2C 算法流程¶

REINFORCE 与 A2C 的对比¶
| REINFORCE | A2C | |
|---|---|---|
| 网络数量 | 策略网络 | 策略网络 + 价值网络(可共享骨干) |
| 学习信号 | 蒙特卡洛回报 \(G_t\) | 优势估计 \(A_t\) |
| 方差 | 高 | 低 |
| 训练稳定性 | 较差 | 较好 |
| 样本效率 | 低 | 中等 |
| 计算开销 | 小 | 较大(需训练两个网络) |
| 实现复杂度 | 简单 | 中等 |
A2C 的主要局限¶
尽管 A2C 相比 REINFORCE 有显著改进,但仍存在以下局限:
-
策略更新幅度难以控制
每次更新后,新策略 \(\pi_{\theta_{\text{new}}}\) 可能与旧策略 \(\pi_{\theta_{\text{old}}}\) 偏离过大。若某批样本产生异常高的优势估计,策略更新幅度可能过大,进而破坏既有行为模式。
-
样本效率仍然不高
A2C 仍然是 On-policy(同策略) 算法:优势估计是基于当前策略 \(\pi_\theta\) 采样的轨迹计算的,一旦策略更新为 \(\pi_{\theta'}\),之前的样本就不再适用,必须用新策略重新采样。这导致样本效率不高。
总结¶
本文介绍了 Actor-Critic 架构,并重点说明了它的工程化主流形态 Advantage Actor-Critic(A2C)。A2C 将策略优化、价值估计与优势更新整合为统一训练闭环,是从基础策略梯度走向 TRPO、PPO 等现代算法的关键过渡。
A2C 的一个主要局限是样本效率问题:每次更新后都必须用新策略重新采样。这引出一个自然的问题:已经采集的数据能否继续利用?这需要一个关键的数学理论工具——重要性采样(Importance Sampling),我们将在下一篇文章中介绍它。