GHPO
Paper · arXiv 2025 · 2507.10628v2

GHPO:一组 rollout 全错时,把标准答案的前 25% 递过去

RLVR 的奖励稀疏不是「奖励小」,而是全错时整组 advantage 恰好为 0。GHPO 不丢题、不换大模型:按「G 次全错」判难度,把标准解按比例接回题目;还错就升到 50%、75%,最多三级。 论文在六个数学基准上报告约 5% 的平均增益,并观察到更小的梯度范数。

Huawei Research · Huawei Noah’s Ark Lab · City University of Hong Kong arXiv 2507.10628v2 ↗ 代码 ↗
TL;DR · 30 秒抓住核心

GRPO 的组内 advantage 是 (Ri − μR) / (σR + ε)。当一组 G 条回答全错,μR = σR = 0,所有 token 的 advantage 都是 0——这不是学习慢,是这一题没有梯度,整组 rollout 的算力被完整浪费。

GHPO 的判定只看组内奖励:至少一条正确 → 保留原题,照常算 advantage;全错 → 判为 difficult,把 ground-truth solution 的前 ω 比例拼在题目后面,再采样。ω 从 0.25 起步,仍全错升到 0.5、0.75,最多三级;一旦有正确回答,这一轮就保留原题,不再加提示。

提示不是整段答案:论文 §3.6 的例子明确按字符截取 50% 的 ground-truth solution,模型仍要续写剩余部分。论文把它描述为 guided imitation learning 与 on-policy RL 的混合,并在前 20 步用 GRPO 冷启动,避免格式错误把大多数题误判成难题。

52%
Qwen2.5-7B-Instruct 在 NuminaMath-1.5 上做不出的比例
44.2%
Math3to5 六基准平均准确率;GRPO 39.8%
0.163
NuminaMath-S 的 AIME24;GRPO 0.122
01

全错的那一组,advantage 恰好是零

先分清「奖励为 0」和「advantage 为 0」:前者是单条回答错了,后者是整组没有任何可比较的信号。

RLVR 的奖励通常是终点的二值判断:答案正确给 1,否则给 0。GRPO 对每个问题采样 G 条回答,再用组内均值与标准差归一化每条回答的奖励:

Âi,t = (Ri − μR) / (σR + ε)
Eq. 2 · μR 与 σR 是同一组 G 条回答的均值和标准差;原文的 σ 用 ÷G(总体标准差)

如果这一组里既有正确也有错误,μR 和 σR 都不为 0,错的回答会拿到负 advantage,对的拿到正 advantage——即使奖励只有 0/1,组内比较仍然提供了方向。反过来,如果 G 条全错,μR = 0、σR = 0,所有 Âi,t 都等于 0。注意:在二值正确性奖励下,全对时 σR 也为 0,advantage 同样为 0推断(由 Eq. 2 与二值奖励推出);实际训练还叠加了格式奖励(§4.3),总奖励不一定全相同。GHPO 的难度检测只处理全错这一侧(§3.3),全对组不在它的判定范围内。

核心矛盾

零奖励不等于零信号;全错组才是零信号

全错组的每一条 rollout 都花了采样和验证算力,却对策略更新没有任何贡献。更麻烦的是,一个 batch 里「有效 query」的数量会随题目难度波动,等效 batch size 不稳定,梯度估计的噪声随之变大。论文把这两点分别称为 training inefficiency 与 training instability(§2.3)。

这不是边角情况。论文用 Qwen2.5-7B-Instruct 在 NuminaMath-1.5(约 90 万道竞赛数学题)上做评估,52% 的题它做不出来;而训练用的 Qwen2.5-Base-7B 能力更弱,零奖励区的比例只会更高推断(由 §2.3 对 Instruct 与 Base 的对比推出)。Figure 5 也显示,训练早期绝大多数题被判难,后续阶段仍有约 60% 的题超出当前能力。

02

三条路都在处理难题,但各自丢了点东西

