稳定更新:旧样本的比值会爆,六家怎么裁
REINFORCE 与 GRPO 的账本都默认「轨迹采自当前策略」,而真实系统里生成远慢于更新——样本一进队就变旧,直接算梯度会把策略拽飞。本篇沿 L11 p.18-35 走通稳定更新整条线:同步批处理 GPU 甘特图上 generate/update/等待交替(p.19),异步 AReaL 让 rollout 与 learner 并行、代价是 staleness(p.20,Fu et al. 2026),数值例里行为策略与 learner 策略三动作概率 0.40→0.70 错位(p.22);重要性采样一行恒等式救偏、权重 1.75 与 0.50 当场可算(p.23),整条比值连乘 1.05 的 100 步 ≈ 132 当场爆炸(p.24,CTPO),累积比值散布随 token 位置增大(p.25)、早期动作错的历史 token 级比值根本看不见(p.26);于是六家各裁一段——PPO/GRPO 当前动作、CTPO 截至当前、GSPO 整条长度归一化(p.27),clip 界 0.8/1.2 与 PPO/CISPO 两目标并排(p.30-31),PPO 曲线不对称的悲观更新(p.32);收在参考模型 KL 与熵奖励两道护栏(p.33-34)与六方法×四维总结表(p.35),延伸至 GSPO 序列似然级与 DAPO 四件套,末桥接 HF 博客的实现细节。
上一讲的账本里有一条默认成立的前提:轨迹采自当前策略。真把它放进训练集群,前提立刻松动:生成一条带工具调用的长 rollout,远慢于 learner 的一次更新,样本还在队列里,策略已经又往前走了。旧样本直接拿来算梯度,策略会被拽飞。这一篇讲的,就是怎么救。
一、异步的账:样本是怎么「变旧」的
两种训练循环的差别,L11 p.19 画成了 GPU 甘特图。同步(synchronous)要整批轨迹全部完成才能更新:图上 generate、update 与等待三段交替,生成时训练卡闲置,更新时推理卡闲置,一条慢轨迹拖住全批。
异步(asynchronous)走另一条路,p.20 的代表是 AReaL(Fu et al. 2026,§3.2/§4.1)。rollout worker 持续生成,learner 拿已完成轨迹就更新,两头不再互相等。
代价写在合同小字里:部分轨迹来自更旧的策略版本。这个版本差就是 staleness(陈旧度)。
陈旧不是抽象名词,p.22 把它算成了数。场景是一个 bug 修复任务,三个候选动作。行为策略 μ 是生成轨迹的那个版本,learner 手里的 πθ 是更新时的版本,两边概率已经错位:
| 动作 | μ(生成时) | πθ(更新时) |
|---|---|---|
| Check None explicitly | 0.40 | 0.70 |
| Use get(…,3) | 0.40 | 0.20 |
| Keep original code | 0.20 | 0.10 |
拿 μ 采出的动作直接进 πθ 的策略梯度,等于按新价签记旧账。更新会系统性地偏向 πθ 已经不那么想做的动作,把它们继续当主力交付。
二、救偏一行式,与长轨迹上的爆炸
补救来自概率论里最老的一行恒等式,重要性采样(importance sampling,p.23)。想算 πθ 下的期望不必重采,把 μ 的样本按两个策略的概率比值重新加权即可:
比值用第一节的表当场算得出。「Check None explicitly」0.70/0.40=1.75,πθ 比生成时更想做,证据增值;「Use get (…,3)」0.20/0.40=0.50,πθ 已没那么想做,证据打折。旧样本就这样从不能用变成加权用,这就是救偏。
但换算到整条轨迹,这个权重是连乘的,p.24 的式子是:
一步只差一点点 ——1.75 与 0.50 都在 1 的量级,加权后的估计还站得住。
每步温和高估 1.05,连乘 100 步 ≈ 132:方差爆炸,少数样本独占梯度,其余几乎白采(L11 p.24)。
爆炸不是算术巧合。CTPO(Zhang et al. 2026,§3.2)在工具调用数学 rollout 上做了实测,p.25 的 Fig.1 显示:token 级累积比值 的散布随 token 位置后移持续增大,轨迹前段还贴着 1,后段铺成失控的扇形。
更深一层在 p.26,CTPO §3.1 叫它结构性失明:早期动作改变了后续历史。就算下一个动作的条件比值恰好等于 1,也就是这一步两个策略给同一动作同样的概率,到达这个历史本身的概率也只有 0.10/0.40=0.25。
token 级比值天生看不见「我为什么会在这里」。长轨迹的账,越往后越没法直算。
三、六家裁剪:谁用哪段动作、怎么夹
整条不可用,于是各家裁两刀。第一刀,比值取哪一段动作,CTPO Table 1 在 p.27 排成一张表:
| 方法 | 比值用哪段动作 |
|---|---|
| PPO / GRPO | 只用当前动作 |
| DAPO / CISPO | 亦用当前动作,但 clipping 规则不同 |
| CTPO | 截至当前 token 的全部动作 |
| Full ratio | 整条响应全部动作 |
| GSPO | 全部动作,再做长度归一化 |
第二刀,取完怎么夹。p.30 的 token 级比值与裁剪:
示例界 0.8 与 1.2:比值一出界就被按在边界上。夹完怎么进目标函数,p.31 上 PPO 与 CISPO 给出两种答案:
原始项与夹取项取小 —— 比值出界时自动落到更保守的那份更新上,损失里仍带着比值。
sg 停梯度,夹过的 c_t 只当权重;损失回到 log πθ 的形状,比值不再被优化推着跑(出自 MiniMax-M1,arXiv 2506.13585)。
再看 PPO 那条裁剪曲线的不对称,p.32 的示意取 ε=0.2,改编自 PPO Fig.1。优势为 +1 时,比值超过 1+ε 后目标不再涨,好样本的影响封顶;优势为 −1 时,比值低于 1−ε 后目标不再跌,坏样本的惩罚封底。
两头都不再变,策略就不会被少数爆比值的样本拖着跑。clip 管的不是更新多大,而是单条样本最多能影响多大。
四、两道护栏与一张总结表
clip 管住单步步长;更长期的漂移,p.33-34 交给两道护栏。其一是参考模型 KL(reference KL):
π_ref 是冻结的 SFT 起点,一根固定锚;GRPO 目标里的那一项就是它(DeepSeekMath)。
分工清楚:clip 防这一步迈太大,KL 防离出发点走太远。
其二是熵奖励(entropy bonus):max J + αH (πθ),把分布撑宽,鼓励尝试低概率动作。课上有句保留,出处 PPO §5:更宽不保证更有用,买的是探索机会,收益没有保证。两道护栏,训练配方里常常同时在场。
全景收在一张六方法 × 四维度的总结表里,表在 p.35。「组比较」指减组均值再除以组内奖励散布:
| 方法 | 优势估计 | 比值 | 裁剪 |
|---|---|---|---|
| REINFORCE | reward-to-go,无 critic | 无 | 无 |
| PPO | GAE critic | 当前 token | 原始与夹取项取 min |
| GRPO | 组比较,无 critic | 当前 token | 同 PPO |
| CISPO | 组比较 | 当前 token | 夹后作固定权重 |
| GSPO | 组比较 | 整条响应,长度归一化 | 响应级比值上取 PPO min |
| DAPO | 组比较 | 当前 token | PPO min,但上限更高 |
表外两条延伸值得追。Qwen 团队 2025 年的 GSPO 把比值抬到序列似然(sequence likelihood)级,整条回答作为一个整体被加权,对应总结表里那一格:整条响应,长度归一化。
ByteDance Seed 2025 年的 DAPO 打包四件套:Clip-Higher、动态采样、token 级损失、超长奖励整形。其中 Clip-Higher 动的是上文那道不对称上限,把 1+ε 抬高,低概率 token 的上升通道不再被封死。
Qwen2.5-32B 在 AIME’24 拿 50 分,超 DeepSeek-R1-Zero-Qwen-32B 的 47,且只用一半步数。
从纸面到落码还隔一层实现细节。HF 博客 2023 年的 The N Implementation Details of RLHF with PPO 逐行复现 lm-human-preferences,把 padding、reward 归一化、KL、Adam 的数值差这些论文不写、跑了才知道的坑一一登记在册。
min (ρ_tÂ_t, c_tÂ_t) 在出界时系统性地选更保守的那份,用一点偏差换有界的步长。第二节那行恒等式无偏但会爆;clip 反过来,有界排在无偏前面。
与本讲的连接
全线从 p.19-22 的两种循环与 staleness 起步,经 p.23-26 的救偏与长轨迹爆炸、p.27-32 的六家两刀,收在 p.33-35 的两道护栏与总结表。谱系枢纽是那笔 1.05 的连乘账。单步温和,连乘爆炸,第三节六家的两刀由它逼出。
本节论文与规范
本节资料
- Rethinking Importance Sampling in LLM Policy Optimization: A Cumulative Token Perspective(CTPO) 论文2605.07331前沿
2026 前沿。用工具调用数学 rollout 实测:累积比值随 token 位置后移散布增大(Fig.1)、早期动作改变后续历史(到达概率 0.10/0.40=0.25);Table 1 系统对比 PPO/GRPO/CTPO/Full/GSPO/DAPO/CISPO 各用哪段动作进权重——L11 p24-27 整段素材来源。核心主张:比值取截至当前 token 的累积动作——已执行前缀全部乘入,作无偏的前缀修正,长轨迹上不再失明于「怎么会走到这个历史」。
2025 前沿。Clip-Higher、动态采样(跳过等奖励组)、token 级损失、超长奖励整形四件套;Qwen2.5-32B AIME'24 达 50 分超 DeepSeek-R1-Zero-Qwen-32B(47)且只用一半步数。L11 p35 表与 p44 动态采样均引此。四招各对一个病灶:clip 上界压熵、全等组浪费算力、样本级损失偏长回复、截断误判零分,消融逐项拆开。
- Group Sequence Policy Optimization 论文2507.18071前沿
2025 前沿。把重要性比率从 token 级改到序列似然级(整条响应长度归一化),裁剪与优化都在序列粒度;正面回答 L11 p25-27「长轨迹上 token 级比值发散怎么办」。序列比值数值范围紧、对 MoE 路由抖动也不敏感,已用于 Qwen3 系列训练。本站 lecture-05 另有同文条目,可对照两讲视角。
2023 工程经典(2024 增补)。逐行复现 OpenAI 2019 lm-human-preferences,整理 padding、reward 归一化/白化、KL 惩罚等 N 条实现细节,还发现 PyTorch 与 TF 的 Adam 数值差异会放大早期梯度。每条细节都附消融曲线,展示「论文不写的东西如何决定成败」。把 L11 的 PPO 公式落成可跑代码前,先过一遍这份清单。
2025 前沿。首个开源大规模 hybrid-attention 推理模型,RL 阶段用 CISPO——clip 后的比值 sg 停梯度作固定权重、乘 log 概率;L11 p31 把 PPO 与 CISPO 目标函数并排对照,完整消融见此报告。报告还给出 CISPO 与 PPO-clip 的稳定性、效率对照与百万 token 上下文的工具调用评测。看「算法换形式→系统省资源」的完整链条,读它。
- Proximal Policy Optimization Algorithms 论文1707.06347进阶
经典·高引(2017)。clip surrogate objective 换来多次 minibatch 复用样本的稳定更新;L11 p30-32 逐帧拆的 0.8/1.2 界与「超上界不加奖励、低于下界不加重惩罚」的不对称曲线即其 Fig.1。相对 TRPO 抛掉二阶近似,一阶优化器即可跑;clip、KL 惩罚、ACER 三变体同台对比。正文仅 8 页,是一切裁剪改进的原点。
AI 生成 · 仅供参考,与课程方无关。选中正文里的任何一段也能直接问我(解释一下 / 举个例子)。
本详解以 CMU 11-768 AI Agents (Fall 2026) 课程大纲为参考框架独立撰写,AI 辅助起草、人工抽审。 涉及的官方课件、论文与课程材料版权归原所有方,讲义为站内镜像、其余外链原文出处; 观点与文字(除标注引用外)为作者原创。