模型怎么会"想"了:GRPO 与 R1

先给结论: 上一篇讲"结构省钱",这一篇转向训练方法。模型的"思考"不是教出来的,而是被分数逼出来的——GRPO 省掉了打分要用的"估分助教";随后的 R1 更反直觉:只给"答案对不对"这一种分数,就足够让模型自己长出停下来检查、错了回头重算的习惯,而没有任何示范是人类给它的。

一、强化学习就是"教练不教你动作,只给每次表现打分"

  • 策略:模型的"答题习惯"——面对一道题,它倾向怎么写、怎么收尾。
  • 奖励:给这次输出打的分。可以来自规则(答案对不对),也可以来自另一个模型(答得好不好)。
  • 强化学习(RL):不直接告诉模型正确答案,而是让它多试几次、每次给个分,再把它往高分方向推。

🏋️ 比喻: 普通教学是教练手把手纠正动作;强化学习是教练什么都不说,你每做完一次就得到一个分数——动作是你自己琢磨出来的。

难题来了:分数打给"整次表现",不是打给"每个动作"。 一道题写了几十步,最后只有一个"对"或"错"——像老师只给总分、不批改到每一行。

其他主流做法(如 PPO)的方案是再训一个"预估分数的助教",预测每一步值多少分。麻烦在于它通常与策略模型同规模——等于多养一个和主力一样大的模型,它的正式名字叫价值网络。

二、GRPO 的核心创新:不请助教,让同一道题写一组答案互相比

GRPO:不用「估分助教」的强化学习同一道题给同一个模型采样一组答案例如 16 个按规则打分答案对不对(自动判)组内比较比同组平均好多少 = 优势更新模型提高优势大的做法的概率循环省掉了「价值网络」——不需要额外训练一个模型来给每一步估分R1 进一步证明:只给「答案对不对」这一种分数,模型能自己长出回看与验证

GRPO 的状态循环:采样一组 → 自动打分 → 组内比较 → 更新

DeepSeek 的做法很干脆:既然请助教又贵又不一定准,那就不请了。

同一个问题让模型一次写一组答案——2024 年 2 月的 DeepSeekMath 用的是每组 64 条;到 R1 这一代,671B 的 R1-Zero 用每组 16 条。然后给这组分别打分,拿这组的平均分当基准:比平均好就奖励,比平均差就惩罚。

“这条答案比同组平均好多少”,就是论文高频词优势(advantage)——说穿了就是"相对同班同学,你这次发挥得好还是差"。

🧑‍🎓 比喻: 不请助教预先估分,而是让同一个学生把同一道题做五遍,看哪一遍明显比自己平均水平好,就照那个方向练。

归一化时,减平均分只压小波动、不改变方向;再除以组内波动程度则会改变实际更新步长。好处很实在:少养一个与主力同规模的模型。但要诚实说清它没省什么:奖励信号依然必需,“别跑太偏"的约束也还在。

还有一条边界:一组答案全对或全错时,组内没有差异,这次什么都学不到(优势全为零)。全对说明题太简单、全错说明题超纲——恰恰是能力边界上的题不产出信号。这正是后来 R1 要按难度混合采样(区域赛到 IMO 级)的原因。

顺带讲一个技术点:一根叫 KL 的橡皮筋

只盯分数最大化会出事:模型可能发现某种投机写法能拿高分,代价是把"说人话"的本事练坏(输出又长又乱、中英混杂)。所以要加一项约束——衡量"现在的模型"和"参照模型"差多远,差得越远扣得越多。这把尺子叫 KL 散度,像一根橡皮筋:能往新方向走,走太远会被拉回来。

两处值得记住的改动:DeepSeekMath 的约束强度系数是 0.04;R1 降到 0.001,但同时每 400 步把"参照模型"换成当时最新的策略。因为 R1 训练长达 10,400 步(约 1.6 遍数据),模型早就和开头那个自己不像了,绑在"原点"的橡皮筋拉不住;锚点刷到"最近的自己”,橡皮筋就始终绑在近处。

诚实标注: 这个"每 400 步刷新"的周期,论文没有做消融实验,所以它是合理设计,但不能说它被证明是最优的。

三、数学题特别适合,因为对错能自动判、还不会被打穿

用另一个模型当裁判(业内叫奖励模型)要付两笔代价:费力收集人类偏好数据训练它,而且它会被打穿。R1 论文附录有个干净的反例:奖励分数一路上升,Codeforces(编程竞赛)成绩却在下降——分数和真本事分家,圈里管这叫奖励钻营(reward hacking)。正因如此,R1 第二阶段的偏好奖励只敢加在最后 400 步(全程 1,700 步)。

数学题好就好在:答案对不对,一条规则就能判。 R1-Zero 的奖励只有两路(同权相加):准确奖励(数学答案按格式规则比对,代码用编译器加测试用例判)和格式奖励(思考过程必须包在指定标记里)。它没有用任何神经奖励模型,理由正是会被打穿、且策略每次变强都要重训——规则打分零标注、零维护、不会漂移,这才是数学题适合强化学习的原因。

这个数字的前提: 2024 年 2 月那篇的 7B 数学模型,用组大小 64、策略学习率 1e-6、约束系数 0.04、只在那 144K 道数学 CoT 题上做强化学习,MATH 基准从 46.8% 涨到 51.7%。三个前提:7B 规模、不依赖外部工具、单次成绩(Top1)。同一篇里采 64 条做多数投票是 60.9%——两个数不是一回事,不能混着引用。

四、R1 的故事:纯强化学习,让模型自己学会"回头重算"

先拆掉一个中文坑: 这里的"推理"是 reasoning,指模型想问题的过程;不是 inference(模型运行出结果,即"部署一次推理花多少显存"里的那个)。中文同名,两回事。