课程学习丢自动化,动态采样丢数据,off-policy 丢简洁性;GHPO 想三样都保住。

课程学习

先易后难,但要人工切分

按难度把数据分成阶段,逐渐加入更难的题。问题是难度划分通常靠人工或启发式规则,数据集一大就不可扩展;而且课程是静态的,模型能力变了,课程不会自动跟着变。

§1 / §5

动态采样

全对/全错直接过滤

DAPO 这类方法把「全对」和「全错」的 prompt 从 batch 里筛掉。全错组确实不再产生零梯度,但题也被扔了;论文认为这会丢掉相当一部分训练数据,样本效率并不理想。

§1 / §5

Off-policy / 混合 RL

引入外部示范

用 off-policy 的推理示范或混合 rollout 来补信号。论文把这一类概括为常需辅助的、资源开销大的 LLM,训练成本和复杂度都更高。

§1 / §5

GHPO 的选择不同:不丢 query,也不改数据分布,只改当前 query 的 prompt。全错的题不删除,而是把标准解的开头接上去,让这一组 rollout 有机会产生非零奖励;有能力的题保持原题,继续做 on-policy 探索。代价是它依赖 ground-truth solution trace——这是后面边界一节要展开的前提。

03

全错就加提示,答对就退回原题

GHPO 的核心是一条分段规则:q* 取 q 还是 q + ωh,只看这一组 G 条回答里有没有正确。

q* = q  若组内存在正确回答
q* = q + ω · hf,q  否则
Eq. 5 的简化写法 · hf,q 是完整标准解,ω 是提示比例;原文用 Σ f(a,oi) > 0 表示「至少一条被判定正确」

这里有两个容易读错的点:

判定信号的口径:§3.3 说难度检测利用 accuracy reward;§4.3 的训练奖励还叠加了格式奖励(权重 2:1)。论文没有说明格式奖励是否参与「全错」判定;页面在讲判定时按 §3.3 的 binary reward 口径理解,训练配置表则按 §4.3 的完整奖励写。

三级提示阶梯

Stage 1

ω = 0.25

全错的题先加标准解的前 25%。这是默认起点,目的是让题从「完全做不动」变成「有迹可循」,同时保留大部分探索空间。

Stage 2

ω = 0.5

如果加了 25% 仍全错,升到 50%。论文的文字是:这一阶段里,至少一条回答被判正确的 query 保留原题做组内 advantage;仍全错的继续升级。

Stage 3

ω = 0.75

最多三级。到 75% 还全错,不再提高比例;论文没有给出「无限加提示」的兜底规则。

自己动手:全错判定与提示升级

下面把 §3.3 的判定和 §3.4 的阶梯放在一起。拖动 p(假设单条 rollout 的答对概率),看「8 条全错」的概率怎么变;点「抽 8 条 rollout」按这个概率抽一组,观察是否会触发提示升级。

§4.3;模拟不改变 G
当前读数
先拖动 p,再点「抽 8 条 rollout」。
解析读数(不依赖随机抽样):P(全错) = 16.78% · 每 112 条 query 期望判难 18.79 条 · 期望正确 rollout 数 1.60
这个模拟覆盖了什么、没覆盖什么?点开看与论文流程的差异

覆盖:§3.3 的判定规则「G 条奖励全为 0 → 判为 difficult」;§3.4 的三级提示比例 {0.25, 0.5, 0.75};§4.3 的 G = 8 与 batch size 112。概率计算用的是二项分布:在「8 条独立同分布、每条正确率 p」的假设下,P(全错) = (1−p)8。

没覆盖:论文没有报告单条 rollout 的真实正确率 p,也没有给出 p 随 ω 变化的映射。模拟里的 p 是页面自设的假设值,且不随提示比例变化;真实的 GHPO 里,加提示应当改变 p,但论文没有给出这个函数。成功后将 stage 重置到 0.25,也是页面为了演示循环做的简化,不是原文写出的规则。

