跳到主要内容

基线原理与优势函数公式推导

一、基线到底在解决什么问题?——从「梯度全是正号」说起

先回忆《策略梯度法公式推导》文档 §2.6 因果修正后的梯度公式:

θJ(θ)=EτPθ[  t=0T1θlogπθ(AtSt)Gt  ](PG-causal)\nabla_{\theta} J(\theta) = \mathbb{E}_{\tau \sim P_{\theta}}\left[\; \sum_{t=0}^{T-1} \nabla_{\theta} \log \pi_{\theta}(A_{t} \mid S_{t}) \cdot G_{t} \;\right] \tag{PG-causal}

这个式子虽然因果正确(第 tt 步只乘 tt 之后的回报 GtG_{t}),但离「工程上能稳定训练」还差一步。我们先从一个在 CartPole 里会真实发生的现象讲起。

1.1 所有步的权重永远是正数:为什么「所有动作概率都想被放大」是病态的

在 CartPole 环境里,每一步拿到的奖励恒等于 Rt=1R_{t}=1。假设一局玩满 T=500T=500 步不倒,按折扣回报定义:

Gt  =  k=0T1tγk1  =  1γTt1γG_{t} \;=\; \sum_{k=0}^{T-1-t} \gamma^{k} \cdot 1 \;=\; \frac{1 - \gamma^{T-t}}{1 - \gamma}

γ=0.99\gamma = 0.99,列出来看看:

时刻 ttGtG_{t}(近似值)符号
t=0t=0100\approx 100
t=100t=10099.5\approx 99.5
t=300t=30095.1\approx 95.1
t=499t=499=1=1
哪怕第 300 步就倒了(中途失败局)58\approx 58还是正

观察GtG_{t} 在任何时刻、任何一局、任何一步几乎永远都是正的。

含义:对同一局内所有 tt,「梯度 ×\times 权重」的符号都永远正,只是大小有差。换句话说,在一局里被采样到的所有动作,其 log_prob 一律被放大,只是被放大的倍数不同——等价于「归一化之前,这一局被采样到的动作全部被夸好,另一局被采样到的动作又全部被踩坏」。梯度方向在期望意义下没错,但梯度估计的方差大得离谱,学习非常慢、抖动剧烈。

1.2 从 softmax 梯度的零均值恒等式理解:为什么要「有正有负」

把场景一般化:固定状态 ss,离散动作空间 A={a1,a2,,aA}\mathcal{A}=\{a_{1},a_{2},\dots,a_{|\mathcal{A}|}\}。策略是标准 softmax:

πθ(as)=exp(fθ(s,a))aAexp(fθ(s,a))\pi_{\theta}(a \mid s) = \frac{\exp\big(f_{\theta}(s,a)\big)}{\sum_{a' \in \mathcal{A}} \exp\big(f_{\theta}(s,a')\big)}

其 log-prob 梯度满足一个极其关键的零均值恒等式

  aAπθ(as)θlogπθ(as)  =  θaAπθ(as)  =  θ1  =  0  \boxed{\; \sum_{a \in \mathcal{A}} \pi_{\theta}(a \mid s) \cdot \nabla_{\theta} \log \pi_{\theta}(a \mid s) \;=\; \nabla_{\theta} \sum_{a \in \mathcal{A}} \pi_{\theta}(a \mid s) \;=\; \nabla_{\theta} 1 \;=\; 0 \;}

解读:在同一个状态 ss 下,按策略加权的「梯度向量和」恒等于零向量。也就是说 logπθ(as)\nabla \log \pi_{\theta}(a \mid s) 这个向量场天然是「零均值」的——**必须让它乘的权重有正有负,才能真正「把概率密度往好动作方向推、往坏动作方向压」。

现在假设我们给所有动作全部乘上一个共同的正权重 Gt>0G_{t} > 0(就像 CartPole 里那样):

Eaπ(s)[Gtlogπ(as)]\mathbb{E}_{a \sim \pi(\cdot \mid s)}\big[\, G_{t} \cdot \nabla \log \pi(a \mid s) \,\big]

注意这里 GtG_t 实际上并不是常数——它依赖于具体动作 aa 之后整条轨迹的奖励实现,不同动作下 Gt(s,a)G_t(s, a) 是非常不均匀的:好动作吃到大 GtG_t,坏动作吃到小 GtG_t。所以严格说它不是「全部正权重乘零向量」,而是「分布不均匀的正权重加权」。

但从梯度估计的符号分布角度看:如果所有 Gt(s,a)b(s)G_t(s,a) - b(s) 的符号有正有负,而不是全都正,显然估计会更干净——这就是基线的直觉来源。

1.3 基线的动机:把权重「平移地板」到零附近

基线的思路非常朴素:对每步权重 Gt(s,a)G_t(s, a) 减去一个只依赖 ss、不依赖 aa 的标量地板 b(s)b(s),把平移后的量作为新的权重:

G~t(s,a)  =  Gt(s,a)b(s)\tilde{G}_{t}(s, a) \;=\; G_{t}(s, a) - b(s)

配合前面的零均值恒等式,代入期望里:

Eaπ(s)[G~t(s,a)logπ(as)]=Ea[Gtlogπ]    b(s)Ea[logπ(as)]=0=Ea[Gtlogπ]\begin{aligned} \mathbb{E}_{a \sim \pi(\cdot \mid s)}\big[\,\tilde{G}_{t}(s,a) \cdot \nabla \log \pi(a \mid s)\,\big] &= \mathbb{E}_a[\,G_t \cdot \nabla \log \pi\,] \;-\; b(s) \cdot \underbrace{\mathbb{E}_a[\,\nabla \log \pi(a \mid s)\,]}_{=0} \\ &= \mathbb{E}_a[\,G_t \cdot \nabla \log \pi\,] \end{aligned}

