PPO
PPO
PPO 是 on-policy policy-gradient 方法,通过限制新旧策略的更新幅度来提升训练稳定性。
在 LLM 后训练中,典型流程是 rollout → reward → advantage → clipped policy update,并常加入 reference model 的 KL 约束。
PPO 不“必须”使用独立训练的 reward model;奖励也可以来自规则、环境、verifier 或其他函数。不同实现中的 beta、KL 估计和 token mask 定义必须单独确认。
更新为何受限
对每个 token,PPO 常优化 min(r_t A_t, clip(r_t,1-ε,1+ε)A_t),其中 r_t 是新旧策略概率比。因果链是:
1 | 旧策略 rollout |
PPO 的成本来自在线采样、reference/value 模型和多轮同步;KL 过强会学不动,过弱会奖励投机。token mask、EOS、长度归一和 verifier 稳定性必须进入评测,否则“平均 reward 上升”无法定位是真能力还是格式/长度变化。
相关节点:Reward Model、Reasoning RL、GRPO。参考:PPO 论文。
PPO 的账本比公式更重要
一次更新通常要保存 rollout 中每个 token 的旧 log-prob、mask、reward/return,并由 value head 或 GAE 估计 advantage。对语言模型,EOS 后的 padding 不能贡献 policy loss;如果把所有 padding 或 prompt token 算进去,策略会被无意义位置的梯度污染。长度归一也会改变长答案和短答案的相对权重,因此要明确是按 token、序列还是 batch 归一。
reference KL 是另一条约束路径。它可以逐 token 加入 reward,也可以作为额外损失;两者对 advantage 的数值和 credit assignment 不同。KL 迅速升高时,可能是学习率过大、reward scale 失控或 reference/tokenizer 不一致;KL 极低且 reward 不动,则可能是裁剪范围、mask 或 beta 把更新压没了。
为什么 on-policy 成本高
rollout 来自旧 policy,更新几轮后数据就变成 stale,必须重新采样才能保持 on-policy 近似。每轮还可能同时驻留 policy、reference、reward 和 value 模型,推理吞吐直接决定训练速度。若 reward 来自外部环境,超时和失败轨迹必须有明确分数,否则优化器可能学会提前终止。一个合格的 PPO 实验报告应给出 rollout tokens、有效样本率、clip fraction、KL、reward 分布和真实任务成功率,而非只报平均 reward。