没覆盖:论文没有 Algorithm 框,逐行的采样/更新顺序只能按 §3.2–§3.5 的文字重建;本模拟只演示「判定 → 升级」这一层,不模拟策略更新、advantage 计算和分布式训练。

手算块:两组参数 → 结果二项分布,独立同分布假设,不是论文实验复现

参数组 A:p = 0.05,G = 8
P(全错) = (1 − 0.05)8 = 0.958 = 0.6634204313 ≈ 66.34%
P(至少一条正确) = 1 − 0.6634204313 = 0.3365795687 ≈ 33.66%
112 条 query 中期望判难 = 112 × 0.6634204313 = 74.303... ≈ 74.30 条
期望正确 rollout 数 = 8 × 0.05 = 0.4 条

参数组 B:p = 0.30,G = 8
P(全错) = (1 − 0.30)8 = 0.78 = 0.05764801 ≈ 5.76%
P(至少一条正确) = 1 − 0.05764801 = 0.94235199 ≈ 94.24%
112 条 query 中期望判难 = 112 × 0.05764801 = 6.456... ≈ 6.46 条
期望正确 rollout 数 = 8 × 0.30 = 2.4 条

这里没有用标准差;如果要按 Eq. 2 算 advantage,全错组的 σR 为 0,advantage 也为 0。二项分布假设 8 条 rollout 独立同分布,论文没有给出这个假设,也没有报告 p;本块只做机制演示。

04

8 张 80GB 卡、每题 8 条、前 20 步先跑 GRPO

GHPO 没有新增网络;额外动作只有难度判定与提示拼接,训练配置基本沿用 GRPO。

训练配置 · §4.3–§4.4 汇总

项目设置出处
代码库OpenR1 + TRL§4.3
硬件8 张 GPU,每张 80GB§4.3
优化器AdamW,学习率 1e-6,cosine 衰减到 0,10% warm-up§4.3
batch size112§4.3
每题采样数G = 8§4.3
梯度累积每个 rollout 8 个 accumulation steps§4.3
训练采样temperature 1.0,最大生成 2048 tokens§4.3
KL 正则不使用(β = 0)§4.3 / §2.2
奖励规则奖励 +1/0;格式奖励 +1/0;权重 2:1§4.3
冷启动前 20 步关闭难度检测,先跑 GRPO§3.5
评测temperature 0 或 1;最大 4096 tokens;AIME24 用 avg@32,其余 pass@1§4.4
成本口径

「efficient」指训练,不是推理更短

论文没有报告 wall-clock 时间或总 token 成本,也没有给出 GHPO 相对 GRPO 的训练加速比。能确定的是:每题仍然是 G = 8 条 rollout,没有额外的大模型参与;提示被拼在题目后面,会增加输入长度,但论文没有量化这部分开销。推断(由 §4.3 的配置与 §3.2 的提示拼接推出;论文未给耗时表)。

论文用 efficient 指训练稳定性与样本效率:摘要强调 training stability and efficiency,Figure 6 用更小的 gradient norm 支撑稳定性。它没有把「推理更短」作为卖点——Figure 6(c) 反而显示 GHPO 的平均回答长度在后期比 GRPO 更长。

还有一个训练细节值得单独看:冷启动的前 20 步(§3.5)故意关闭难度检测。论文的理由是模型早期常常不遵守格式(比如答案没有放进指定结构),这会让验证器判错,进而把大量 query 误判成难题。先跑 GRPO 让模型学会格式,再开提示,避免一开始就把提示预算烧在格式错误上。

05

一条分支给探索,一条分支给提示

判定只看组内奖励;提示分支最多走三级,然后回到采样。下面按 §3.2–§3.5 的文字重绘。

