AI 原生系列 · 强化学习
规模熔炉
1 分钟速览——这一集讲了什么
在规模化之后,RL 算法不再轰轰烈烈地失败,而是开始悄无声息地失败悄无声息。策略熵单调下降,采样输出彼此趋同,探索逐渐终止——而 loss 曲线全程平滑如常。接着,各组开始返回完全相同的奖励,std(r) 归零,优势值归零,你的梯度也就没了。与此同时,损失函数里的每一个分母都在悄悄决定哪些样本才算数:Dr.GRPO 发现,GRPO 的长度归一化会专门拉长错误答案的长度,而除以 std(r) 则会给低方差问题过度加权 [2]。DAPO 提高了裁剪上界,并对失效分组重新采样,最终以一半的训练步数,在 AIME 2024 上拿到 50 分,对比 47 分 [1]。如果你在 RL 训练中只多记录一个标量,记录策略熵。损失函数不会告诉你这些。
前三集的一切都假设算法才是难点。到了规模化阶段,事实并非如此。到了规模化阶段,难点在于:你的训练可能早已停止学习,表面上却看不出任何异常.
核心思路:悄无声息的失败有三种形态
熵坍缩。 策略熵——也就是模型概率分布的分散程度——在训练过程中单调下降。采样得到的输出彼此趋同,逐渐变得近乎一模一样。探索在策略找到它本该能找到的策略之前就已经终止。训练不会崩溃,它只是悄悄停止发现任何新东西——这更糟糕,因为损失曲线看起来仍然一切正常。
零方差分组。 GRPO 从一组同源轨迹中计算优势值。如果组内每条轨迹得到的奖励都相同——简单问题全对,困难问题全错——标准差就是零,优势值也是零,整个分组对梯度的贡献就是零。你却为此付出了全额计算成本。
分母。 损失函数里的每一个归一化项,本质上都是在决定哪些样本才算数,而这个决定几乎肯定是某个人为了数值计算上的方便随手定的,他根本没意识到自己在做这样的决定。
数字说话
DAPO 组合了两项干预措施 [1]。Clip-Higher 把上下裁剪边界解耦,抬高上边界,这样低概率的探索性 token 就不会被压制——在对称裁剪下,恰恰是这些 token 受打击最重,因为它们的比率变动最大。Dynamic Sampling(动态采样)会对组内所有轨迹采样都拿到同一奖励的提示重新采样——换句话说:它拒绝在无法产生梯度的组上继续花算力。
结果是:同样是AIME 2024,DAPO 用 Qwen2.5-32B 拿到 50 分,而对比模型47DeepSeek-R1-Zero-Qwen-32B 只拿到 47 分,且 DAPO 用的训练步数只有50% [1].
请仔细读这句话,因为真正有意思的数字不是那个 50。三个百分点的准确率提升,只是一个论据。把算力砍半还能拿到同样的分数,这才是真正的发现。 这项干预并没有让模型变得更聪明,它只是阻止了优化器把自己的梯度信号扔掉。
往下一层看机制:你的分母,就是一种价值判断
Dr.GRPO [2] 在标准 GRPO 中发现了两种截然不同的偏差,二者值得被精确地指出来,因为它们把优化拉向了相反的方向。
长度偏差。 长度归一化专门放大了错误回答的长度。模型学会了:答错的时候写得更长——这和任何人的初衷都完全相反,放在仪表盘上看,却像是「模型在更深入地推理」。
回答层面的难度偏差。 把优势值除以std(r) 会让那些恰好方差较低的问题被过度加权。Dr.GRPO 去掉了这个缩放项,让每道题都被一视同仁地对待。
把这两项都去掉之后,在 Math-7B 上、用在 8×A100 上跑 27 小时 [2]——这个数字值得记住,因为它说明这类修复是一种修正,而不是规模上的堆料。
这个教训的适用范围远不止这一篇论文。损失函数里的每一个分母,都是一次关于「哪些样本更重要」的策略决定,而且从来没人把这个决定写下来。
先别急着往下看,自己猜一猜
标准 GRPO 用组内奖励的标准差去除每个优势值,还会用回复长度对损失做归一化。这两个操作看起来都只是普通的数值处理惯例。但其中一个,会在训练日志里制造出一种具体、可见的病态现象。是哪一个?它长什么样?
(a) 长度归一化会让正确答案变短。(b) 长度归一化会让错误答案变长。(c) 标准差归一化会让难题占据主导。(d) 标准差归一化会让低方差问题占据主导。
其中两个是对的,而且并不是大多数人会选的那两个。
事故现场:把探索的旋钮拧反方向
拿一条正常运行的 GRPO 训练流程,只改一处——收紧上裁剪边界,而不是放宽它。
接下来会依次崩坏:低概率 token 被压制得最狠;策略熵比基线下降得更快;同一组内的补全开始变得几乎一模一样;std(r) 归零;优势值归零;而且整个过程中损失曲线看起来完全健康.
最后这一步才是要害所在。没有报错,没有尖峰,没有 NaN。一条光滑、专业、看似无懈可击的曲线,对应的却是一个早在几千步之前就已经停止学习的模型。
如果你在一次 RL 训练中只多记录一个标量,记录策略熵。 如果要记录两个,就再记录一下奖励方差为零的组所占的比例——那正是你的梯度正在消失。
现实推演
挑一个你这周正在跑的训练或评估循环——一次 RL 训练、一次微调,哪怕是每晚跑的基准测试也行。找出其中每一个分母,写下它到底在说“哪些样本更重要”。
按 token 取平均?你已经决定了长样本更重要。按序列取平均?你决定了它们同样重要。在任何地方除以标准差?你决定了低方差样本更重要——而你几乎肯定不是故意的。你至少会找到一个自己也说不出道理的地方。
代价几何:说句实话
常数是不能直接搬的。 DAPO 的裁剪边界是针对那个模型、那类任务、那种序列长度调出来的。机制可以复用,数字不行。
这些修正手段会互相干扰。 Clip-Higher、动态采样,以及改动过的分母,动的都是探索这根弦。把它们叠在一起用,效果并非简单相加,而论文里报告的大多是单独使用时的结果。
而且,跑一次不算测量。 本集里的每一个数字都来自某个特定的设置;它能不能在你的场景里复现,是你自己需要去做的实验——而且要有足够多的随机种子,才能真正检测出你所声称的那个效应。
接下来往哪走
第 5 集要讲的是:当“生成结果”不再只是文本,而变成了在一个会回应你的世界里走出的一条轨迹——这时智能体外壳就不再是策略外面的脚手架,而成了策略本身的一部分。
第 4 集,出自 《智能工程历险记》第一季——因果引擎(The Consequence Engine)。本系列文中的每个论点都按类别标注——定义、推导、证据、工程取舍、开放问题——比喻可以用来引出一个论点,但绝不能充当这个论点的证据。每一集都配有一个可在 CPU 上运行的实验。本文不包含任何雇主或客户的相关材料。——Paul Jialiang Wu · agentic-portfolio-lovat.vercel.app
参考文献
- Yu, Q. et al. (2025). DAPO: An Open-Source LLM Reinforcement Learning System at Scale. Clip-Higher 与 Dynamic Sampling;在 Qwen2.5-32B 上于 AIME 2024 取得 50 分,对比 DeepSeek-R1-Zero-Qwen-32B 的 47 分,且训练步数只用了 50%。 arxiv.org/abs/2503.14476
- Liu, Z. et al. (2025). Understanding R1-Zero-Like Training: A Critical Perspective(Dr.GRPO)。长度偏差与 std 归一化难度偏差;在 8×A100 上跑 27 小时,于 Math-7B 达到最先进水平。 arxiv.org/abs/2503.20783
- Zheng, C. et al. (2025). Group Sequence Policy Optimization(GSPO)。面向 MoE 模型与长篇推理的序列级重要性比率。 arxiv.org/abs/2507.18071
- Chen, A. et al. (2025). MiniMax-M1(CISPO)。对重要性采样权重做裁剪,而非对参数更新本身裁剪。 arxiv.org/abs/2506.13585
- Shao, Z. et al. (2024). DeepSeekMath(GRPO)。以上所有工作都是在修补这一算法。 arxiv.org/abs/2402.03300
- Schulman, J. et al. (2017). Proximal Policy Optimization Algorithms. 本集所解耦的正是这里的裁剪机制。 arxiv.org/abs/1707.06347