GRPO 怎样比较同题回答:组内优势、零差异与长度权重

成长演进

具备清晰骨架、初步数学推导或工程验证,持续补充论据与实测。

ℹ数字花园

🌿 什么是数字花园与思想演进?

遵循 Maggie Appleton 与 Andy Matuschak 的常青笔记理念:这里不是按时间沉底的流水账,而是持续修剪打磨的知识生态。文章按成熟度经历:

  • 🌱 萌芽 (Seedling): 发散灵感、读书摘录、开放猜想
  • 🌿 演进 (Budding): 结构渐明、初步代码推导、积极修正
  • 🌳 常青 (Evergreen): 逻辑闭环、持久经得起检验的基石
  • 🔬 实验待证 (Speculative): 结合沙盒与仿真探针的理论探索
浏览全站数字花园与笔记全景 →

PPO 篇用价值模型估计前缀之后还能获得多少回报。如果我们不单独训练这个价值模型,而是对同一道题多生成几份回答,能不能直接用它们的得分作比较?

GRPO 的一个核心思路正是这样:同题采样一组回答,用组内奖励构造相对信号。 但“省去价值模型”并不等于“没有额外成本”,也不意味着只要算个平均数,剩下的都是普通监督训练。

本篇先讨论 DeepSeekMath 中使用终局奖励的原始形式,再说明实现选项。所有数值都是教学算例,不是模型训练结果。

一道题,四个回答#

沿用求最小整数 n 的任务。同一道题生成四份回答,检查器给出奖励:

(r1,r2,r3,r4)=(1,0,0,0).(r_1,r_2,r_3,r_4)=(1,0,0,0).

组均值是 0.25。第一份回答比平均好 0.75,其余三份各比平均差 0.25。

原始 GRPO 的终局监督形式,还用组内标准差缩放差值。为了把计算说清楚,本节明确使用分母为 G 的总体标准差:

rˉ=1G∑iri,s=1G∑i(ri−rˉ)2,Ai=ri−rˉs.\begin{aligned} \bar r&=\frac{1}{G}\sum_i r_i,\\ s&=\sqrt{\frac{1}{G}\sum_i(r_i-\bar r)^2},\\ A_i&=\frac{r_i-\bar r}{s}. \end{aligned}

本例 s=√(3/16),约为 0.433013。优势为:

A1≈1.732,A2=A3=A4≈−0.577.\begin{aligned} A_1&\approx1.732,\\ A_2=A_3=A_4&\approx-0.577. \end{aligned}

这里的负数不表示检查器给出了负奖励,而是表示相对本组均值偏低。对于终局监督,原始形式把同一回答的这个优势用于其各个生成位置,并非为每个 token 单独验证正确性。DeepSeekMath,第 4.1 节

标准差的约定会改变数字#

如果分母采用 G−1,本例标准差是 0.5,优势就变成 (1.5,−0.5,−0.5,−0.5)。符号与排序相同,幅度不同。

所以复现时不能只写“std”三个字。要保存具体实现的自由度约定、极小值稳定项及其位置。上面的数字只对应已声明的总体标准差,没有声称所有库都会生成同一组数。

当 G=1 时,组内没有相对比较;某些样本标准差实现还会产生未定义值。用一个极小常数防止除零,只解决数值问题,不会凭空制造优劣信息。

全对和全错,都可能给出零相对信号#

若奖励是 (1,1,1,1),每个奖励减去均值都是零;若奖励是 (0,0,0,0),也一样。直接除以零不可行,工程上可以明确处理零标准差,或在分母加入稳定项。此时这组的任务优势通常仍为零。

但两种组的含义完全不同:全对可能说明当前题目已经容易,全错可能说明题目太难、输出格式失败,或检查器出错。只看到“零标准差比例很高”,无法判断应该加难题还是先修数据。

零任务优势也不保证所有参数完全不更新。如果目标中还有 KL 或其他损失,它们仍可能产生梯度;共享参数也会受到其他组的影响。更不能为了让指标好看,把全错组删掉后只报告保留下来的平均奖励。

需要至少分别记录全对、全错、混合结果和评分失败,并按题型与输出长度切片。

组大小怎样影响出现差异的机会#

设某道题每次独立采样通过检查器的概率固定为 p。G 个回答中,同时出现成功和失败的概率是:

P(混合)=1−pG−(1−p)G.P(\text{混合})=1-p^G-(1-p)^G.

当 p=0.2、G=4 时,这个概率为 0.5888。增加到 G=8,约为 0.832225。

这是“组内出现比较差异”的概率,不是单次准确率,也不是多样本最终选择的成功率。模型参数没变,单次成功概率仍是 0.2。