期望不变(无偏),但权重的符号现在有正有负了:

  • 好动作:Gt(s,a)>b(s)G~t>0G_t(s,a) > b(s) \Rightarrow \tilde{G}_t > 0 \Rightarrow 动作概率被抬升
  • 坏动作:Gt(s,a)<b(s)G~t<0G_t(s,a) < b(s) \Rightarrow \tilde{G}_t < 0 \Rightarrow 动作概率被压低

直观地:b(s)b(s) 就是「在状态 ss 下,平均水平能拿到多少回报」——比平均好叫优势,比平均差叫劣势。Gt(s,a)b(s)G_t(s,a) - b(s) 就叫优势(Advantage)

1.4 CartPole 一个具体数值例子(直觉 vs 朴素版)

设同一个状态 ss 下两个动作在训练中采样到的折扣回报大致如下(基线取该状态下平均 b(s)=80b(s)=80):

动作采样到的 GtG_t 典型值朴素权重 GtG_t减基线权重 Gt80G_t - 80
aa_{\leftarrow}(左推,实际不利于不倒)3030+30+30(正、但小)50-50(负 → 压概率)
aa_{\rightarrow}(右推,实际利于不倒)130130+130+130(正、大)+50+50(正 → 抬概率)
  • 朴素版(乘 GtG_t:左推动作梯度也被正向推 30×logπ(s)30 \times \nabla \log \pi(\text{左}|s),右推动作正向推 130×logπ(s)130 \times \nabla \log \pi(\text{右}|s)。两者都是正、只是比例 1:4.31:4.3,梯度要先互相抵消完「都想被放大」的公共成分再往好方向走——整体幅度大、方差大。
  • 减基线版:左推被 50-50 反向压、右推被 +50+50 正向拉,大小比例恰好 1:+1-1:+1 左右,更干净地执行「推好压坏」的语义,方差显著降低。

二、方差的定量分析:为什么朴素 GtG_t 的方差大?基线能降多少?

2.1 蒙特卡洛估计量的方差

策略梯度的蒙特卡洛估计,用一批轨迹 B\mathcal{B} 近似期望:

g^  =  1BτBt=0T1θlogπθ(AtSt)Gt\hat{g} \;=\; \frac{1}{|\mathcal{B}|} \sum_{\tau \in \mathcal{B}} \sum_{t=0}^{T-1} \nabla_{\theta} \log \pi_{\theta}(A_{t} \mid S_{t}) \cdot G_{t}

记单条轨迹贡献的随机向量为 X(τ)=tlogπtGtX(\tau) = \sum_{t} \nabla \log \pi_{t} \cdot G_t,则估计量 g^\hat{g} 的方差为:

Var[g^]  =  1BVarτ[X(τ)]\operatorname{Var}[\hat{g}] \;=\; \frac{1}{|\mathcal{B}|} \cdot \operatorname{Var}_{\tau}\big[\,X(\tau)\,\big]

要把方差压到相同精度,需要的 batchsize B|\mathcal{B}| 正比于单条轨迹的方差。方差越小,同等数据量下梯度越准;或者说达到同等精度需要的样本越少——这就是方差降低技巧在 RL 里如此重要的原因。

2.2 GtG_t 本身的方差有多大

折扣回报 Gt=Rt+1+γRt+2+γ2Rt+3+G_t = R_{t+1} + \gamma R_{t+2} + \gamma^2 R_{t+3} + \cdots 的方差:

Var[Gt]  =  Var[k=0γkRt+k+1]  =  k=0γ2kVar[Rt+k+1]  +  2i<jγi+jCov[Rt+i+1,Rt+j+1]跨时刻协方差项\operatorname{Var}[G_{t}] \;=\; \operatorname{Var}\left[\sum_{k=0}^{\infty} \gamma^{k} R_{t+k+1}\right] \;=\; \sum_{k=0}^{\infty} \gamma^{2k}\,\operatorname{Var}[R_{t+k+1}] \;+\; \underbrace{2 \sum_{i<j} \gamma^{i+j} \operatorname{Cov}[R_{t+i+1}, R_{t+j+1}]}_{\text{跨时刻协方差项}}

如果每步奖励方差近似 σR2\sigma_{R}^{2},忽略跨时刻协方差(通常它们仍为正,会让方差更大),得到闭式上界:

Var[Gt]    σR21γ2\operatorname{Var}[G_{t}] \;\lesssim\; \frac{\sigma_{R}^{2}}{1 - \gamma^{2}}
γ\gamma0.90.90.990.990.9950.995
Var[G]\operatorname{Var}[G] 放大倍数(≈ 1/(1γ2)1/(1-\gamma^2)5.3σR2\approx 5.3 \,\sigma_R^250.3σR2\approx 50.3 \,\sigma_R^2100σR2\approx 100 \,\sigma_R^2

结论γ\gamma 越接近 1(长程任务越需要),GtG_t 的方差平方级暴涨。而基线做的事就是GtG_t 减去一个接近其条件均值的预报量 b(s)b(s),把权重从「巨无霸正数」拉回到「围绕零上下波动」,方差因此显著下降。


三、基线(Baseline)的严格定义与无偏性证明

3.1 合法基线的两条约束

任何合格的基线 bt(St)b_{t}(S_t) 必须同时满足:

  1. bt(St)b_{t}(S_t) 只能依赖状态 StS_t,不能依赖动作 AtA_t(不能「偷看动作」再定价);
  2. btb_{t} 可以是时间 tt 的函数(实践上最常见是取与 tt 无关的 b(s)=Vπ(s)b(s) = V^{\pi}(s),即状态价值函数)。

满足这两条就叫合法基线,减完之后梯度估计仍然无偏。下面严格证明。

3.2 无偏性定理与三层展开证明

定理(Baseline 无偏性):对任何满足上述两条约束的 bt(St)b_t(S_t),都有

EτPθ[t=0T1θlogπθ(AtSt)bt(St)]  =  0\mathbb{E}_{\tau \sim P_{\theta}}\left[\,\sum_{t=0}^{T-1} \nabla_{\theta} \log \pi_{\theta}(A_{t} \mid S_{t}) \cdot b_{t}(S_{t})\,\right] \;=\; 0

也就是说「减基线项」在全轨迹期望下恒等于零向量——梯度估计前后期望不变(无偏),只是方差变了。

证明(三层全期望展开)

第一步:线性拆开求和号

Eτ[t=0T1θlogπθ(AtSt)bt(St)]=t=0T1  ES0:T1,A0:T1[  θlogπθ(AtSt)bt(St)  ]\begin{aligned} \mathbb{E}_{\tau}\Bigg[\,\sum_{t=0}^{T-1} \nabla_{\theta}&\log \pi_{\theta}(A_{t} \mid S_{t}) \cdot b_{t}(S_{t})\Bigg] \\ &= \sum_{t=0}^{T-1}\; \mathbb{E}_{S_{0:T-1},\, A_{0:T-1}}\Bigg[\;\nabla_{\theta}\log \pi_{\theta}(A_{t} \mid S_{t}) \cdot b_t(S_t)\;\Bigg] \end{aligned}

第二步:对每个 tt 单独用全期望公式(Law of Total Expectation)。把联合期望写成「先固定 StS_t、对 AtA_t 取条件期望,再对 StS_t 的边缘取期望」:

ESt,At,其他[]  =  ESt[  EAtπθ(St)[  θlogπθ(AtSt)bt(St)    St  ]  ]\mathbb{E}_{S_{t}, A_{t}, \text{其他}}[\cdots] \;=\; \mathbb{E}_{S_{t}}\Bigg[\;\mathbb{E}_{A_{t} \sim \pi_{\theta}(\cdot \mid S_{t})}\Big[\;\nabla_{\theta} \log \pi_{\theta}(A_{t} \mid S_{t}) \cdot b_t(S_t) \;\Big|\; S_{t}\;\Big]\;\Bigg]

第三步:因为 bt(St)b_t(S_t) 不依赖 AtA_t,条件 StS_t 固定时可以提出内层条件期望外

=  ESt[  bt(St)    EAtπ(St)[θlogπθ(AtSt)]=0, 由 §1.2 零均值恒等式  ]=\; \mathbb{E}_{S_{t}}\Bigg[\;b_{t}(S_{t})\;\cdot\;\underbrace{\mathbb{E}_{A_{t} \sim \pi(\cdot \mid S_{t})}\Big[\,\nabla_{\theta} \log \pi_{\theta}(A_{t} \mid S_{t})\,\Big]}_{=0,\ \text{由 §1.2 零均值恒等式}}\;\Bigg]

内层正是我们 §1.2 反复使用的 softmax 梯度恒等式:把期望展开成求和,aπ(as)logπ(as)=aπ(as)=1=0\sum_{a} \pi(a \mid s)\nabla \log \pi(a \mid s) = \nabla \sum_a \pi(a \mid s) = \nabla 1 = 0。于是整个期望变成:

=ESt[bt(St)0]=0= \mathbb{E}_{S_t}\big[\,b_t(S_t) \cdot 0\,\big] = 0

对所有 tt 求和结果仍是 00 向量。QED

基线的本质:我们减去了一个期望为零向量的项,梯度估计前后期望完全相等(无偏),但通过选合适的 b(St)b(S_t) 可以显著降低估计方差——这正是「方差-偏差 tradeoff」里只降方差、不引偏差的罕见甜点。


四、最优基线推导:怎么选 b(s)b(s) 让方差最小?

4.1 最小化单步估计方差

固定状态 St=sS_t = s,单步梯度估计量(在该状态下对 AtA_t 采样的贡献):

g^t(s)  =  (Gt(s,At)b(s))θlogπθ(Ats)\hat{g}_{t}(s) \;=\; \big(G_{t}(s, A_t) - b(s)\big) \cdot \nabla_{\theta} \log \pi_{\theta}(A_t \mid s)

我们要选择标量 b(s)b(s) 使这个随机向量的平方 Frobenius 范数的期望最小(因为第二项 E2\|\mathbb{E}\|^2b(s)b(s) 无关,无偏性保证期望相等,所以最小化期望平方等价于最小化方差):

minb(s)REaπ(s)[  (G(s,a)b(s))logπ(as)2  ]\min_{b(s)\in\mathbb{R}}\quad \mathbb{E}_{a \sim \pi(\cdot \mid s)}\Bigg[\;\Big\|\,\big(G(s,a) - b(s)\big)\cdot \nabla \log \pi(a \mid s)\,\Big\|^{2}\;\Bigg]

为记号简洁记 Y(a)θlogπθ(as)Y(a) \triangleq \nabla_{\theta} \log \pi_{\theta}(a \mid 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]J(b) \;=\; \mathbb{E}_{a}\big[\,G^{2}(s,a)\,\|Y(a)\|^{2}\,\big] \;-\; 2\,b(s)\,\mathbb{E}_{a}\big[\,G(s,a)\,\|Y(a)\|^{2}\,\big] \;+\; b(s)^{2}\,\mathbb{E}_{a}\big[\,\|Y(a)\|^{2}\,\big]

这是关于 b(s)b(s) 的标准二次函数,开口向上,最小值在导数为零处:

Jb(s)  =  2Ea[GY2]+2b(s)Ea[Y2]  =  0\frac{\partial J}{\partial b(s)} \;=\; -2\,\mathbb{E}_a[\,G\,\|Y\|^{2}\,] + 2\,b(s)\,\mathbb{E}_a[\,\|Y\|^{2}\,] \;=\; 0

解得最优基线闭式(Greensmith 公式,文献里也叫「最优方差基线」):

  b(s)  =  Eaπ(s)[  G(s,a)θlogπθ(as)2  ]Eaπ(s)[  θlogπθ(as)2  ]  (Optimal-Baseline)\boxed{\; b^{*}(s) \;=\; \frac{\mathbb{E}_{a \sim \pi(\cdot \mid s)}\Big[\;G(s,a)\cdot \Big\|\nabla_{\theta}\log \pi_{\theta}(a \mid s)\Big\|^{2}\;\Big]} {\mathbb{E}_{a \sim \pi(\cdot \mid s)}\Big[\;\Big\|\nabla_{\theta}\log \pi_{\theta}(a \mid s)\Big\|^{2}\;\Big]} \;} \tag{Optimal-Baseline}

直觉:它是回报 G(s,a)G(s,a) 的加权平均——对 logπ(as)2\|\nabla \log \pi(a\|s)\|^2 越大的动作(即对参数 θ\theta 越敏感的方向)权重越高。「梯度敏感的动作的回报」主导最优定价。

4.2 为什么工程上选 Vπ(s)V^{\pi}(s) 而不是最优闭式?

最优基线公式虽美,分子分母都要估计一个带 logπ2\|\nabla \log \pi\|^2 权重的条件期望——需要额外网络结构,训练更不稳定。工程上的主流替代是选等权重版本

b(s)  =  Vπ(s)  =  Eaπ(s)[G(s,a)]b(s) \;=\; V^{\pi}(s) \;=\; \mathbb{E}_{a \sim \pi(\cdot \mid s)}\big[\,G(s,a)\,\big]

也就是普通的状态价值函数。选它的理由:

  • 目标简单Vπ(s)V^{\pi}(s) 是对 GG 的普通回归,用 MSE 就能训练 Critic;
  • 效果足够好:实践中 Vπ(s)V^{\pi}(s) 对方差的降低已经接近最优基线(尤其 softmax 策略下 logπ2\|\nabla \log \pi\|^2 对不同动作差异相对不极端);
  • 理论保证仍然成立:虽然不是方差最小,只要是合法基线就一定保证无偏,且「与均值越接近方差越低」——等权重均值天然就是平移后最接近让方差下降的一阶近似。

4.3 基线降低了多少方差?(下界)

记零基线(朴素版)方差为 Var0\operatorname{Var}_0,选任意合法基线 bb 后的方差为 Varb\operatorname{Var}_b

ΔVar  =  Var0Varb=Vπ    (Covaπ[G(s,a),  Y(a)2])2Vara[Y(a)2]    0\Delta \operatorname{Var} \;=\; \operatorname{Var}_{0} - \operatorname{Var}_{b=V^{\pi}} \;\ge\; \frac{\Big(\mathbb{Cov}_{a \sim \pi}\big[\,G(s,a),\;\|Y(a)\|^{2}\,\big]\Big)^{2}}{\operatorname{Var}_{a}[\,\|Y(a)\|^{2}\,]} \;\ge\; 0

下界严格非负,证明「合法基线选对之后方差严格不增」。在 CartPole(γ=0.99\gamma=0.99)这种奖励为正、长 T=500T=500 的任务里,实践上观测到的方差降低幅度典型在 5–15 倍区间,学习曲线明显更平滑、收敛更快。


五、优势函数 Advantage:At=GtV(St)A_t = G_t - V(S_t) 的定义、视角与 GAE

5.1 定义与三条关系

b(s)=Vπ(s)b(s)=V^{\pi}(s) 之后,乘在梯度上的权重升级为优势函数(Advantage Function)

  Aπ(s,a)    Qπ(s,a)Vπ(s)  \boxed{\;A^{\pi}(s,a) \;\triangleq\; Q^{\pi}(s,a) - V^{\pi}(s)\;}

三条核心关系必须串起来:

符号名称直觉
Qπ(s,a)Q^{\pi}(s,a)动作价值ss特意执行 aa、之后按 π\pi,能拿到的期望折扣回报
Vπ(s)V^{\pi}(s)状态价值ssπ\pi 正常采样动作,能拿到的期望折扣回报
Aπ(s,a)A^{\pi}(s,a)优势执行 aa,比该状态下的平均水平好多少

三者之间的桥梁:

Vπ(s)  =  Eaπ(s)[Qπ(s,a)]V^{\pi}(s) \;=\; \mathbb{E}_{a \sim \pi(\cdot \mid s)}\big[\,Q^{\pi}(s,a)\,\big]

两边相减,立即得到优势的一条关键零和性质

Eaπ(s)[Aπ(s,a)]  =  0\mathbb{E}_{a \sim \pi(\cdot \mid s)}\big[\,A^{\pi}(s,a)\,\big] \;=\; 0

这再次呼应了 §1.2 的零均值恒等式:权重本身的期望就是 0,与「零均值梯度向量场」完美匹配——这就是减基线之后梯度估计更干净的数学来源。

在蒙特卡洛实践里,因为 Vϕ(St)V_{\phi}(S_t) 我们是用 Critic 回归 GtG_t,所以实际用的权重是:

At  =  GtVϕ(St)A_t \;=\; G_{t} - V_{\phi}(S_{t})

5.2 几何视角:V(s) 作为「地板零线」

画一个数轴:

回报 G_t 能取到的值
← 低回报 ─────────── V^{\pi}(s) ─────────── 高回报 →
● 平均水平地板
|
A<0 压动作概率 ←─────────────→ A>0 抬动作概率
(劣势) (优势)

原来的 GtG_t 全部落在正半轴右侧(「全部想被放大」);减去 V(s)V(s) 相当于把零线平移到平均水平,好动作落在正侧被抬升、坏动作落在负侧被压低——「梯度全是正号」的病态被彻底根除。

5.3 时间差分视角:优势分解到单步 TD 误差 + GAE 引子

At=GtV(St)A_t = G_t - V(S_t)Gt=Rt+1+γGt+1G_t = R_{t+1} + \gamma G_{t+1} 递归展开,并采用经典的「加 0 技巧」γV(St+1)γV(St+1)=0\gamma V(S_{t+1}) - \gamma V(S_{t+1})=0

At=GtV(St)=(Rt+1+γGt+1)V(St)=Rt+1+γGt+1V(St)  +  γV(St+1)γV(St+1)+0 技巧=Rt+1+γV(St+1)V(St)TD 误差 δt  +  γ(Gt+1V(St+1))=At+1\begin{aligned} A_t &= G_t - V(S_t) \\ &= \big(R_{t+1} + \gamma G_{t+1}\big) - V(S_t) \\ &= R_{t+1} + \gamma G_{t+1} - V(S_t) \;+\; \underbrace{\gamma V(S_{t+1}) - \gamma V(S_{t+1})}_{+0 \text{ 技巧}} \\ &= \underbrace{R_{t+1} + \gamma V(S_{t+1}) - V(S_t)}_{\text{TD 误差 }\delta_{t}} \;+\; \gamma\underbrace{\big(G_{t+1} - V(S_{t+1})\big)}_{=A_{t+1}} \end{aligned}

于是得到优势的递推关系:

  At  =  δt+γAt+1  \boxed{\;A_{t} \;=\; \delta_{t} + \gamma A_{t+1}\;}

其中 δt=Rt+1+γV(St+1)V(St)\delta_{t} = R_{t+1} + \gamma V(S_{t+1}) - V(S_t) 就是单步 TD 误差——它只看一个时间步的奖励与价值差,方差天然远小于整局回报 GtG_t,但它是「有偏」的(高度依赖 Critic VV 准不准)。把这个递推继续展开到终局:

At  =  δt+γδt+1+γ2δt+2+A_t \;=\; \delta_{t} + \gamma \delta_{t+1} + \gamma^{2} \delta_{t+2} + \cdots

这就自然引出广义优势估计(Generalized Advantage Estimation, GAE)(Schulman et al. 2016):在展开项上再乘一个指数衰减因子 λ\lambda 做加权平均:

  AtGAE(γ,λ)    l=0(γλ)lδt+l  \boxed{\; A_t^{\mathrm{GAE}(\gamma,\lambda)} \;\triangleq\; \sum_{l=0}^{\infty} (\gamma \lambda)^{l}\, \delta_{t+l} \;}

两种极端值:

  • λ=1\lambda = 1:就是原始 At=GtV(St)A_t = G_t - V(S_t)(蒙特卡洛版),无偏、但方差大;
  • λ=0\lambda = 0:就是单步 δt\delta_t(一步 TD 版),方差极小、但有偏(高度依赖 Critic)。

λ(0,1)\lambda \in (0,1) 区间提供了一条平滑的偏差-方差插值曲线。PPO 论文里的实践甜点是 λ=0.95\lambda = 0.95,这个设置在绝大多数连续/离散控制任务、以及后来的 RLHF PPO 里都一直沿用至今。


六、REINFORCE with Baseline 完整算法流程

从《策略梯度法公式推导》文档 §三 的算法 1(无基线 REINFORCE)升级:

算法 3:REINFORCE with State-Value Baseline

输入:可微策略网络 πθ\pi_{\theta}、状态价值网络 Vϕ(s)V_{\phi}(s)(Critic)、两网络学习率 ηθ,ηϕ\eta_{\theta},\,\eta_{\phi}、折扣因子 γ\gamma

对每个 episode k=1,2,k = 1, 2, \dots

  1. 用策略 πθ\pi_{\theta} 在环境里采样一条完整轨迹
    τ  =  (S0,A0,R1,S1,A1,R2,,ST1,AT1,RT)\tau \;=\; (S_{0}, A_{0}, R_{1}, S_{1}, A_{1}, R_{2}, \dots, S_{T-1}, A_{T-1}, R_{T})
  2. 反向递推计算每步折扣回报(t=T10t=T-1 \to 0
    GT1=RT,Gt=Rt+1+γGt+1G_{T-1} = R_{T},\qquad G_{t} = R_{t+1} + \gamma G_{t+1}
  3. Critic 一步回归更新(最小化 MSE 拟合价值)
    ϕ    ϕηϕϕ  1Tt=0T1(Vϕ(St)Gt)2\phi \;\leftarrow\; \phi - \eta_{\phi}\cdot \nabla_{\phi}\;\frac{1}{T}\sum_{t=0}^{T-1}\Big(V_{\phi}(S_{t}) - G_{t}\Big)^{2}
  4. Actor 一步梯度上升(优势加权)
    θ    θ+ηθt=0T1γt  (GtVϕ(St))Atθlogπθ(AtSt)\theta \;\leftarrow\; \theta + \eta_{\theta}\cdot \sum_{t=0}^{T-1}\gamma^{t}\; \underbrace{\big(G_{t} - V_{\phi}(S_{t})\big)}_{A_{t}} \cdot \nabla_{\theta} \log \pi_{\theta}(A_{t} \mid S_{t})

与 CartPole 朴素代码的衔接(呼应逐行解读文档 §四第 2 条缺陷)

《入门案例:CartPole + REINFORCE 逐行解读》里的朴素 REINFORCE 代码没有做因果修正,也没有基线。升级到本节算法版本需要改动三点:

  1. 因果修正:把整局累计奖励 episode._return 改成按时刻 tt 的折扣回报 GtG_t
  2. 新增 Critic 网络:增加一层 ValueNet(s) → 标量(和策略网络同输入结构,4→128→1 输出状态价值 VV);
  3. 权重换成优势:每步梯度乘的权重从 GtG_t 改成 At=GtVϕ(St)A_t = G_t - V_{\phi}(S_t)

七、一张表串起所有版本:从朴素到因果到减基线

版本梯度乘的权重无偏?方差权重符号分布实现成本
朴素 REINFORCER(τ)R(\tau) 整局总奖励最大全正/全负整局一致最简单
因果修正 REINFORCEGtG_{t}(该步后折扣回报)很大(γ1\gamma\to 1 更大)几乎全正(CartPole 类)略难
REINFORCE with BaselineAt=GtVϕ(St)A_{t}=G_{t}-V_{\phi}(S_{t})大幅降低有正有负围绕 0 对称多训一个 Critic
Actor-Critic / GAEδt\delta_tAtGAE(γ,λ)A_t^{\mathrm{GAE}(\gamma,\lambda)}λ<1\lambda<1 略偏更进一步降低有正有负Critic + bootstrap

7.1 四条梯度骨架公式对照

名称梯度公式
朴素 PG(无因果修正)J=E[tlogπtR(τ)]\nabla J = \mathbb{E}\Big[\sum_{t}\nabla \log \pi_{t} \cdot R(\tau)\Big]
因果正确 PGJ=E[tlogπtGt]\nabla J = \mathbb{E}\Big[\sum_{t}\nabla \log \pi_{t} \cdot G_{t}\Big]
减基线 PG(本档主角)  J=E[tlogπtAt]  \boxed{\;\nabla J = \mathbb{E}\Big[\,\sum_{t}\nabla \log \pi_{t}\cdot A_{t}\Big]\;}
AC / PPO 骨架同上公式骨架 + Clip 裁剪比值 Clip(rt(θ),1ϵ,1+ϵ)\mathrm{Clip}(r_t(\theta),1-\epsilon,1+\epsilon) 构成信任域
RLHF PPO同上 + 奖励模型打分 rm(x,y)r_{m}(x,y) 作为奖励、减去 SFT 参考模型的 βDKL(πθπSFT)\beta\cdot D_{\mathrm{KL}}(\pi_{\theta}\|\pi_{\text{SFT}}) 惩罚项

八、关键公式总览(速查卡)

编号条目公式
1softmax 梯度零均值恒等式aπθ(as)logπθ(as)=0\sum_{a} \pi_{\theta}(a \mid s)\,\nabla \log \pi_{\theta}(a \mid s) = 0
2合法基线条件bt=bt(St)b_{t} = b_{t}(S_{t}),不依赖 AtA_t
3减基线项恒为零向量Eτ[tlogπtbt(St)]=0\mathbb{E}_{\tau}\big[\sum_{t}\nabla \log \pi_{t}\cdot b_t(S_{t})\big] = 0
4无偏性保证减基线前后梯度期望严格相等
5最优基线闭式(Greensmith)b(s)=Ea[GY2]/Ea[Y2]b^{*}(s)=\mathbb{E}_a[G\,\|Y\|^2]/\mathbb{E}_a[\|Y\|^2]Y=logπY=\nabla \log \pi
6工程常用基线b(s)=Vπ(s)=Ea[G(s,a)]b(s)=V^{\pi}(s)=\mathbb{E}_{a}[G(s,a)]
7优势函数定义Aπ(s,a)=Qπ(s,a)Vπ(s)  =  GtV(St)A^{\pi}(s,a)=Q^{\pi}(s,a)-V^{\pi}(s)\;=\;G_t - V(S_t)
8优势的零和性质Eaπ(s)[A(s,a)]=0\mathbb{E}_{a \sim \pi(\cdot\|s)}[A(s,a)] = 0
9TD 误差递推展开At=δt+γAt+1A_t = \delta_t + \gamma A_{t+1}δt=Rt+1+γV(St+1)V(St)\delta_t = R_{t+1} + \gamma V(S_{t+1}) - V(S_t)
10GAEAtGAE=l=0(γλ)lδt+lA_t^{\mathrm{GAE}} = \sum_{l=0}^\infty (\gamma\lambda)^l\,\delta_{t+l}

十、延申:PPO vs GRPO——两种基线范式的原理与优缺点

基线的「两条合法性约束」(仅依赖 StS_t、条件期望为零)在工程上有两条完全不同的实现路径。目前大模型强化对齐(RLHF/RM)领域最主流的两版算法——PPOGRPO——正好分别代表了「参数化 Critic 基线」与「组内统计基线」这两大流派,它们的差异本质上就是基线函数 b()b(\cdot) 怎么选、怎么估的差异。

10.1 PPO:Critic 参数化基线 bPPO(s)=Vϕ(s)b_{\text{PPO}}(s) = V_{\phi}(s)

经典 PPO(含 Schulman 2017 原始版、以及后来 RLHF 沿用的三网络版)的基线就是本文 §4.3 一直讲的状态价值 Critic

  bPPO(St)  =  Vϕ(St),AtPPO  =  AtGAE(γ,λ)  \boxed{\; b_{\text{PPO}}(S_t) \;=\; V_{\phi}(S_t),\qquad A_t^{\text{PPO}} \;=\; A_t^{\mathrm{GAE}(\gamma,\lambda)} \;}

具体实现上是独立训一个参数化神经网络 Vϕ(s)V_{\phi}(s),在每轮 Actor 更新之前用 MSE 回归蒙特卡洛折扣回报 GtG_t(或 TD 目标)把 Critic 先收敛几轮,然后把 At=GtVϕ(St)A_t = G_t - V_{\phi}(S_t) 送去乘 Actor 的 logπθ\nabla \log \pi_{\theta}

作为基线的优点:

  1. 方差降低最彻底:它是 Greensmith 最优基线闭式(§4.1)的直接近似——当 Critic 训练充分、VϕVπV_{\phi} \approx V^{\pi} 时,优势估计的期望噪声是所有 state-dependent 基线中最小的。
  2. 样本可混批训练b(s)b(s) 只看当前状态,不要求同一 batch 内的样本来自同一个 prompt / 同一局 rollout。这样可以把不同任务、不同 prompt、不同长度的轨迹全扔进一个大 batch 一起训,GPU 利用率和吞吐都最高。
  3. 跨时间步 bootstrap 加持:搭配 GAE(γ,λ) 后,基线不仅吸收了整条 GtG_t 的整体偏置,还吸收了 bootstrap 带来的方差抑制,长序列(大模型生成长文本 4k+ token)时的稳定性远好于纯蒙特卡洛。

作为基线的缺点:

  1. 工程成本翻倍:必须训两个网络(Actor πθπ_θ + Critic VφV_φ),GPU 显存直接 double;训练时还得控制 Critic 更新步数不要太超前 Actor,又多了一组超参(vf_epochs / vf_coef / TD 目标是否用 target network 等)。
  2. Critic 不准 → 有偏且误导:如果 Critic VφV_φ 拟合很差(比如奖励分布偏长尾、或大模型某些 prompt domain 数据不足),那么 At=GtVφA_t = G_t - V_φ系统性偏高/偏低,等价于「把有偏的基线减进去了」——虽然严格满足两条合法性约束(仍是 StS_t 的函数、条件期望相减后仍无偏),但有限样本下的实际估计会被 Critic 的系统误差狠狠带偏,Actor 梯度方向会错。
  3. 额外调参成本:基线估计和 PPO clip 比、KL 惩罚系数强耦合,需要一起调;RLHF 场景下 Critic 往往还要共享 Actor 的 backbone + 加 value head,训练不稳定时 value loss 爆炸会拖垮整个流程。

10.2 GRPO:组内统计均值基线 bGRPO(p)=Rˉgroupb_{\text{GRPO}}(p) = \bar{R}_{\text{group}}

GRPO(Group Relative Policy Optimization,2024 年之后大规模大模型对齐的主流)把基线的思路退回到最朴素的「减组平均」——完全不训 Critic 网络,基线就是「同一条 prompt 下 N 次 rollout 的奖励分数均值」:

  bGRPO(p)  =  RˉN(p)  =  1Nj=1NR(p,x(j)),Ai  =  R(p,x(i))    bGRPO(p)σgroup+ϵ  (GRPO-Baseline)\boxed{\; \begin{aligned} &b_{\text{GRPO}}(p) \;=\; \bar{R}_N(p) \;=\; \frac{1}{N}\sum_{j=1}^{N} R(p,\,x^{(j)}),\\ &A_i \;=\; \frac{R(p,\,x^{(i)}) \;-\; b_{\text{GRPO}}(p)}{\sigma_{\text{group}} + \epsilon} \end{aligned} \;} \tag{GRPO-Baseline}

其中 pp 是一条输入 prompt,x(1..N)x^{(1..N)}对同一个 prompt 连续采样 N 条回复(通常 N=4,8,16N=4,8,16,越大越好但成本线性增长),R(p,x)R(p,x) 是该 prompt+response 的对齐后奖励(通常是 RM 打分 rRMr_{\text{RM}} 减去 KL 惩罚项 βKL(πθπref)β\, \mathrm{KL}(π_θ \| π_{\text{ref}})),分母再加个组内标准差归一化(把优势标准化成零均值单位方差的 z-score)。

为什么它是合法基线?—— 验证两条约束:

  • 约束 1「仅依赖 StS_t」:在大模型 token-level RL 里 St=(p,x<t)S_t = (p, x_{<t}),组内均值基线完全不看单条 rollout 的任何动作选择,只看 prompt pp 和组内其他兄弟样本的奖励,对当前样本 x(i)x^{(i)} 的动作序列是「只读、条件化」的,满足「基线不耦合 AtA_t」的独立性约束。
  • 约束 2「条件期望相减为零」:当组大小 NN 足够大、或者我们对所有可能的组抽样再做一次外层期望时,Egroup[RˉN(p)]=Exπ(p)[R(p,x)]\mathbb{E}_{\text{group}}[\bar{R}_N(p)] = \mathbb{E}_{x \sim π(\cdot|p)}[R(p,x)],于是减完基线后的优势满足 Ex(i)[Aip]=0\mathbb{E}_{x^{(i)}}[A_i | p] = 0——就是 §3.1 合法性定理的直接推论。

作为基线的优点:

  1. 工程极简、显存省一半彻底砍掉 Critic 网络,RL 训练只需要 Actor π_θ + 冻结的 reference π_ref。大模型场景下这是决定性的工程优势——70B 级模型训 PPO 需要 4~6 卡共享 Critic,GRPO 直接 2~3 卡就能跑,稳定度也更高。
  2. 同 prompt 偏置完美消除:大模型对齐里奖励分布的绝对水平高度依赖 prompt(比如简单题 RM 全给 8~9 分、难题全给 2~3 分)。传统 Critic 基线 Vφ(p)V_φ(p) 如果对 prompt domain 覆盖不好,会在简单 prompt 上系统性低估、难题上高估;而 GRPO 的组均值基线对同一个 prompt 的 N 条回复做「相对排序」,prompt 本身的绝对难度偏置被减得一干二净——这在多任务混合的 RLHF 场景下是巨大的鲁棒性优势。
  3. 零 Critic 训练超参:不需要 vf_epochs / vf_coef / cliprange_vf / target network 这一整套 Critic 相关的超参;超参空间小 → 失败模式少 → 工业流水线的可重复性高。

作为基线的缺点:

  1. 方差降低受限于组大小 N:组内均值基线的估计误差是 O(1/N)\mathcal{O}(1/\sqrt{N})——N=4N=4 时基线噪声还是挺大的,方差降低效果比不上训练充分的 Critic 基线;要达到和 PPO Critic 相近的方差抑制水平,需要 N16N \ge 16,但 rollout 成本也线性涨到 16 倍,吞吐-方差的 tradeoff 比 PPO 更陡
  2. 强制按 prompt 分组,样本不可混批:一个 batch 里如果混入来自不同 prompt 的样本,GRPO 的组基线就失去了合法性(因为你把 prompt-A 的奖励均值拿去减 prompt-B 的样本了,条件期望相减不再等于 0)。工业上只能「每 8/16 条回复绑定同一条 prompt」组织 batch,batch 利用率和 padding 浪费都比 PPO 差;短回复场景下 GPU 计算的实际吞吐可能掉到 PPO 的 60%。
  3. 不提供跨时间步 bootstrap:GRPO 基线是回复级标量(一条回复一个 AA,乘整条回复所有 token 的 logπ\nabla \log \pi),没有时间维度的 GAE bootstrap。虽然它靠 KL 惩罚和 RM 信号本身能跑通,但长回复中「后半段 token 应该对早期错误承担多少责任」的信用分配问题比 PPO+GAE 更弱——在需要长期规划的代码生成 / 多步推理任务上,样本效率通常会输给一个训得好的 PPO Critic。
  4. 组策略会引入组间方差:如果同 prompt 下 N 次 rollout 里偶然出了一条特别极端的高分/低分样本,组均值会被拉偏,导致其余 N1N-1 条样本的优势估计同时被误判——这是小 N 下 GRPO 的高频失败模式(缓解方法:取组中位数代替均值做基线,或做 winsorize 截断)。

10.3 对比表与选型建议

维度PPO(Critic 参数化基线 Vφ(s)V_φ(s)GRPO(组内统计基线 RˉN\bar{R}_N
基线来源参数化神经网络 Critic,MSE 回归目标同 prompt 下 N 条 rollout 的奖励均值/中位数
是否需要第二网络✅ 需 Actor+Critic 两网络 + value head❌ 仅 Actor + 冻结 ref,无 Critic
显存/算力成本高(双网络 + Critic 训练轮次)低(单网络)
方差降低效果强(Critic 训得好时接近最优基线闭式)中,随 N\sqrt{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πθ(Gb()让权重有正有负、均值为零)]\nabla J(\theta) = \mathbb{E}\Big[\nabla \log \pi_{\theta} \cdot \big(\underbrace{G - b(\cdot)}_{\text{让权重有正有负、均值为零}}\big)\Big]
    差别只在基线 b()b(\cdot) 是「用 Critic 算出来的」还是「用组内兄弟样本算出来的」。

九、下一步去哪里

  • 回到《入门案例:CartPole + REINFORCE 逐行解读》§四第 2 条缺陷:看完本档就完全知道「没有减基线」的代码升级路径。
  • 下一篇建议:PPO-Clip 算法原理(信任区域裁剪比值 rt(θ)[1ϵ,1+ϵ]r_t(\theta)\in[1-\epsilon,1+\epsilon],配合本节打好的 GAE 优势估计骨架)。
  • 大模型方向:《大模型强化学习建模思路》里的 RLHF 第三阶段,用的就是本节减基线后的梯度骨架,把 AtA_t 换成「奖励模型打分 − KL 惩罚」后的 Critic 价值优势估计。