
图中一个比较当前策略与本轮旧策略,另一个比较参考分布;目标裁剪并非硬性限制模型概率。
PPO 的比率裁剪和 RLHF 中的参考模型 KL 惩罚,经常一起出现,于是被误读成两个名字不同的同一约束。它们比较的对象、进入目标的方式和能提供的保证都不同。把这些分开,才能解释为什么“已经裁剪”之后仍然需要监测策略偏移。
先画出两条比较线
概率比率常用当前策略对已采样动作的概率,除以产生该批样本的旧策略概率。它围绕这次更新相对采样策略改变了多少,旧概率是轨迹的一部分,不能随更新不断覆盖。
参考模型则可以保持为某个选定基线,例如相应的监督微调策略,用来约束较长期的行为偏离。当前策略即使每轮都只做看似温和的小更新,经过很多轮也可能逐渐远离这个参考,因此两条比较线不能互相替代。
比较对象也未必总是固定不变,具体训练系统可以有自己的更新安排;一旦参考策略发生变化,约束含义就会随之变化,应明确记录,不能继续按原来固定基线解释数值。
裁剪的是代理目标中的一项
令 r 为新旧概率比率,A 为优势,常见的单样本裁剪项是 min(r×A,clip(r,1-ε,1+ε)×A)。这里描述最大化目标;如果实现写成最小化损失,通常需要相应变号,不要忽略优化方向。
自设 ε=0.2、A=1、r=1.4。未裁剪项为 1.4,裁剪比较项为 1.2,最终取 1.2。继续把 r 往上推,并不会让这一项的目标收益继续增长。但当前策略的 r 仍然可以是 1.4,并没有被物理改写成 1.2。
若 A=-1、r=0.6,两项分别是 -0.6 和 -0.8,取最小得到 -0.8。这说明正负优势下被抑制的有利方向不同,不能简单把所有样本贡献都替换成“裁剪后比率乘优势”。

为什么它不是硬信任区域
模型参数共享,某个样本的更新会影响其他动作和状态,多个损失项也可能共同作用。即便某个样本进入平台区,其他项仍可能改变它的实际概率。裁剪代理目标不保证每个动作的比率都被限制在区间内。
它也不直接给整个策略分布的 KL 设置严格上限。若你需要按某个统计量早停或调整更新预算,需要额外计算并定义规则,不能从 ε 的数值直接推出一个通用的 KL 阈值。
有限样本只覆盖采样到的动作,也不能自动说明所有未采样区域都变化很小。检查平均值之外的异常分布与有效样本,同样是解释训练行为的一部分。
KL 惩罚约束的是分布偏离
相对参考模型的 KL 惩罚,意图是在目标里对偏离基线付出代价。惩罚系数越大,对这种偏离的权衡通常越强,但实际结果还受奖励尺度、数据和优化过程影响,并不是给定系数就得到固定距离。
KL 的方向需要写清,两个方向一般不相同。实际训练还可能使用采样近似;单个样本上的对数概率差可以为负,不要把它与完整分布上非负的 KL 性质混为一谈。数值叫什么,必须与估计口径对应。
这类惩罚也不是质量本身。参考模型若存在旧错误,紧贴它不一定更符合任务;奖励若有盲点,允许偏离也可能走向投机。约束与任务评价应共同设计,而不是把 KL 小当成答案必然正确。
用小算例检查公式,用评测检查效果
可以在两个动作的有限分布上计算完整 KL,再核对正负优势的裁剪值,确保符号和比较对象正确。这个实验只验证公式,不调用真实语言模型,也不能说明训练是否更好。
实际监控时,分别记录相对旧策略和相对参考策略的指标,说明采样与聚合方式,再结合奖励和固定任务结果比较。若发现某个 token 的实际比率超过 1+ε,你会立即判定代码错误,还是先确认裁剪目标到底承诺了什么?