2025 年 1 月,R1 给出一个反直觉的结果:完全不提供人类推理示范,只让模型做题、只用规则打分,模型自己发展出了长链条思考、自我检查、走不通就回头重算的行为。这条纯强化学习路线叫 R1-Zero:AIME 2024 单次答题正确率从 15.6% 涨到 77.9%。

这里必须提醒口径:77.9% 是论文第二版(v2)的数字,第一版(v1)同一格写的是 71.0%。 论文没解释为何修订,两个数都在网上流传——所以引用 R1-Zero 成绩必须带版本号。

“涌现"要用得不虚,得先分层。论文给了三层证据,含金量完全不同:

证据层级具体内容能说明什么
轶事层一段被挑出来的输出里有"等等,这是个值得标记的瞬间”有画面感,但不能单独当证据——它是被选中的
可计数层3 名人类专家先定出"反思词表"(wait、mistake、retry 等),再做全程词频统计:比训练初期上升 5–7 倍;“wait"前 4000 步几乎不出现、4000–7000 步偶尔冒头、8000 步后明显爆发行为变化统计上可数,不是孤例
结构层按难度分层:简单几级很快到 0.90–0.95,最难一级从约 0.55 升到 0.90提升覆盖难题

缺口照实说: 论文没有给出可复核的数值表,计数窗口和归一化方式也没写;第三方复现又受限于 671B 基座拿不到,目前可信的复现只是小模型/数学特化域上的类似曲线。

另一个反直觉的发现:奖励只要"答案对不对"就够,不需要额外奖励"思考过程写得漂不漂亮”——过程奖励一旦由模型来判,被打穿只是时间问题。

五、第二个发现:大模型的本事可以"搬"进小模型,但"涌现"有门槛

R1 还把训练过程中的 80 万条样本直接拿去微调六个小模型(1.5B 到 70B)。这个过程叫蒸馏——大模型写答案,小模型照着学;这里只做微调,没再跑强化学习。

数字要带对照才看得懂:同样 32B 规模、同样考 AIME 2024 单次正确率,蒸馏版是 72.6%,而让 32B 基座自己跑纯强化学习只有 47.0%——差 25.6 个百分点。

但别读成"强化学习对小模型没用"。论文的对照显示:数学特化的 7B 基座上,纯强化学习也能把成绩从 7.9% 拉到 22.3%——有效,只是远不如蒸馏划算(蒸馏 7B 是 55.5%)。论文附录还如实记下另一面:7B 稠密模型和 16B 混合专家模型,纯强化学习"始终无法产生有意义的提升",输出一变长就复读;要到 32B 稠密、230B 和 671B 才见效。

也就是说,“涌现"有一个基座规模门槛:不是算法不灵,是小模型没那么多"本钱"试出长链条思路。实用结论:算力有限就先蒸馏;想突破能力边界,才要大基座加大规模强化学习。

六、这一篇最该学的,是论文把"没说的"和"代价"都摊开了

先说论文没说的: v2 附录写"我们已在 xxx 公开 SFT 与 RL 数据”——“xxx” 是论文原文里的字面占位符,链接无法核验;AIME 训练曲线等数值只在图里,没有可复核表格;奖励模型的标注协议与线上阈值未披露;参考模型刷新周期、第二段 RL 只给 400 步偏好奖励,也无对照实验。

再说论文自己承认的局限(写在正文里,不是外人挑刺):通用能力不及上一代 V3(函数调用、多轮对话、JSON 输出等更弱),且不具备工具使用能力,不能用搜索引擎和计算器;简单题会过度思考;只对中英优化;给几个例子(few-shot)反而降低成绩;软件工程类任务评测太慢、拖不动强化学习循环;写作这种"奖励难以构造"的任务无法用纯 RL 扩展——这是论文自己写下的天花板。

最后是代价的真实数字。 论文阶段表显示:给它几千条人类可读的思考范例做"冷启动"后,AIME 从 77.9% 掉到 59.0%(−18.9 个百分点),换来指令遵循能力从 46.6% 涨到 71.7%(+25.1)——可读性是用推理峰值换来的。 四阶段管线全跑完,最终 R1 是 79.8%,只比纯强化学习的 77.9% 高 1.9 个百分点:管线价值主要在可用性和通用能力,不在数学峰值。

成本方面论文只披露了一张账:R1-Zero 用 512 张 H800 跑约 198 小时(约 101K GPU 时),连同 R1 训练与 SFT 数据生成,合计 147K GPU 时,约 29.4 万美元(按每小时 2 美元的假设)。

⚠️ 这是本篇最想留给你的纪律: 那 29.4 万美元只是强化学习训练与 SFT 数据生成的账,不含研究、消融、小规模试水,也不含预训练基座的账。所以绝不能读成"造出这个模型一共花了多少钱"。以后看到"某模型只花几十万美元就达到顶尖水平",先问三件事:算的是哪个阶段?分母里有没有算上基座?有没有算上失败的尝试?

这条线没停在 R1,后来的走向可概括成**“验证器升维”:从判断答案对错(0/1),到形式化编译器,到规划信号,再到让模型给自己打分**(2025 年的数学自验证工作)——系列第十二篇会讲怎么读这些成绩。


一句话总结: GRPO 把"估分助教"省掉了,改用同题一组答案的平均水平当基准;R1 则证明只给"答案对不对"这一种分数,模型就能自己长出回头检查、重算的思考习惯。

记住这个数字: 77.9%——R1-Zero 在 AIME 2024 上的单次正确率(前提:论文第二版口径,起点 15.6%;第一版同一格是 71.0%,引用必须带版本号)。

下一篇: 长文本为什么贵:KV 压缩的四代路线之争