公式还依赖独立同分布假设。重复同一段贪心输出不满足这个条件;采样温度、候选相关性与题目差异也会影响实际结果。

增大 G 通常增加生成与评分成本。在固定总回答数下,它还会减少每批不同题目的数量。因此比较组大小时,不能一边多生成一倍答案,一边把收益全部归因于更好的算法。至少同时报告不同题目数、生成 token 数和评分成本。

除以标准差不只是减少噪声#

比较两组奖励:(1,0,0,0) 与 (0.51,0.50,0.50,0.50)。在本节的总体标准差定义下,两组归一化后的优势完全相同;但原始奖励差别相差一百倍。

如果那 0.01 的差异来自评分噪声,归一化可能把它放大到与明显胜负相同的相对幅度。反过来,若奖励单位本来就不同,去除尺度也可能是你想要的行为。关键是明白它改变了组与组之间的权重。

对二元奖励,设一组中成功比例为 q,且 0<q<1。采用总体标准差时:

A成功=1−qq,A失败=−q1−q.\begin{aligned} A_{成功}&=\sqrt{\frac{1-q}{q}},\\ A_{失败}&=-\sqrt{\frac{q}{1-q}}. \end{aligned}

成功越少,每个成功样本的相对正权重越大;失败越少,每个失败样本的负权重越大。这里 q 是有限组内比例,不是我们已知了题目的真实成功概率。

策略梯度篇已经说明,包含自身的均值与随机标准差不能直接照搬“动作无关 baseline 不改期望”的证明。GRPO 是一个具体代理目标,不应被简化成原始期望奖励梯度的天然无偏版本。

怎样接到 PPO 式更新上#

每份回答的每个有效生成位置,仍然可以计算当前策略与旧采样策略的概率比 ρ。把组内优势放进上一篇的裁剪项:

ci,t=clip⁡(ρi,t,l,u),l=1−ϵ,u=1+ϵ,Si,t=min⁡(ρi,tAi,ci,tAi).\begin{aligned} c_{i,t}&=\operatorname{clip}(\rho_{i,t},l,u),\\ l&=1-\epsilon,\quad u=1+\epsilon,\\ S_{i,t}&=\min(\rho_{i,t}A_i,c_{i,t}A_i). \end{aligned}

DeepSeekMath 的原始目标还加入参考模型 KL 项,并先对每份回答的 token 求平均,再对回答求平均。它省去单独价值模型,但仍需策略、采样、奖励计算及约束的安排。奖励可以来自学习到的模型,不是只要叫 GRPO 就必须使用规则奖励。

若使用参考项,旧策略与参考模型的区别仍与 PPO 篇相同。原论文还讨论迭代设置,不能假定所有实现的参考模型永远冻结,或每轮都刷新。需要读具体配置和代码。

两种长度平均不是同一个目标#

设某组只有两份回答,长度分别为 2、8。为了看清分母,暂不考虑 KL 和裁剪分支变化,把每个 token 的代理贡献当作给定值。

第一种方式,先除以各自长度,再对两份回答平均。短回答每个 token 的权重为 1/4,长回答每个 token 为 1/16。

第二种方式,把所有有效 token 加起来,再除以总数 10。每个 token 的权重都为 1/10。

如果短回答每个 token 贡献为 +1,长回答每个 token 贡献为 −1,则两种聚合分别得到 0 和 −0.6。

这只是聚合算例,不是说目标值为零就意味着梯度为零,也不是从此断言模型必然更长或更短。它证明的是:改分母会改变相对权重,不能当成一个不影响训练意义的代码整理。

使用固定全局常数作分母又是另一种选择。分析时要包括梯度累积、跨设备归约和有效 token mask,不能只看一张卡上的局部批次。

固定版本训练器也未必默认原始形式#

TRL 0.23.1 的 GRPOTrainer 文档提供不同的 loss_type,并列出 grpo、dapo、dr_grpo 等聚合方式;该版本文档将默认值列为 dapo。奖励缩放也可以按组、按批次,或关闭标准差缩放。

因此,写实验记录时应保存实际选项,而不是只说“使用 GRPOTrainer”。这些选项名称不等于它们在本任务上已经胜出,本文也没有运行其性能对照。TRL 0.23.1 GRPOTrainer

需要特别区分两种“clipped”:概率比进入裁剪分支,以及回答因为最大长度而被截断。一个属于优化目标,另一个属于生成和任务边界;日志中如果都叫 clipping,应写清单位。

怎样识别没有学到想要的东西#

平均奖励上升时,检查是不是更容易的题目占比增加了,评分失败样本被丢弃了,或者模型只学会了格式而没有改善最小值计算。