问题 q 可选:q + ω · h 旧策略采样 G = 8 条回答 §4.3 的固定设置 验证器打分 规则奖励 + 格式奖励(2:1) 组内至少 1 条正确? 是 是:保留原题 q 组内 advantage → 策略更新 否 否:判为 difficult q* = q + ω · h ω:0.25 → 0.5 → 0.75 最多三级;到 0.75 后不再提高 前 20 步:关闭难度检测 先跑 GRPO(§3.5) 下一轮重采样
Figure 2 重绘(简化):GHPO 的分支流程,按 §3.2–§3.5 整理。原论文 Figure 2 是框架示意,不含算法伪代码。
展开说明 ▸
  • 覆盖:问题 → 旧策略采样 G 条 → 验证器 → 「组内是否至少一条正确」的两条分支 → 提示比例阶梯 → 回到采样;以及前 20 步冷启动。文字依据是 §3.2(Eq. 5)、§3.3(全错判定)、§3.4(三级 ω)、§3.5(N=20)。
  • 没覆盖:原图的具体排版、prompt template 的完整文本、奖励函数的内部实现、分布式训练的通信细节。这些在 §04 的配置表和 §03 的正文里分别说明。
  • 简化:图里的「下一轮重采样」是一个回边;论文没有 Algorithm 框,无法逐行核对采样与更新的先后顺序。成功后将 stage 重置到 0.25 是页面为演示循环做的简化,原文只说明能力提升后所需提示可能降低,没有写出重置规则。
06

六个基准上的收益,和三个对不上的口径

先看表,再看论文自己的百分比写法:5%、4.4%、8% 都不是同一口径;其中 Table 2 还有一项没赢。

Table 1 · 在 Math3to5 上训练后的六基准准确率(§4.5;数值为 0–1 的准确率,AVG 为六项平均)

模型AIME24Math-500OlympiadBenchAMC23Minerva MathGPQA-DiamondAVG
Qwen2.5-Base-7B0.0980.6940.3400.4000.1950.2170.324
Qwen2.5-Math-7B0.1930.7080.3710.6250.1390.2220.376
Qwen2.5-7B-GRPO0.1310.7520.4080.4750.3120.3080.398
Qwen2.5-7B-GHPO0.1330.7860.4150.5750.3460.3940.442

Table 1 的六项里,GHPO 都高于 GRPO;平均 44.2% vs 39.8%,差 4.4 个百分点(44.2 − 39.8)。论文把这写成「average accuracy improvement of 4.4%」;按表算,这是点差,相对 GRPO 是 11.1%(4.4 / 39.8)。AMC23 高 10.0 个百分点(57.5 − 47.5),GPQA-Diamond 高 8.6 个百分点(39.4 − 30.8);论文原文这两项写的是「more than 8%」。

Table 2 · 在 NuminaMath-S 上训练后的六基准准确率(§4.5;节选:省略与 Table 1 相同的 Qwen2.5-Base-7B、Qwen2.5-Math-7B 两行)

模型AIME24Math-500OlympiadBenchAMC23Minerva MathGPQA-DiamondAVG
Qwen2.5-7B-GRPO0.1220.7740.3960.5250.2830.3530.409
Qwen2.5-7B-GRPO-CL0.1120.7740.3950.5500.3350.3230.415
Qwen2.5-7B-GRPO-CL-H(0.5)0.1520.7740.3890.5500.3310.3380.422
Qwen2.5-7B-GHPO0.1630.7760.3890.5750.3420.4040.442
Qwen2.5-Math-7B-GRPO0.26980.8100.44810.6250.34560.33840.4728
Qwen2.5-Math-7B-GHPO0.31980.8220.45250.7000.38240.36870.5076

Table 2 的 GHPO 平均 44.2% vs GRPO 40.9%,差 3.3 个百分点;六项中五项更高。OlympiadBench 是例外:GHPO 38.9% vs GRPO 39.6%,低 0.7 个百分点。论文自己也只说「five of the six benchmarks」,没有说六项全升。

