← RL 知识库RL / 4 OF 8PPO、裁剪与 On-policy 数据
限制更新激励,但不把它误当硬信赖域。
学习指南与本课目录
LEARNING CONTRACT理解 → 实现 → 研究
目标:解释本课机制、复现一个例子、测试一个失败案例。读完不自动代表掌握。
- 理解层:写明假设、形状/单位和一个反例。
- 实现层:复算数值例子并检查边界。
- 研究层:在匹配预算下比较一个替代方法。
理解机制
PPO 比较当前策略与 rollout 策略的动作概率。裁剪目标限制代理目标中某些改进激励。正 advantage 关注上边界,负 advantage 关注下边界。old policy 是采集该批数据时的冻结参考,不必是原始预训练模型。轨迹越来越陈旧时,近似的有效性会改变。
机制图与逐步推导
原创机制示意图,按从上到下顺序阅读。 SVG ↓- 对 rollout 批次固定 old log 概率,使用 exp(logπθ−logπold) 计算比值,避免极小概率直接相除。
- 且 advantage 为正时,比值超过 1.2 不再获得额外代理激励;advantage 为负时,低于 0.8 的另一侧对应裁剪。
- 、Â=−2 时,原始目标 −1,裁剪候选 −1.6,minimum 为 −1.6。advantage 的符号决定哪一支更保守。
实验检查点测试两种符号与裁剪边界。所有更新立即裁剪时,检查学习率、advantage 尺度及 rollout 陈旧程度。
LOCAL / SYNTHETIC / INTERACTIVE改变一个变量,解释结果为什么变。
原创教学计算,并非论文 benchmark 复现。条形在面板内相对缩放,具体数值与单位以标注为准。
原创练习与分析
、 时,比较 Â=+1 和 −1,目标分别为 1.2 和 −1.5。再试 ,得到 0.5 和 −0.8。展开答案前解释每个分支。
裁剪不保证固定 KL 上界,也不保证任务奖励单调提升,两者都需监测。
除了奖励,还应记录什么?
近似 KL、熵、裁剪比例、advantage 分布、价值损失、rollout 长度及留出任务指标。
下一章 → SFT → RLHF → DPO:不同训练信号MATHEMATICAL REVIEW · 2026-10-26假设、参考实现与验收
最大化裁剪替代目标,或最小化其负值。策略更新期间固定旧 log 概率和 advantage;采样动作的旧概率须非零。裁剪不是硬 KL 约束。
已复核公式条件、单位及算例。实现隔离一个数值机制,不训练完整策略,也不控制真实硬件。
运行前:预测一个边界情况
负 advantage 必须先相乘再取 min,不能裁剪最终目标值。
提示:隔离假设
固定基线输入,只改变一个参数或边界;同时比较数值与声明单位。单例通过仅验证该样例。
最小可运行算例
将算例及所链接模块保存在同一目录。使用 Node.js 22 或更高版本,然后运行 node ppo-updates.mjs. 无需第三方运行依赖。
const solve=()=>{
const ratio=1.5, clipped=Math.max(.8,Math.min(1.2,ratio));
return [Math.min(ratio,clipped),Math.min(-ratio,-clipped)];
};
const actual=solve();
const expected=[1.2,-1.5];
if(JSON.stringify(actual)===JSON.stringify(expected)){console.log('PASS',actual)}else{
const a=[actual].flat(), b=[expected].flat();
if(a.length!==b.length||a.some((v,i)=>!Number.isFinite(v)||Math.abs(v-b[i])>1e-10))throw Error('Numerical mismatch');
console.log('PASS within 1e-10',actual);
}
参考输出——先预测再展开
[
1.2,
-1.5
]
测试与迁移
负 advantage 必须先相乘再取 min,不能裁剪最终目标值。
在下方笔记记录输入、代码版本、期望值和实测值;再构造违反上述假设的反例,解释原结论为何不再成立。
下载完整代码包(.tar.gz) · 完整参考代码与回归检查预测、检验与证据记录
展开答案前先预测一个结果;练习后记录差异和迁移测试。记录仅存本地,在不同语言版本间共用。
打开记录/导出/清除 →数学复核范围逐篇记录,不代表完成论文实证复现;可在笔记中记录疑似错误。 复核范围