优势数值看起来稳定时,检查有多少组全对、全错;均值约零本来就是中心化带来的结果,不能当作训练健康的独立证据。还要看有效动作数量、截断比例、熵与独立测试成功率。

多采样也不能掩盖单次表现。训练后如果同预算单次成功率没提升,只是测试时从一次改成了八次,需要分别解释两种变化。

一个能解释差异的实验设计#

先固定奖励检查器与题目划分,在小批量上保存完整组结构。不要在排序、分布式收集或过滤后把不同题目的答案混成一组。奖励函数返回顺序必须与回答顺序一致。

第一轮只比较是否按组标准差缩放,其他设置保持不变。报告混合组比例、全对/全错比例、优势幅度、生成成本和独立完整成功率。第二轮再比较长度聚合,避免同时更换分母、组大小和采样温度,以致无法解释收益。

本文的数学检查可以用标准库完成:复算两种标准差、尺度变化、混合组概率和长度权重。正式模型训练对照尚未执行;算例通过只说明这些计算一致。

第一道自检题:为什么全对和全错都可能产生零任务优势,却不能采用相同的数据处理决策?

第二道自检题:把每份回答平均改成全部 token 平均,为什么会改变长短回答的相对权重?请用长度 2 和 8 的例子计算。

下一篇把本卷收束到实验判断:怎样区分采样收益、参数收益、奖励漏洞和独立泛化,避免用一条上升曲线概括“推理能力变强”。

文章概念网络

从章节进入正文概念。实线表示所属层级,虚线连接跨章节重复出现的概念,不代表因果关系。

56 / 56 个节点 · 正文标记术语与关键词概念

GRPO 怎样比较同题回答:组内优势、零差异与长度权重同一概念 / Shared concept同一概念 / Shared concept同一概念 / Shared concept同一概念 / Shared concept同一概念 / Shared concept同一概念 / Shared concept同一概念 / Shared concept同一概念 / Shared concept同一概念 / Shared concept同一概念 / Shared concept同一概念 / Shared concept同一概念 / Shared concept同一概念 / Shared concept同一概念 / Shared concept同一概念 / Shared concept同一概念 / Shared concept同一概念 / Shared concept同一概念 / Shared concept同一概念 / Shared concept同一概念 / Shared concept同一概念 / Shared concept同一概念 / Shared conceptGRPO 怎样比较同题回答:组内优势、零差异与长度权重GRPO 怎样比较同题回答:组内优势、零差异与长度权重PPO 篇PPO 篇同题采样一组回答,用组内奖励构造相对信号同题采样一组回答,用组内奖励构造相对信号一道题,四个回答一道题,四个回答DeepSeekMath,第 4.1 节DeepSeekMath,第 4.1 节标准差的约定会改变数字标准差的约定会改变数字全对和全错,都可能给出零相对信号全对和全错,都可能给出零相对信号组大小怎样影响出现差异的机会组大小怎样影响出现差异的机会除以标准差不只是减少噪声除以标准差不只是减少噪声策略梯度篇策略梯度篇怎样接到 PPO 式更新上怎样接到 PPO 式更新上两种长度平均不是同一个目标两种长度平均不是同一个目标改分母会改变相对权重改分母会改变相对权重固定版本训练器也未必默认原始形式固定版本训练器也未必默认原始形式losstypelosstypegrpogrpodapodapodrgrpodrgrpoTRL 0.23.1 GRPOTrainerTRL 0.23.1 GRPOTrainer怎样识别没有学到想要的东西怎样识别没有学到想要的东西一个能解释差异的实验设计一个能解释差异的实验设计奖励奖励GRPOGRPOPPOPPO采样采样奖励奖励tokentokenGRPOGRPO奖励奖励采样采样tokentoken选择选择奖励奖励归一化归一化策略梯度策略梯度GRPOGRPO动作动作策略策略奖励奖励采样采样tokentokenGRPOGRPOCLIPCLIPtokentoken选择选择奖励奖励优化优化实验实验采样采样奖励奖励动作动作奖励奖励采样采样tokentoken推理推理实验实验
GRPO 怎样比较同题回答:组内优势、零差异与长度权重

GRPO 怎样比较同题回答:组内优势、零差异与长度权重

回到原文 ↗
BIBTEX

引用本文

@article{2026-10-23-llm-training-rl-05-grpo,
  author  = {枫语},
  title   = {GRPO 怎样比较同题回答:组内优势、零差异与长度权重},
  journal = {枫语},
  year    = {2026},
  month   = {oct},
  url     = {https://meiluosi.github.io/posts/2026-10-23-llm-training-rl-05-grpo/}
}
🌐

本篇知识星丛与滑动侧栈

GRPO 怎样比较同题回答:组内优势、零差异与长度权重 当前主轴

搜索

正在载入索引…