一、基线到底在解决什么问题?——从「梯度全是正号」说起
先回忆《策略梯度法公式推导》文档 §2.6 因果修正后的梯度公式:
∇θJ(θ)=Eτ∼Pθ[t=0∑T−1∇θlogπθ(At∣St)⋅Gt](PG-causal) 这个式子虽然因果正确(第 t 步只乘 t 之后的回报 Gt),但离「工程上能稳定训练」还差一步。我们先从一个在 CartPole 里会真实发生的现象讲起。
1.1 所有步的权重永远是正数:为什么「所有动作概率都想被放大」是病态的
在 CartPole 环境里,每一步拿到的奖励恒等于 Rt=1。假设一局玩满 T=500 步不倒,按折扣回报定义:
Gt=k=0∑T−1−tγk⋅1=1−γ1−γT−t 取 γ=0.99,列出来看看:
| 时刻 t | Gt(近似值) | 符号 |
|---|
| t=0 | ≈100 | 正 |
| t=100 | ≈99.5 | 正 |
| t=300 | ≈95.1 | 正 |
| t=499 | =1 | 正 |
| 哪怕第 300 步就倒了(中途失败局) | ≈58 | 还是正 |
观察:Gt 在任何时刻、任何一局、任何一步几乎永远都是正的。
含义:对同一局内所有 t,「梯度 × 权重」的符号都永远正,只是大小有差。换句话说,在一局里被采样到的所有动作,其 log_prob 一律被放大,只是被放大的倍数不同——等价于「归一化之前,这一局被采样到的动作全部被夸好,另一局被采样到的动作又全部被踩坏」。梯度方向在期望意义下没错,但梯度估计的方差大得离谱,学习非常慢、抖动剧烈。
1.2 从 softmax 梯度的零均值恒等式理解:为什么要「有正有负」
把场景一般化:固定状态 s,离散动作空间 A={a1,a2,…,a∣A∣}。策略是标准 softmax:
πθ(a∣s)=∑a′∈Aexp(fθ(s,a′))exp(fθ(s,a)) 其 log-prob 梯度满足一个极其关键的零均值恒等式:
a∈A∑πθ(a∣s)⋅∇θlogπθ(a∣s)=∇θa∈A∑πθ(a∣s)=∇θ1=0 解读:在同一个状态 s 下,按策略加权的「梯度向量和」恒等于零向量。也就是说 ∇logπθ(a∣s) 这个向量场天然是「零均值」的——**必须让它乘的权重有正有负,才能真正「把概率密度往好动作方向推、往坏动作方向压」。
现在假设我们给所有动作全部乘上一个共同的正权重 Gt>0(就像 CartPole 里那样):
Ea∼π(⋅∣s)[Gt⋅∇logπ(a∣s)] 注意这里 Gt 实际上并不是常数——它依赖于具体动作 a 之后整条轨迹的奖励实现,不同动作下 Gt(s,a) 是非常不均匀的:好动作吃到大 Gt,坏动作吃到小 Gt。所以严格说它不是「全部正权重乘零向量」,而是「分布不均匀的正权重加权」。
但从梯度估计的符号分布角度看:如果所有 Gt(s,a)−b(s) 的符号有正有负,而不是全都正,显然估计会更干净——这就是基线的直觉来源。
1.3 基线的动机:把权重「平移地板」到零附近
基线的思路非常朴素:对每步权重 Gt(s,a) 减去一个只依赖 s、不依赖 a 的标量地板 b(s),把平移后的量作为新的权重:
G~t(s,a)=Gt(s,a)−b(s) 配合前面的零均值恒等式,代入期望里:
Ea∼π(⋅∣s)[G~t(s,a)⋅∇logπ(a∣s)]=Ea[Gt⋅∇logπ]−b(s)⋅=0Ea[∇logπ(a∣s)]=Ea[Gt⋅∇logπ] 期望不变(无偏),但权重的符号现在有正有负了:
- 好动作:Gt(s,a)>b(s)⇒G~t>0⇒ 动作概率被抬升
- 坏动作:Gt(s,a)<b(s)⇒G~t<0⇒ 动作概率被压低
直观地:b(s) 就是「在状态 s 下,平均水平能拿到多少回报」——比平均好叫优势,比平均差叫劣势。Gt(s,a)−b(s) 就叫优势(Advantage)。
1.4 CartPole 一个具体数值例子(直觉 vs 朴素版)
设同一个状态 s 下两个动作在训练中采样到的折扣回报大致如下(基线取该状态下平均 b(s)=80):
| 动作 | 采样到的 Gt 典型值 | 朴素权重 Gt | 减基线权重 Gt−80 |
|---|
| a←(左推,实际不利于不倒) | 30 | +30(正、但小) | −50(负 → 压概率) |
| a→(右推,实际利于不倒) | 130 | +130(正、大) | +50(正 → 抬概率) |
- 朴素版(乘 Gt):左推动作梯度也被正向推 30×∇logπ(左∣s),右推动作正向推 130×∇logπ(右∣s)。两者都是正、只是比例 1:4.3,梯度要先互相抵消完「都想被放大」的公共成分再往好方向走——整体幅度大、方差大。
- 减基线版:左推被 −50 反向压、右推被 +50 正向拉,大小比例恰好 −1:+1 左右,更干净地执行「推好压坏」的语义,方差显著降低。
二、方差的定量分析:为什么朴素 Gt 的方差大?基线能降多少?
2.1 蒙特卡洛估计量的方差
策略梯度的蒙特卡洛估计,用一批轨迹 B 近似期望:
g^=∣B∣1τ∈B∑t=0∑T−1∇θlogπθ(At∣St)⋅Gt 记单条轨迹贡献的随机向量为 X(τ)=∑t∇logπt⋅Gt,则估计量 g^ 的方差为:
Var[g^]=∣B∣1⋅Varτ[X(τ)] 要把方差压到相同精度,需要的 batchsize ∣B∣ 正比于单条轨迹的方差。方差越小,同等数据量下梯度越准;或者说达到同等精度需要的样本越少——这就是方差降低技巧在 RL 里如此重要的原因。
2.2 Gt 本身的方差有多大
折扣回报 Gt=Rt+1+γRt+2+γ2Rt+3+⋯ 的方差:
Var[Gt]=Var[k=0∑∞γkRt+k+1]=k=0∑∞γ2kVar[Rt+k+1]+跨时刻协方差项2i<j∑γi+jCov[Rt+i+1,Rt+j+1] 如果每步奖励方差近似 σR2,忽略跨时刻协方差(通常它们仍为正,会让方差更大),得到闭式上界:
Var[Gt]≲1−γ2σR2 | γ | 0.9 | 0.99 | 0.995 |
|---|
| Var[G] 放大倍数(≈ 1/(1−γ2)) | ≈5.3σR2 | ≈50.3σR2 | ≈100σR2 |
结论:γ 越接近 1(长程任务越需要),Gt 的方差平方级暴涨。而基线做的事就是对 Gt 减去一个接近其条件均值的预报量 b(s),把权重从「巨无霸正数」拉回到「围绕零上下波动」,方差因此显著下降。
三、基线(Baseline)的严格定义与无偏性证明
3.1 合法基线的两条约束
任何合格的基线 bt(St) 必须同时满足:
- bt(St) 只能依赖状态 St,不能依赖动作 At(不能「偷看动作」再定价);
- bt 可以是时间 t 的函数(实践上最常见是取与 t 无关的 b(s)=Vπ(s),即状态价值函数)。
满足这两条就叫合法基线,减完之后梯度估计仍然无偏。下面严格证明。
3.2 无偏性定理与三层展开证明
定理(Baseline 无偏性):对任何满足上述两条约束的 bt(St),都有
Eτ∼Pθ[t=0∑T−1∇θlogπθ(At∣St)⋅bt(St)]=0 也就是说「减基线项」在全轨迹期望下恒等于零向量——梯度估计前后期望不变(无偏),只是方差变了。
证明(三层全期望展开):
第一步:线性拆开求和号
Eτ[t=0∑T−1∇θlogπθ(At∣St)⋅bt(St)]=t=0∑T−1ES0:T−1,A0:T−1[∇θlogπθ(At∣St)⋅bt(St)] 第二步:对每个 t 单独用全期望公式(Law of Total Expectation)。把联合期望写成「先固定 St、对 At 取条件期望,再对 St 的边缘取期望」:
ESt,At,其他[⋯]=ESt[EAt∼πθ(⋅∣St)[∇θlogπθ(At∣St)⋅bt(St)∣∣St]] 第三步:因为 bt(St) 不依赖 At,条件 St 固定时可以提出内层条件期望外:
=ESt[bt(St)⋅=0, 由 §1.2 零均值恒等式EAt∼π(⋅∣St)[∇θlogπθ(At∣St)]] 内层正是我们 §1.2 反复使用的 softmax 梯度恒等式:把期望展开成求和,∑aπ(a∣s)∇logπ(a∣s)=∇∑aπ(a∣s)=∇1=0。于是整个期望变成:
=ESt[bt(St)⋅0]=0 对所有 t 求和结果仍是 0 向量。QED。
基线的本质:我们减去了一个期望为零向量的项,梯度估计前后期望完全相等(无偏),但通过选合适的 b(St) 可以显著降低估计方差——这正是「方差-偏差 tradeoff」里只降方差、不引偏差的罕见甜点。
四、最优基线推导:怎么选 b(s) 让方差最小?
4.1 最小化单步估计方差
固定状态 St=s,单步梯度估计量(在该状态下对 At 采样的贡献):
g^t(s)=(Gt(s,At)−b(s))⋅∇θlogπθ(At∣s) 我们要选择标量 b(s) 使这个随机向量的平方 Frobenius 范数的期望最小(因为第二项 ∥E∥2 与 b(s) 无关,无偏性保证期望相等,所以最小化期望平方等价于最小化方差):
b(s)∈RminEa∼π(⋅∣s)[∥∥(G(s,a)−b(s))⋅∇logπ(a∣s)∥∥2] 为记号简洁记 Y(a)≜∇θlogπθ(a∣s),目标函数展开:
J(b)=Ea[G2(s,a)∥Y(a)∥2]−2b(s)Ea[G(s,a)∥Y(a)∥2]+b(s)2Ea[∥Y(a)∥2] 这是关于 b(s) 的标准二次函数,开口向上,最小值在导数为零处:
∂b(s)∂J=−2Ea[G∥Y∥2]+2b(s)Ea[∥Y∥2]=0 解得最优基线闭式(Greensmith 公式,文献里也叫「最优方差基线」):
b∗(s)=Ea∼π(⋅∣s)[∥∥∇θlogπθ(a∣s)∥∥2]Ea∼π(⋅∣s)[G(s,a)⋅∥∥∇θlogπθ(a∣s)∥∥2](Optimal-Baseline) 直觉:它是回报 G(s,a) 的加权平均——对 ∥∇logπ(a∥s)∥2 越大的动作(即对参数 θ 越敏感的方向)权重越高。「梯度敏感的动作的回报」主导最优定价。
4.2 为什么工程上选 Vπ(s) 而不是最优闭式?
最优基线公式虽美,分子分母都要估计一个带 ∥∇logπ∥2 权重的条件期望——需要额外网络结构,训练更不稳定。工程上的主流替代是选等权重版本:
b(s)=Vπ(s)=Ea∼π(⋅∣s)[G(s,a)] 也就是普通的状态价值函数。选它的理由:
- 目标简单:Vπ(s) 是对 G 的普通回归,用 MSE 就能训练 Critic;
- 效果足够好:实践中 Vπ(s) 对方差的降低已经接近最优基线(尤其 softmax 策略下 ∥∇logπ∥2 对不同动作差异相对不极端);
- 理论保证仍然成立:虽然不是方差最小,只要是合法基线就一定保证无偏,且「与均值越接近方差越低」——等权重均值天然就是平移后最接近让方差下降的一阶近似。
4.3 基线降低了多少方差?(下界)
记零基线(朴素版)方差为 Var0,选任意合法基线 b 后的方差为 Varb:
ΔVar=Var0−Varb=Vπ≥Vara[∥Y(a)∥2](Cova∼π[G(s,a),∥Y(a)∥2])2≥0 下界严格非负,证明「合法基线选对之后方差严格不增」。在 CartPole(γ=0.99)这种奖励为正、长 T=500 的任务里,实践上观测到的方差降低幅度典型在 5–15 倍区间,学习曲线明显更平滑、收敛更快。
五、优势函数 Advantage:At=Gt−V(St) 的定义、视角与 GAE
5.1 定义与三条关系
选 b(s)=Vπ(s) 之后,乘在梯度上的权重升级为优势函数(Advantage Function):
Aπ(s,a)≜Qπ(s,a)−Vπ(s) 三条核心关系必须串起来:
| 符号 | 名称 | 直觉 |
|---|
| Qπ(s,a) | 动作价值 | 在 s 下特意执行 a、之后按 π 走,能拿到的期望折扣回报 |
| Vπ(s) | 状态价值 | 在 s 下按 π 正常采样动作,能拿到的期望折扣回报 |
| Aπ(s,a) | 优势 | 执行 a,比该状态下的平均水平好多少 |
三者之间的桥梁:
Vπ(s)=Ea∼π(⋅∣s)[Qπ(s,a)] 两边相减,立即得到优势的一条关键零和性质:
Ea∼π(⋅∣s)[Aπ(s,a)]=0 这再次呼应了 §1.2 的零均值恒等式:权重本身的期望就是 0,与「零均值梯度向量场」完美匹配——这就是减基线之后梯度估计更干净的数学来源。
在蒙特卡洛实践里,因为 Vϕ(St) 我们是用 Critic 回归 Gt,所以实际用的权重是:
At=Gt−Vϕ(St) 5.2 几何视角:V(s) 作为「地板零线」
画一个数轴:
回报 G_t 能取到的值
← 低回报 ─────────── V^{\pi}(s) ─────────── 高回报 →
● 平均水平地板
|
A<0 压动作概率 ←─────────────→ A>0 抬动作概率
(劣势) (优势)
原来的 Gt 全部落在正半轴右侧(「全部想被放大」);减去 V(s) 相当于把零线平移到平均水平,好动作落在正侧被抬升、坏动作落在负侧被压低——「梯度全是正号」的病态被彻底根除。
5.3 时间差分视角:优势分解到单步 TD 误差 + GAE 引子
把 At=Gt−V(St) 用 Gt=Rt+1+γGt+1 递归展开,并采用经典的「加 0 技巧」γV(St+1)−γV(St+1)=0:
At=Gt−V(St)=(Rt+1+γGt+1)−V(St)=Rt+1+γGt+1−V(St)++0 技巧γV(St+1)−γV(St+1)=TD 误差 δtRt+1+γV(St+1)−V(St)+γ=At+1(Gt+1−V(St+1)) 于是得到优势的递推关系:
At=δt+γAt+1 其中 δt=Rt+1+γV(St+1)−V(St) 就是单步 TD 误差——它只看一个时间步的奖励与价值差,方差天然远小于整局回报 Gt,但它是「有偏」的(高度依赖 Critic V 准不准)。把这个递推继续展开到终局:
At=δt+γδt+1+γ2δt+2+⋯ 这就自然引出广义优势估计(Generalized Advantage Estimation, GAE)(Schulman et al. 2016):在展开项上再乘一个指数衰减因子 λ 做加权平均:
AtGAE(γ,λ)≜l=0∑∞(γλ)lδt+l 两种极端值:
- λ=1:就是原始 At=Gt−V(St)(蒙特卡洛版),无偏、但方差大;
- λ=0:就是单步 δt(一步 TD 版),方差极小、但有偏(高度依赖 Critic)。
λ∈(0,1) 区间提供了一条平滑的偏差-方差插值曲线。PPO 论文里的实践甜点是 λ=0.95,这个设置在绝大多数连续/离散控制任务、以及后来的 RLHF PPO 里都一直沿用至今。
六、REINFORCE with Baseline 完整算法流程
从《策略梯度法公式推导》文档 §三 的算法 1(无基线 REINFORCE)升级:
算法 3:REINFORCE with State-Value Baseline
输入:可微策略网络 πθ、状态价值网络 Vϕ(s)(Critic)、两网络学习率 ηθ,ηϕ、折扣因子 γ
对每个 episode k=1,2,…:
- 用策略 πθ 在环境里采样一条完整轨迹
τ=(S0,A0,R1,S1,A1,R2,…,ST−1,AT−1,RT) - 反向递推计算每步折扣回报(t=T−1→0)
GT−1=RT,Gt=Rt+1+γGt+1 - Critic 一步回归更新(最小化 MSE 拟合价值)
ϕ←ϕ−ηϕ⋅∇ϕT1t=0∑T−1(Vϕ(St)−Gt)2 - Actor 一步梯度上升(优势加权)
θ←θ+ηθ⋅t=0∑T−1γtAt(Gt−Vϕ(St))⋅∇θlogπθ(At∣St)
与 CartPole 朴素代码的衔接(呼应逐行解读文档 §四第 2 条缺陷)
《入门案例:CartPole + REINFORCE 逐行解读》里的朴素 REINFORCE 代码没有做因果修正,也没有基线。升级到本节算法版本需要改动三点:
- 因果修正:把整局累计奖励
episode._return 改成按时刻 t 的折扣回报 Gt; - 新增 Critic 网络:增加一层
ValueNet(s) → 标量(和策略网络同输入结构,4→128→1 输出状态价值 V); - 权重换成优势:每步梯度乘的权重从 Gt 改成 At=Gt−Vϕ(St)。
七、一张表串起所有版本:从朴素到因果到减基线
| 版本 | 梯度乘的权重 | 无偏? | 方差 | 权重符号分布 | 实现成本 |
|---|
| 朴素 REINFORCE | R(τ) 整局总奖励 | ✅ | 最大 | 全正/全负整局一致 | 最简单 |
| 因果修正 REINFORCE | Gt(该步后折扣回报) | ✅ | 很大(γ→1 更大) | 几乎全正(CartPole 类) | 略难 |
| REINFORCE with Baseline | At=Gt−Vϕ(St) | ✅ | 大幅降低 | 有正有负围绕 0 对称 | 多训一个 Critic |
| Actor-Critic / GAE | δt 或 AtGAE(γ,λ) | λ<1 略偏 | 更进一步降低 | 有正有负 | Critic + bootstrap |
7.1 四条梯度骨架公式对照
| 名称 | 梯度公式 |
|---|
| 朴素 PG(无因果修正) | ∇J=E[∑t∇logπt⋅R(τ)] |
| 因果正确 PG | ∇J=E[∑t∇logπt⋅Gt] |
| 减基线 PG(本档主角) | ∇J=E[t∑∇logπt⋅At] |
| AC / PPO 骨架 | 同上公式骨架 + Clip 裁剪比值 Clip(rt(θ),1−ϵ,1+ϵ) 构成信任域 |
| RLHF PPO | 同上 + 奖励模型打分 rm(x,y) 作为奖励、减去 SFT 参考模型的 β⋅DKL(πθ∥πSFT) 惩罚项 |
八、关键公式总览(速查卡)
| 编号 | 条目 | 公式 |
|---|
| 1 | softmax 梯度零均值恒等式 | ∑aπθ(a∣s)∇logπθ(a∣s)=0 |
| 2 | 合法基线条件 | bt=bt(St),不依赖 At |
| 3 | 减基线项恒为零向量 | Eτ[∑t∇logπt⋅bt(St)]=0 |
| 4 | 无偏性保证 | 减基线前后梯度期望严格相等 |
| 5 | 最优基线闭式(Greensmith) | b∗(s)=Ea[G∥Y∥2]/Ea[∥Y∥2],Y=∇logπ |
| 6 | 工程常用基线 | b(s)=Vπ(s)=Ea[G(s,a)] |
| 7 | 优势函数定义 | Aπ(s,a)=Qπ(s,a)−Vπ(s)=Gt−V(St) |
| 8 | 优势的零和性质 | Ea∼π(⋅∥s)[A(s,a)]=0 |
| 9 | TD 误差递推展开 | At=δt+γAt+1,δt=Rt+1+γV(St+1)−V(St) |
| 10 | GAE | AtGAE=∑l=0∞(γλ)lδt+l |
十、延申:PPO vs GRPO——两种基线范式的原理与优缺点
基线的「两条合法性约束」(仅依赖 St、条件期望为零)在工程上有两条完全不同的实现路径。目前大模型强化对齐(RLHF/RM)领域最主流的两版算法——PPO 和 GRPO——正好分别代表了「参数化 Critic 基线」与「组内统计基线」这两大流派,它们的差异本质上就是基线函数 b(⋅) 怎么选、怎么估的差异。
10.1 PPO:Critic 参数化基线 bPPO(s)=Vϕ(s)
经典 PPO(含 Schulman 2017 原始版、以及后来 RLHF 沿用的三网络版)的基线就是本文 §4.3 一直讲的状态价值 Critic:
bPPO(St)=Vϕ(St),AtPPO=AtGAE(γ,λ) 具体实现上是独立训一个参数化神经网络 Vϕ(s),在每轮 Actor 更新之前用 MSE 回归蒙特卡洛折扣回报 Gt(或 TD 目标)把 Critic 先收敛几轮,然后把 At=Gt−Vϕ(St) 送去乘 Actor 的 ∇logπθ。
作为基线的优点:
- 方差降低最彻底:它是 Greensmith 最优基线闭式(§4.1)的直接近似——当 Critic 训练充分、Vϕ≈Vπ 时,优势估计的期望噪声是所有 state-dependent 基线中最小的。
- 样本可混批训练:b(s) 只看当前状态,不要求同一 batch 内的样本来自同一个 prompt / 同一局 rollout。这样可以把不同任务、不同 prompt、不同长度的轨迹全扔进一个大 batch 一起训,GPU 利用率和吞吐都最高。
- 跨时间步 bootstrap 加持:搭配 GAE(γ,λ) 后,基线不仅吸收了整条 Gt 的整体偏置,还吸收了 bootstrap 带来的方差抑制,长序列(大模型生成长文本 4k+ token)时的稳定性远好于纯蒙特卡洛。
作为基线的缺点:
- 工程成本翻倍:必须训两个网络(Actor πθ + Critic Vφ),GPU 显存直接 double;训练时还得控制 Critic 更新步数不要太超前 Actor,又多了一组超参(
vf_epochs / vf_coef / TD 目标是否用 target network 等)。 - Critic 不准 → 有偏且误导:如果 Critic Vφ 拟合很差(比如奖励分布偏长尾、或大模型某些 prompt domain 数据不足),那么 At=Gt−Vφ 会系统性偏高/偏低,等价于「把有偏的基线减进去了」——虽然严格满足两条合法性约束(仍是 St 的函数、条件期望相减后仍无偏),但有限样本下的实际估计会被 Critic 的系统误差狠狠带偏,Actor 梯度方向会错。
- 额外调参成本:基线估计和 PPO clip 比、KL 惩罚系数强耦合,需要一起调;RLHF 场景下 Critic 往往还要共享 Actor 的 backbone + 加 value head,训练不稳定时 value loss 爆炸会拖垮整个流程。
10.2 GRPO:组内统计均值基线 bGRPO(p)=Rˉgroup
GRPO(Group Relative Policy Optimization,2024 年之后大规模大模型对齐的主流)把基线的思路退回到最朴素的「减组平均」——完全不训 Critic 网络,基线就是「同一条 prompt 下 N 次 rollout 的奖励分数均值」:
bGRPO(p)=RˉN(p)=N1j=1∑NR(p,x(j)),Ai=σgroup+ϵR(p,x(i))−bGRPO(p)(GRPO-Baseline) 其中 p 是一条输入 prompt,x(1..N) 是对同一个 prompt 连续采样 N 条回复(通常 N=4,8,16,越大越好但成本线性增长),R(p,x) 是该 prompt+response 的对齐后奖励(通常是 RM 打分 rRM 减去 KL 惩罚项 βKL(πθ∥πref)),分母再加个组内标准差归一化(把优势标准化成零均值单位方差的 z-score)。
为什么它是合法基线?—— 验证两条约束:
- 约束 1「仅依赖 St」:在大模型 token-level RL 里 St=(p,x<t),组内均值基线完全不看单条 rollout 的任何动作选择,只看 prompt p 和组内其他兄弟样本的奖励,对当前样本 x(i) 的动作序列是「只读、条件化」的,满足「基线不耦合 At」的独立性约束。
- 约束 2「条件期望相减为零」:当组大小 N 足够大、或者我们对所有可能的组抽样再做一次外层期望时,Egroup[RˉN(p)]=Ex∼π(⋅∣p)[R(p,x)],于是减完基线后的优势满足 Ex(i)[Ai∣p]=0——就是 §3.1 合法性定理的直接推论。
作为基线的优点:
- 工程极简、显存省一半:彻底砍掉 Critic 网络,RL 训练只需要 Actor π_θ + 冻结的 reference π_ref。大模型场景下这是决定性的工程优势——70B 级模型训 PPO 需要 4~6 卡共享 Critic,GRPO 直接 2~3 卡就能跑,稳定度也更高。
- 同 prompt 偏置完美消除:大模型对齐里奖励分布的绝对水平高度依赖 prompt(比如简单题 RM 全给 8~9 分、难题全给 2~3 分)。传统 Critic 基线 Vφ(p) 如果对 prompt domain 覆盖不好,会在简单 prompt 上系统性低估、难题上高估;而 GRPO 的组均值基线对同一个 prompt 的 N 条回复做「相对排序」,prompt 本身的绝对难度偏置被减得一干二净——这在多任务混合的 RLHF 场景下是巨大的鲁棒性优势。
- 零 Critic 训练超参:不需要
vf_epochs / vf_coef / cliprange_vf / target network 这一整套 Critic 相关的超参;超参空间小 → 失败模式少 → 工业流水线的可重复性高。
作为基线的缺点:
- 方差降低受限于组大小 N:组内均值基线的估计误差是 O(1/N)——N=4 时基线噪声还是挺大的,方差降低效果比不上训练充分的 Critic 基线;要达到和 PPO Critic 相近的方差抑制水平,需要 N≥16,但 rollout 成本也线性涨到 16 倍,吞吐-方差的 tradeoff 比 PPO 更陡。
- 强制按 prompt 分组,样本不可混批:一个 batch 里如果混入来自不同 prompt 的样本,GRPO 的组基线就失去了合法性(因为你把 prompt-A 的奖励均值拿去减 prompt-B 的样本了,条件期望相减不再等于 0)。工业上只能「每 8/16 条回复绑定同一条 prompt」组织 batch,batch 利用率和 padding 浪费都比 PPO 差;短回复场景下 GPU 计算的实际吞吐可能掉到 PPO 的 60%。
- 不提供跨时间步 bootstrap:GRPO 基线是回复级标量(一条回复一个 A,乘整条回复所有 token 的 ∇logπ),没有时间维度的 GAE bootstrap。虽然它靠 KL 惩罚和 RM 信号本身能跑通,但长回复中「后半段 token 应该对早期错误承担多少责任」的信用分配问题比 PPO+GAE 更弱——在需要长期规划的代码生成 / 多步推理任务上,样本效率通常会输给一个训得好的 PPO Critic。
- 组策略会引入组间方差:如果同 prompt 下 N 次 rollout 里偶然出了一条特别极端的高分/低分样本,组均值会被拉偏,导致其余 N−1 条样本的优势估计同时被误判——这是小 N 下 GRPO 的高频失败模式(缓解方法:取组中位数代替均值做基线,或做 winsorize 截断)。
10.3 对比表与选型建议
| 维度 | PPO(Critic 参数化基线 Vφ(s)) | GRPO(组内统计基线 RˉN) |
|---|
| 基线来源 | 参数化神经网络 Critic,MSE 回归目标 | 同 prompt 下 N 条 rollout 的奖励均值/中位数 |
| 是否需要第二网络 | ✅ 需 Actor+Critic 两网络 + value head | ❌ 仅 Actor + 冻结 ref,无 Critic |
| 显存/算力成本 | 高(双网络 + Critic 训练轮次) | 低(单网络) |
| 方差降低效果 | 强(Critic 训得好时接近最优基线闭式) | 中,随 N 饱和,小 N 时弱 |
| 样本可混批训练 | ✅ 任意 prompt / 长度可混批 | ❌ 强制按 prompt 绑定 N 条,跨 prompt 非法 |
| 对齐 prompt 难度偏置 | 依赖 Critic 是否覆盖 domain,易残差 | ✅ 相对排序,prompt 绝对难度直接消干净 |
| 长序列信用分配 | ✅ GAE(γ,λ) 跨时间步 bootstrap | 回复级标量,无时间维分配 |
| 超参数量 | 多(clip + vf_coef + vf_epochs + KL 等) | 少(仅 N、分组标准差归一化 ε、KL 系数) |
| 有限样本稳定性 | Critic 欠拟合时梯度被带偏 | 小 N 时组偶然极端样本带偏整组 |
| 代表场景 | 通用 RL / 长程规划 / 低吞吐高质量对齐 | 大规模 LLM 对齐(DeepSeek / Qwen / 工业 RLHF 流水线) |
一句话选型:
- 你跑的是 70B 级以上大模型、要高吞吐、奖励主要来自 prompt-level 的 RM 打分(非逐步稠密奖励)→ GRPO 用 8~16 的组大小,工程省心、鲁棒性最好。
- 你跑的是稠密逐步奖励环境(CartPole / Atari / 代码逐行评测)、样本少、且能承担第二网络的训练成本 → PPO + 训充分的 Critic + GAE(γ,λ=0.95),样本效率和方差抑制更胜一筹。
- 无论选哪条,本质上都在践行本文的核心主线:
∇J(θ)=E[∇logπθ⋅(让权重有正有负、均值为零G−b(⋅))] 差别只在基线 b(⋅) 是「用 Critic 算出来的」还是「用组内兄弟样本算出来的」。
九、下一步去哪里
- 回到《入门案例:CartPole + REINFORCE 逐行解读》§四第 2 条缺陷:看完本档就完全知道「没有减基线」的代码升级路径。
- 下一篇建议:PPO-Clip 算法原理(信任区域裁剪比值 rt(θ)∈[1−ϵ,1+ϵ],配合本节打好的 GAE 优势估计骨架)。
- 大模型方向:《大模型强化学习建模思路》里的 RLHF 第三阶段,用的就是本节减基线后的梯度骨架,把 At 换成「奖励模型打分 − KL 惩罚」后的 Critic 价值优势估计。