本页把 PPO 的 clipped 目标函数从最原始的 策略梯度定理(Policy Gradient Theorem) 一步步推出来,并顺带推出 价值函数 与 GAE 的闭式表达。需要先阅读 ppo 了解记号。
1. 策略梯度定理
目标是最大化期望累积回报:
J(θ)=Eτ∼πθ[R(τ)],R(τ)=∑t=0Tγtrt
对 θ 求梯度:
∇θJ(θ)=∇θ∫P(τ∣θ)R(τ)dτ=∫∇θP(τ∣θ)R(τ)dτ
利用 对数导数恒等式(log-derivative trick) ∇θP(τ∣θ)=P(τ∣θ)∇θlogP(τ∣θ):
∇θJ(θ)=Eτ∼πθ[∇θlogP(τ∣θ)⋅R(τ)]
再把轨迹概率分解:
P(τ∣θ)=ρ0(s0)∏t=0Tπθ(at∣st)⋅p(st+1∣st,at)
只有 πθ 依赖 θ,所以 ∇θlogP(τ∣θ)=∑t=0T∇θlogπθ(at∣st)。代回:
∇θJ(θ)=Eτ∼πθ[t=0∑T∇θlogπθ(at∣st)⋅R(τ)]
2. REINFORCE
把期望替换为有限样本平均得到 REINFORCE 估计量:
g^=N1∑i=1N∑t=0Ti∇θlogπθ(at(i)∣st(i))⋅R(τ(i))
这是无偏的,但方差极大——每个时间步的梯度都乘以整条轨迹的回报,而整条回报受环境随机性、策略随机性共同影响。
3. 方差减小之一:rewards-to-go
当前时间步 t 的决策只能影响 t 及之后的 reward,所以把 R(τ) 替换成 ∑t′≥tγt′−trt′ 并不改变期望,但能降低方差:
∇θJ(θ)=Eτ∼πθ[∑t=0T∇θlogπθ(at∣st)⋅G^t],G^t=∑t′=tTγt′−trt′
这就是 causality/rewards-to-go 优化,等价于忽略过去的 reward(因为过去 reward 不依赖当前动作)。
4. 方差减小之二:baseline
对任意只依赖 st 的函数 b(st):
Eat∼πθ[∇θlogπθ(at∣st)⋅b(st)]=b(st)∇θ=1∫πθ(at∣st)dat=0
所以在 policy gradient 里减去任意与动作无关的 baseline 不改变期望:
∇θJ(θ)=E[∑t=0T∇θlogπθ(at∣st)⋅(G^t−b(st))]
最佳 baseline 在均方意义下是 b∗(st)=E[G^t∣st]——这正是 价值函数 Vπ(st)。用 Vπ 做 baseline,G^t−Vπ(st) 就是 优势(advantage) Aπ(st,at)=Qπ(st,at)−Vπ(st) 的 Monte Carlo 估计。
得到:
∇θJ(θ)=E[∑t=0T∇θlogπθ(at∣st)⋅A^t]
5. GAE 的推导
朴素做法 A^t=G^t−V(st) 是无偏的但方差高;一步 TD 残差 δt=rt+γV(st+1)−V(st) 方差低但有 bias(因为 V 是近似的)。GAE 把两者做指数加权平均。
先定义 k-step advantage 估计:
A^t(k)=−V(st)+rt+γrt+1+⋯+γk−1rt+k−1+γkV(st+k)
一个代数事实:A^t(k)=∑l=0k−1γlδt+l,其中 δt=rt+γV(st+1)−V(st)。验证:
∑l=0k−1γlδt+l=∑l=0k−1γl(rt+l+γV(st+l+1)−V(st+l))
展开后相邻项 γl+1V(st+l+1)−γl+1V(st+l+1) 互相消去,只剩首末项 −V(st)+γkV(st+k) 加上 rt+l 的加权和,恰好就是 A^t(k)。
接着做指数加权:
A^tGAE(γ,λ)=(1−λ)∑k=1∞λk−1A^t(k)
代入 A^t(k)=∑l=0k−1γlδt+l 并交换求和顺序:
A^tGAE(γ,λ)=(1−λ)∑l=0∞γlδt+l∑k=l+1∞λk−1=(1−λ)∑l=0∞γlδt+l⋅1−λλl
得到闭式:
A^tGAE(γ,λ)=l=0∑∞(γλ)lδt+l
两个极端:
- λ=0:A^t=δt,纯一步 TD。
- λ=1:A^t=∑l≥0γlrt+l−V(st),纯 Monte Carlo residual。
实现时用递推 A^t=δt+γλA^t+1,反向扫描一条轨迹 O(T) 得到所有 A^t。
6. 重要性采样与离线目标
到目前为止的所有推导都是同策略的——样本必须由当前策略 πθ 采样。但每次只用一次梯度就扔掉 rollout 数据太浪费。PPO 的做法是用重要性采样(importance sampling) 让同一批旧策略采集的轨迹可以重复用:
Ea∼πθ[f(a)]=Ea∼πθold[πθold(a)πθ(a)f(a)]
把这个恒等式应用到 policy gradient 并做一阶近似(把 ∇θlogπθ 替换为 ∇θπθ/πθold),得到 surrogate objective:
LIS(θ)=E(s,a)∼πθold[πθold(a∣s)πθ(a∣s)A^(s,a)]
把概率比记作 rt(θ)=πθ(at∣st)/πθold(at∣st)。注意 ∇θLIS∣θ=θold 恰好等于 policy gradient,所以这是一阶正确的。
7. TRPO 的 KL 约束
重要性采样的代价是:θ 偏离 θold 越远,rt(θ) 的方差越大,surrogate 与真实 J(θ) 的差距也越大。TRPO 的解决办法是加一个硬约束:
maxθ LIS(θ)s.t.Es[DKL(πθold(⋅∣s)∥πθ(⋅∣s))]≤δ
TRPO 证明了这个约束保证了策略单调改进。代价是要解一个约束优化问题,需要共轭梯度 + 二阶求解,实现复杂。
8. PPO-Clip 的一阶近似
PPO 想在不求二阶梯度的前提下达到类似效果。关键观察是:只要限制 rt(θ) 不偏离 1 太远,就近似于限制 KL 不偏离 0 太远(因为两者一阶一致)。但直接裁剪 rt(θ) 会让梯度在裁剪点不连续。PPO 的技巧是对目标函数而不是对概率比做裁剪:
LCLIP(θ)=E^t[min(rt(θ)A^t, clip(rt(θ),1−ϵ,1+ϵ)A^t)]
为什么是 min,不是 max 或直接取 clip
对 A^t>0 的情形分段讨论:
| rt(θ) 的范围 | rtA^t | clip(rt,1−ϵ,1+ϵ)A^t | min 结果 |
|---|
| rt<1−ϵ | rtA^t | (1−ϵ)A^t | rtA^t(更小) |
| 1−ϵ≤rt≤1+ϵ | rtA^t | rtA^t | rtA^t |
| rt>1+ϵ | rtA^t(更大) | (1+ϵ)A^t | (1+ϵ)A^t |
对 A^t<0 的情形对称:
| rt(θ) 的范围 | rtA^t | clip(rt,1−ϵ,1+ϵ)A^t | min 结果 |
|---|
| rt<1−ϵ | rtA^t(更大) | (1−ϵ)A^t | (1−ϵ)A^t |
| 1−ϵ≤rt≤1+ϵ | rtA^t | rtA^t | rtA^t |
| rt>1+ϵ | rtA^t | (1+ϵ)A^t(更大) | rtA^t(更小) |
综合两种情形:
- A^t>0 且 rt>1+ϵ:clip 生效,梯度变 0——阻止继续提高概率。
- A^t>0 且 rt<1−ϵ:clip 不生效,梯度继续推 rt 上升——允许恢复。
- A^t<0 且 rt<1−ϵ:clip 生效,梯度变 0——阻止继续降低概率。
- A^t<0 且 rt>1+ϵ:clip 不生效,梯度继续推 rt 下降——允许恢复。
直观解释:min 让 loss 始终取 “clip 之后” 与 “clip 之前” 两者中更悲观(对优化更不利)的那个。
- 当策略已经朝坏方向(advantage 变差)走得太远时,min 取 unclipped 的大损失,允许梯度把它拉回来。
- 当策略朝好方向(advantage 变好)走到超出 clip 范围时,min 取 clipped 的小收益,阻止它继续过冲。
这就是”悲观下界”的含义:clip 只阻止”超过 trust region 的奖励”,从不阻止”把策略拉回 trust region 的惩罚”。
9. 与 PPO 完整损失的关系
上述推导给出的是策略损失 LCLIP。实际训练时还要加上:
- −c1LVF(ϕ)=−c1(Vϕ(st)−Vttarg)2:让 value model 回归到 advantage 目标,详见 value-model。
- +c2S[πθ](st)=−c2∑aπθ(a∣st)logπθ(a∣st):策略熵作为探索奖励。
合起来就是 ppo 主页上的 LCLIP+VF+S。
10. 从这里到 GRPO
GRPO 所做的就是去掉 Vϕ:不再学习 value model,而是对同一个 prompt 采样 G 条 response,用组内 reward 的均值与标准差做 baseline。这相当于把上面第 4 节的 b(st)=Vπ(st) 换成 b(q)=mean(r),而 advantage 的方差归一化通过组内 std 实现。
由于 baseline 只依赖 prompt q 而不依赖 action,梯度仍然无偏;组内 G 足够大时 mean(r) 就是 Eo∼πθ[r(q,o)∣q] 的高精度 Monte Carlo 估计,与 Vπ 的作用等价。GRPO 的代价是每个 prompt 必须采样多条 response;收益是扔掉 critic 带来的显存与训练开销。
Comments