这是用我自己的skill搞出来的阅读笔记,仅供我个人快速学习和回忆使用。路过的有缘人需要可以随便看看,但这个的准确性我不负责。(评价也是Agent基于我的过往思路给的,不完全代表我的立场)
DeepSeek-GRM:让奖励模型在推理时越算越准
一句话总结
这篇文章提供了一种让奖励模型在 RLHF 流程中"推理时多算一会儿就能更准"的训练方法SPCT(Self-Principled Critique Tuning)。
简单说,SPCT训练时用01 即当前被训练的Reward模型判断的对不对,作为Reward,让模型学会"打分前先定标准",这样,推理时只要并行采样 k 次------每次生成一套【评分标准 】+打分,最后投票综合就达到了提高Reward Model评价准确率的目的。结果上,SPCT让27B 的模型靠 voting@32 能追到 671B greedy 的水平。
方法总述
Test-Time-Scaling类的方法都带有类似的模式:在训练时让模型具备某种扩展能力,在推理时,只要加大算力供给(不管是线性追加还是并行追加),都能利用这种扩展能力让LLM的效果变好。
现有的奖励模型主要有三类:
- 标量 RM :输入 query + responses,输出一个分数 SSS。采样多次输出几乎不变,无法通过多次采样提升。
- 半标量 RM :输出分数 + 评论文本 (S,C)(S, C)(S,C)。分数部分仍然变化很小,scaling 效果有限。
- 生成式 RM (GRM) :只生成文本评论 CCC,从文本中提取分数。采样多次会输出不同内容,天然适合推理时 scaling。
这篇工作选择的是 pointwise GRM ------一次给多个回复逐个打分(比分是 1∼101\sim101∼10 的整数),而不是 pairwise 那样只能二选一。
训练分两个阶段:
※ 第一阶段:拒绝式微调(RFT,冷启动)
对每个 query,用预训练 GRM 做 3 次推理采样,保留输出分数与 ground truth 一致的那条轨迹来做 SFT(监督微调)。筛选时还扔掉两类:3 次全打错的(太差,无正确格式可参考)和 3 次全打对的(太简单,无区分度、学不到取舍)。最终保留 186K 条筛选通过的轨迹,混入 1070K 条通用指令数据------后者用来防止模型在格式微调中丢失通用生成能力。两份数据合起来仅训 900 步,步数小是刻意的:因为RFT这个阶段只需保证输出结构的稳定------原则 → 评论 → 分数,判别力交给后续在线 RL。
其中为提升 3 次采样的正确率,用了一个技巧叫 hinted sampling:在 prompt 末尾标注"最好的回复是第 X 个"(X 是位置索引,不泄露回复内容本身)。但论文发现,这个位置标签本身就在向模型传递"选对就行"的信号------模型被暗示后倾向于跳过推理、直接凑答案,评论写得极其敷衍(比如只写一句"该回复更好",不展开评分依据)。这说明离线造数据有先天上限:模型一旦知道正确答案,就有动机走捷径。在线 RL 之所以能治这个问题,是因为它不告诉模型正确答案------模型得自己试,试错了被 reward 惩罚,从而被迫生成真实推理而非敷衍凑分。
※ 第二阶段:基于规则的在线 RL
用 GRPO(Group Relative Policy Optimization)做在线 RL------每个 query 采样 G=4 条新轨迹,每次更新后对新轨迹计算 reward,计算规则如下:
| 场景 | 条件 | reward |
|---|---|---|
| 多个回复 | 得分最高的那个恰好是 ground truth 中的最佳回复,且其他回复的分数与它不相等 | +1 |
| 单个回复 | 生成的分数等于 ground truth 标签 | +1 |
| 其他 | --- | -1 |
| KL 惩罚系数 β=0.08\beta=0.08β=0.08,训 900 步。 | ||
| 这套设计把 "准确性" 和 "格式" 拆给了两个不同的约束:reward 只判对错、不管格式,格式的稳定交给 KL 惩罚------让模型不要偏离第一阶段训出的输出结构太多。好处是 reward 信号纯净、无歧义,代价是把格式安全压到了单一支柱上:如果 KL 压不住,模型会在探索中崩掉格式。 |
推理时的 scaling 操作:
※ 并行采样 k 次 :温度设为 0.5 来制造输出多样性,使每次采样生成不同的原则 + 评论 + 分数
※ Meta RM 过滤 :额外训练一个标量 RM(Gemma-2-27B),判断每条采样轨迹的质量,只保留 top kmetak_{\text{meta}}kmeta 条(默认 kmeta=k/2k_{\text{meta}} = k/2kmeta=k/2)
※ 投票 :对保留的 kmetak_{\text{meta}}kmeta 条采样,把每个回复的分数加起来(Eq.14)。分数是 1∼101\sim101∼10 的离散值,求和后取值范围扩大到原来的 kmetak_{\text{meta}}kmeta 倍,区分度更高
一个直观理解:每次采样生成的原则就像不同的"评分标准"------有的看重安全性、有的看重细节、有的看重逻辑。多采几个标准,综合起来就更接近真实评价。
关键细节
1. 原则不是天生有用的
作者做了个初步实验(Table 1):让 GPT-4o 每个样本生成 4 组(原则 + 评分),再从中挑出"高分恰好对应 ground truth 中更好的回复"的那些原则,用这些筛选后的原则在同一批样本上重新打分。结果:不筛选时 56.1(跟没原则的 56.0 几乎没区别),筛选后跳到 64.0。
注意这个筛选直接用了测试集的 ground truth label,属于循环评估------本质上是在测"如果提前知道正确答案能选到多好的原则"------不能当公平的性能对比。它的价值只在动机层面:证明 GPT-4o 的生成空间里确实存在好原则,只是多数被埋没了。
这引出一个核心判断:LLM 能生成多样化的原则,但大部分对打分没用 ,只有少数有用。SPCT 要解决的是怎么让模型自己在 RL 中学会生成那部分有用的------做法是 reward 只看打分对不对、不看原则写得好不好,模型被正确率压力推着学会挑原则,而不是被显式教出来的。
2. RL 阶段训了什么,没训什么
消融实验(Table 4)有两个反直觉的结果:
- 不经过 RFT 冷启动,直接上在线 RL:总体准确率从 66.1(跳过 RFT 的基线)→ 68.7。格式和基本能力不需要先 SFT 一轮,RL 自己就能带出来。
- 推理时不生成原则、只打分:greedy 从 69.9 掉到 67.5,voting@8 从 70.6 掉到 68.0。同时生成原则和分数时 voting@8 比 greedy 高 0.7,只打分时降到 0.5------少了近三成。这说明 voting 的收益高度依赖原则带来的多样性。
但 RL 有两件事没解决:
- 原则的多样性:reward 只看结果对不对,不看每次生成的原则是不是雷同。如果多轮 RL 之后原则多样性在退化,voting 相对 greedy 的优势会被稀释------多样性是 voting 区分于 greedy 的核心假设,原则趋同等于多轮采样变一轮采样------这个退化过程论文没有跟踪。
- 训练的稳定性 :KL 惩罚系数用了 β=0.08\beta=0.08β=0.08------GRPO 常见的 β\betaβ 在 0.001~0.01 之间。作者在附录里说 β\betaβ 小了模型会在某些子集(Chat、Harmlessness)上崩掉。β=0.08\beta=0.08β=0.08 是常规值的 8~80 倍,说明模型在没有强 KL 约束时倾向于偏离RFT阶段训出的输出结构------这是需要高 β\betaβ 压制的现象,不是训练不稳定的充分证据。
3. hinted sampling 暴露了模型的"捷径偏好"(这里遗留了一个为什么作者知道有这个风险还用这个动作的问题)
RFT 阶段有个操作叫 hinted sampling:在 prompt 末尾直接告诉模型"最好的回复是第 X 个"。论文发现这样训出来的轨迹,评论写得很敷衍------尤其在需要多步推理的任务上,模型显然找到了绕过"认真写原则+评论"的捷径。
RFT 阶段还可以用拒绝采样把敷衍轨迹过滤掉------但拒绝采样本质是二元判断(留/扔),而 RL 阶段的 reward 同样只有 -1/+1。如果模型又发现了某种让 reward 变 +1 但不依赖好原则的捷径呢?hinted sampling 已经证明了捷径存在,但作者没有讨论 RL 阶段是否面临同样的风险。
4. DeepSeek-R1 的长链推理对通用奖励模型不管用
这里的"长链推理"指 R1 式的内部思考链------在给出最终答案前先自由推演一段推理过程,不同于 SPCT 那种按固定结构输出"原则 → 评论 → 分数"。论文试过直接把 R1-0120 当奖励模型用,结果在 Reward Bench 的 300 样本子集上,打分准确率还不如仅做 RFT、没有长链推理的 236B MoE 模型。
直觉上推理能力越强打分应该越准,但数据不支持------"在脑子里多想几步"并没有转化为打分准确率的提升。也就是说,长链推理单独用,对奖励模型没帮助。作者把"长链推理 + 原则引导"留给了 future work,言下之意是:需要把 R1 式的自由推理跟 SPCT 训练出的结构化原则机制结合起来,但目前还没找到有效的结合方法。
5. "推理 scaling 胜过训练 scaling"的对比前提
论文在 Fig.4 展示了【推理时 scaling】和【模型规模 scaling】的对比:27B voting@32 超过了 671B greedy。但如果只看附录 C.1,会发现这个对比有一个前提:大于 27B 的模型只做了 RFT,没有做在线 RL(作者写了是"due to resource constraints")。
也就是说,Fig.4 实际比的是"小模型 + 完整 SPCT (RFT + RL)"和"大模型 + 仅 RFT(用了 50K 条 RFT 轨迹)"。这不是同方法下的规模对比,更像是"完整训练流程 vs 半截训练流程"的对比。
这不出奇------大模型做在线 RL 成本确实高。但这意味着"推理 scaling 胜训练 scaling"的结论有一个没说出口的条件:你得先做完在线 RL,推理 scaling 才有这个效果。
评价
-
这篇文章的真正贡献,是让 GRM 学会了"可扩展的打分行为"。以前也有人用生成式 RM,但训练目标是单次打准。SPCT 的不同在于:通过在线 RL 让模型学会生成多样化的原则,使得"多采几次、综合一下"真的有收益。这不是 GRM 本身的胜利,是训练方法让 GRM 具备了 scaling 属性的胜利。
-
在线 RL 的 reward 信号依赖于"有 ground truth label"。训练时靠 preference label 来判断打分对不对,但在真实的通用场景里,很多时候并没有这个 label。论文的贡献是证明了"这个范式成立",但离"不用 label 也能在线 RL"还有距离------这个 gap 论文没有讨论。
-
Meta RM 的设计有点讨巧 。它本质上是一个二分类器(这条轨迹可信/不可信),但训练时用的 label 还是来自 ground truth------轨迹打对了就给正样本。这相当于把"筛选好轨迹"又绑回了"需要 ground truth"这个前提。不过从结果看,kmetak_{\text{meta}}kmeta 从 1 到 16 表现都差不多(72.7~72.8),说明这个方法对 kmetak_{\text{meta}}kmeta 的选择还算鲁棒。
-
推理成本没被严肃讨论。voting@32 意味着每次打分要跑 32 次前向(还要跑 Meta RM 再做一次),实际推理成本是 greedy 的 32 倍以上。论文只在"limitations"里提了一嘴效率问题。如果将来要做到 voting@128 甚至更多,这个成本能不能被接受,是个需要面对的问题。