AIME24 从 0.122 到 0.163,差 4.1 个百分点;这个基准用 avg@32,其余基准是 pass@1(§4.4)。固定 50% 提示 + 课程学习的 CL-H(0.5) 平均 42.2%,比 GHPO 的 44.2% 低 2.0 个百分点;论文用这个对照显示固定 50% 提示低于 GHPO。§4.5 只报告了 0.422 < 0.442 这个结果;对固定 ω 次优的解释在 §3.4——「determining an optimal constant ω is challenging and often suboptimal」。换到 Qwen2.5-Math-7B,GHPO 平均 50.76% vs GRPO 47.28%,差 3.5 个百分点(50.76 − 47.28 = 3.48,四舍五入)。

口径对照

5% / 4.4% / 3.3 点:三个数不是同一件事

  • 摘要与结论:称六个数学基准上「平均性能增益约 5%」(Abstract / §6)。
  • §4.5(Table 1):写「average accuracy improvement of 4.4% over GRPO」。按表算是 44.2 − 39.8 = 4.4 个百分点;相对 GRPO 是 11.1%(4.4 / 39.8)。
  • Table 2(NuminaMath-S):44.2 − 40.9 = 3.3 个百分点;相对 GRPO 是 8.1%(3.3 / 40.9)。

论文没有给出 5% 的计算式;它既不等于 Table 1 的 4.4 个百分点,也不等于 Table 2 的 3.3 个百分点。推断(5% 可能是摘要的粗略表述,或来自另一种平均方式;无法从 Table 1/2 复算,原文未标注。这里只并列,不替它合并)。

训练动态

梯度更小,回答更长

Figure 6 的四张曲线给出的文字结论是:GHPO 的 accuracy reward 更高;gradient norm 更小;format reward 与 GRPO 接近;mean response length 在后期比 GRPO 更长。论文把更小的梯度范数解释为更平滑、更稳定的优化。

Figure 6(a)–(d)

反直觉

提示不是越多越好

CL-H(0.5) 给所有难题固定 50% 提示,平均 42.2%;GHPO 从 25% 起步、按需升级,平均 44.2%。固定高比例会把题变得太容易,减少模型自己探索的空间;阶梯式提示保留了这个空间。

Table 2 / §4.5

07

它解决不了什么,什么时候别用

GHPO 的前提比它的公式更值得注意:没有标准解,就没有提示;没有验证器,就没有「全错」这个信号。

前提一

必须有 ground-truth solution trace

提示来自标准解,不是模型自己生成的。数学数据通常带 step-by-step solution,所以这篇论文能直接做;代码、法律、开放科研等场景未必有可用的过程数据。论文的训练数据只有 Math3to5 / NuminaMath-S(数学);评测六项里五项是数学,另加 GPQA-Diamond(科学 QA),没有代码、逻辑或开放域实验(§4.1、Table 1)。

前提二

必须有可验证的终局奖励

「全错」判定依赖验证器给出 0/1。没有可靠 verifier,就无法区分「做错」和「格式不对」,难度检测会失真。

风险一

提示是标准解的前缀

模型被引导到一条固定的标准路径;论文没有测量它是否会抑制其他正确但不同的解法。推断(由「提示来自 ground-truth trace」和「只保留标准解前缀」推出)。

风险二

全错 ≠ 太难

论文用冷启动处理前 20 步的格式问题;20 步之后,格式错误是否仍会被算进「全错」并触发提示,论文没有分析。推断(由 §3.5 只覆盖前 20 步推出)。

缺口一

没有超参消融

论文正文没有给出 G = 8、N = 20、ω = {0.25, 0.5, 0.75} 的消融;这些值为什么合适、换任务要不要重调,论文没有回答。

缺口二

只验证了 7B 数学

两个底座都是 Qwen2.5-7B 系列(Base 与 Math),没有更小/更大模型,也没有代码、逻辑等域;评测里唯一的非数学项是 GPQA-Diamond(科学问答),但没有针对该域的训练实验。跨规模、跨领域的结论需要额外实验。

一句话:GHPO 解决的是「有标准解、有验证器、但模型全错」时的零梯度问题;它不是通用的「难题自动变简单」机制。如果任务没有过程数据,或者提示泄漏、路径多样性是硬约束,这套方法不该直接上场。