RLVR 的奖励稀疏不是「奖励小」,而是全错时整组 advantage 恰好为 0。GHPO 不丢题、不换大模型:按「G 次全错」判难度,把标准解按比例接回题目;还错就升到 50%、75%,最多三级。 论文在六个数学基准上报告约 5% 的平均增益,并观察到更小的梯度范数。
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 冷启动,避免格式错误把大多数题误判成难题。
先分清「奖励为 0」和「advantage 为 0」:前者是单条回答错了,后者是整组没有任何可比较的信号。
RLVR 的奖励通常是终点的二值判断:答案正确给 1,否则给 0。GRPO 对每个问题采样 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% 的题超出当前能力。
课程学习丢自动化,动态采样丢数据,off-policy 丢简洁性;GHPO 想三样都保住。
按难度把数据分成阶段,逐渐加入更难的题。问题是难度划分通常靠人工或启发式规则,数据集一大就不可扩展;而且课程是静态的,模型能力变了,课程不会自动跟着变。
§1 / §5
DAPO 这类方法把「全对」和「全错」的 prompt 从 batch 里筛掉。全错组确实不再产生零梯度,但题也被扔了;论文认为这会丢掉相当一部分训练数据,样本效率并不理想。
§1 / §5
用 off-policy 的推理示范或混合 rollout 来补信号。论文把这一类概括为常需辅助的、资源开销大的 LLM,训练成本和复杂度都更高。
§1 / §5
GHPO 的选择不同:不丢 query,也不改数据分布,只改当前 query 的 prompt。全错的题不删除,而是把标准解的开头接上去,让这一组 rollout 有机会产生非零奖励;有能力的题保持原题,继续做 on-policy 探索。代价是它依赖 ground-truth solution trace——这是后面边界一节要展开的前提。
GHPO 的核心是一条分段规则:q* 取 q 还是 q + ωh,只看这一组 G 条回答里有没有正确。
hf,q 是完整标准解,ω 是提示比例;原文用 Σ f(a,oi) > 0 表示「至少一条被判定正确」这里有两个容易读错的点:
ω 是按字符比例,不是按解题步骤比例;模型仍要自己续写剩下的部分。推断(§3.6 只给了 50% 这一个字符截取例子,其他 ω 值是否同样按字符截取,原文没有逐一举证)。ri,t 的条件从 q 写成 q*。原文 Eq. 4 的期望仍写 oi ~ πold(·|q),提示如何进入采样与比值的逐行顺序没有 Algorithm 框可核对。所以 GHPO 没有新增网络;它改变的是输入 prompt 和难度判定。判定信号的口径:§3.3 说难度检测利用 accuracy reward;§4.3 的训练奖励还叠加了格式奖励(权重 2:1)。论文没有说明格式奖励是否参与「全错」判定;页面在讲判定时按 §3.3 的 binary reward 口径理解,训练配置表则按 §4.3 的完整奖励写。
全错的题先加标准解的前 25%。这是默认起点,目的是让题从「完全做不动」变成「有迹可循」,同时保留大部分探索空间。
如果加了 25% 仍全错,升到 50%。论文的文字是:这一阶段里,至少一条回答被判正确的 query 保留原题做组内 advantage;仍全错的继续升级。
最多三级。到 75% 还全错,不再提高比例;论文没有给出「无限加提示」的兜底规则。
下面把 §3.3 的判定和 §3.4 的阶梯放在一起。拖动 p(假设单条 rollout 的答对概率),看「8 条全错」的概率怎么变;点「抽 8 条 rollout」按这个概率抽一组,观察是否会触发提示升级。
覆盖:§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;本块只做机制演示。
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 size | 112 | §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 |
论文没有报告 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 让模型学会格式,再开提示,避免一开始就把提示预算烧在格式错误上。
判定只看组内奖励;提示分支最多走三级,然后回到采样。下面按 §3.2–§3.5 的文字重绘。
先看表,再看论文自己的百分比写法:5%、4.4%、8% 都不是同一口径;其中 Table 2 还有一项没赢。
Table 1 · 在 Math3to5 上训练后的六基准准确率(§4.5;数值为 0–1 的准确率,AVG 为六项平均)
| 模型 | AIME24 | Math-500 | OlympiadBench | AMC23 | Minerva Math | GPQA-Diamond | AVG |
|---|---|---|---|---|---|---|---|
| Qwen2.5-Base-7B | 0.098 | 0.694 | 0.340 | 0.400 | 0.195 | 0.217 | 0.324 |
| Qwen2.5-Math-7B | 0.193 | 0.708 | 0.371 | 0.625 | 0.139 | 0.222 | 0.376 |
| Qwen2.5-7B-GRPO | 0.131 | 0.752 | 0.408 | 0.475 | 0.312 | 0.308 | 0.398 |
| Qwen2.5-7B-GHPO | 0.133 | 0.786 | 0.415 | 0.575 | 0.346 | 0.394 | 0.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 两行)
| 模型 | AIME24 | Math-500 | OlympiadBench | AMC23 | Minerva Math | GPQA-Diamond | AVG |
|---|---|---|---|---|---|---|---|
| Qwen2.5-7B-GRPO | 0.122 | 0.774 | 0.396 | 0.525 | 0.283 | 0.353 | 0.409 |
| Qwen2.5-7B-GRPO-CL | 0.112 | 0.774 | 0.395 | 0.550 | 0.335 | 0.323 | 0.415 |
| Qwen2.5-7B-GRPO-CL-H(0.5) | 0.152 | 0.774 | 0.389 | 0.550 | 0.331 | 0.338 | 0.422 |
| Qwen2.5-7B-GHPO | 0.163 | 0.776 | 0.389 | 0.575 | 0.342 | 0.404 | 0.442 |
| Qwen2.5-Math-7B-GRPO | 0.2698 | 0.810 | 0.4481 | 0.625 | 0.3456 | 0.3384 | 0.4728 |
| Qwen2.5-Math-7B-GHPO | 0.3198 | 0.822 | 0.4525 | 0.700 | 0.3824 | 0.3687 | 0.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% 的计算式;它既不等于 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
GHPO 的前提比它的公式更值得注意:没有标准解,就没有提示;没有验证器,就没有「全错」这个信号。
提示来自标准解,不是模型自己生成的。数学数据通常带 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} 的消融;这些值为什么合适、换任务要不要重调,论文没有回答。
两个底座都是 Qwen2.5-7B 系列(Base 与 Math),没有更小/更大模型,也没有代码、逻辑等域;评测里唯一的非数学项是 GPQA-Diamond(科学问答),但没有针对该域的训练实验。跨规模、跨领域的结论需要额外实验。
一句话:GHPO 解决的是「有标准解、有验证器、但模型全错」时的零梯度问题;它不是通用的「难题自动变简单」机制。如果任务没有过程数据,或者提示泄漏、路径多样性是硬约束,这套方法不该直接上场。