← 返回题目列表

奖励模型(Reward Model)是怎么训练的?为什么用两两比较而非打分?

高频 困难 第 7 / 25 题 更新于 2026/07/28
奖励模型Bradley-Terry偏好数据pairwiseRLHF

简化版

奖励模型(RM)是 RLHF 里的「人类偏好裁判」,输入一个(提示, 回答),输出一个标量分数代表「人类有多喜欢」。它用偏好数据训练:让人对同一提示的两个回答做两两比较(哪个更好),而不是打绝对分——因为人对「A 和 B 哪个好」的判断远比「给 A 打几分」一致、稳定。训练用 Bradley-Terry 模型:把「A 优于 B 的概率」建模成 σ(r_A − r_B),损失是 −log σ(r_优 − r_劣),即拉大「被偏好回答」和「被拒绝回答」的分差。RM 通常用 SFT 模型初始化,换一个输出标量的奖励头。

详细版

RM 的输入输出

输入: (提示 x, 回答 y)
输出: 标量分数 r(x, y)   —— 越高表示人类越可能偏好

为什么用两两比较(pairwise)而非绝对打分

  • 一致性:让不同人给同一回答打「7 分还是 8 分」,标准因人而异、噪声大;但问「A 和 B 哪个好」,判断一致性高得多。
  • 可校准:绝对分容易受标注者情绪、锚定效应影响;相对比较更稳。
  • 信息足够:大量两两比较能重建出一致的排序和分数。

Bradley-Terry 模型与损失

把「回答 y_优 被偏好于 y_劣」的概率建模为二者分差的 sigmoid:

P(y_优 ≻ y_劣) = σ( r(x, y_优) − r(x, y_劣) )

训练就是最大化这个概率,等价于最小化:

L = − E_(x, y_优, y_劣) [ log σ( r(x, y_优) − r(x, y_劣) ) ]

直觉:让被偏好回答的分数,比被拒绝回答的分数高出尽量多

结构与初始化

  • 用 SFT 模型初始化(已具备语言理解),去掉生成用的 LM 头,接一个输出单个标量的线性头(常取最后一个 token 的表示映射成分数)。
  • 只需在偏好数据上微调,成本远小于 RL 阶段。

完整版教学

一、RM 存在的意义:给 RL 一个”自动人类”

强化学习需要一个能对任意回答实时打分的奖励函数。但人类没法对 RL 训练中源源不断产生的海量回答逐条评价——太慢太贵。解决办法是先把人类偏好”蒸馏”进一个模型:用有限的人类比较数据训练一个奖励模型,让它学会模仿人类的偏好判断,之后在 RL 里当「7×24 小时不知疲倦的自动裁判」。

所以 RM 的本质是人类偏好的可微、可批量查询的代理。它训得好不好,直接决定 RLHF 的天花板——RM 有偏差,策略就会被带偏(reward hacking 的根源之一)。

二、为什么”比较”比”打分”靠谱:人类判断的特性

这是本题的核心洞察。让我们对比两种标注方式:

  • 绝对打分:给一个回答打 1~10 分。问题是没有统一标尺——你的 7 分可能是我的 5 分;同一个人不同时间、不同心情打分也会漂移;还容易受前一个样本的锚定影响。噪声大、跨标注者难对齐。
  • 两两比较:给两个回答问「哪个更好」。人类做相对判断天生更擅长、更一致——即便说不清「好几分」,也能说清「A 更好」。

所以 RLHF 普遍采用成对偏好(有时是对多个回答排序,再拆成成对)。这一选择极大提升了标注质量和奖励模型的可靠性。记住:RM 不学”打多少分”,而学”谁比谁好”,分数是从大量比较里自洽地涌现出来的。

三、Bradley-Terry:把”比较”变成”分数”的桥梁

怎么从「A 比 B 好」这种相对信号,训出一个能给绝对分数的模型?靠 Bradley-Terry 模型——一个经典的成对比较概率模型(源自体育排名、心理测量)。

它假设每个对象有一个潜在「实力分」r,「A 胜过 B」的概率由二者分差决定:

P(A ≻ B) = σ( r_A − r_B ) = 1 / (1 + e^{-(r_A − r_B)})
  • 分差越大,A 被偏好的概率越接近 1;分差为 0 时概率 0.5(势均力敌)。

把它套到 RM 上,训练目标就是让模型给出的分数,能最好地解释人类的比较结果——最大化所有比较对的似然,即最小化:

L = − log σ( r(x, y_优) − r(x, y_劣) )

这样,虽然人只提供了「谁比谁好」,模型却学出了一套自洽的标量分数(类似 Elo 等级分从胜负记录里算出实力值)。这就是「相对比较 → 绝对分数」的数学桥梁。

记忆钩子:Bradley-Terry 把”A 赢 B 的概率”写成分差的 sigmoid,于是从一堆两两胜负里,能反解出每个回答的实力分——RM 就是这么从比较里学会打分的。

四、训练细节与常见陷阱

  • 初始化:用 SFT 模型(甚至更大的模型)初始化 RM,复用其语言理解能力,只需学「评价」这层。
  • 分数头:去掉 LM 头,接一个输出标量的线性层,通常取序列最后一个 token 的隐状态映射成分数。
  • 过拟合风险:偏好数据有限、有噪声,RM 容易过拟合到标注者的表面偏好(如「更长的回答」「更多列表」),而非真正的质量——这会在 RL 阶段被策略利用(reward hacking)。缓解靠更多样的数据、正则、集成多个 RM。
  • 分布偏移:RM 在 SFT 模型的回答分布上训练,但 RL 中策略会不断变化、产出 RM 没见过的回答,导致 RM 打分越来越不准——这也是要 KL 约束、甚至周期性重训 RM 的原因。

五、奖励模型的可靠性决定 RLHF 上限

RM 是 RLHF 里最容易出问题、也最关键的一环:

  • RM 准 → RL 能把策略推向真正的高质量。
  • RM 有偏(如偏爱长回答、被格式带偏)→ 策略会专门迎合这些偏差刷高分,产出啰嗦、套路化甚至空洞的回答,看起来分高实则变差。

这就是为什么很多 RLHF 后的模型「爱说车轱辘话、爱列 123」——往往是 RM 的偏差被策略放大。改进 RM(更好的数据、更强的模型、多 RM 集成、过程奖励)是提升对齐质量的主战场之一。理解「RM 的偏差会被策略放大」,是这道题的高阶得分点。

六、面试拆解算例

对齐题可以用一个偏好训练小实验来拆。假设有 20,000 条提示,每条采样 2 个回答,标注员选出更好的一个,就得到 20,000 对偏好样本。奖励模型不是学习“绝对正确答案”,而是学习 chosen 比 rejected 更符合规范的概率;如果样本里大量偏好“更长、更像解释”的回答,奖励模型就可能把啰嗦误学成高质量。

preference_pair = (prompt, chosen, rejected)
loss = -log sigmoid(r(prompt, chosen) - r(prompt, rejected))
KL_penalty = beta * KL(policy || reference_policy)
环节关键输入常见风险检查办法
偏好采集prompt 与候选回答标注偏见、覆盖不足一致性抽检
奖励建模chosen/rejected 对奖励作弊、长度偏置分桶评估
策略优化奖励 + KL 约束过优化、能力掉点回归集对比
安全评估红队与拒答样本过拒或漏拒人工审查
SFT 模型 -> 采样回答 -> 人类/AI 偏好 -> 奖励信号 -> 策略优化
    |          |             |              |             |
  基础能力    多样候选       规范边界        代理目标       行为改变

因此回答「奖励模型(Reward Model)是怎么训练的?为什么用两两比较而非打分?」时,要把“偏好从哪里来、奖励学到了什么、优化怎样被约束、上线怎么防奖励作弊”串起来。对齐不是单个算法名,而是一条把人类规范变成模型行为的工程链路。

七、常见误区与追问

  • 误区:让人给回答打绝对分来训 RM。两两比较,因人对相对好坏的判断更一致;绝对分噪声大。
  • 误区:RM 输出的是概率或分类。 输出的是一个标量分数,代表偏好程度。
  • 追问:Bradley-Terry 干什么用? 把「A 优于 B 的概率」建成 σ(r_A−r_B),让 RM 从成对比较里学出自洽的标量分数。
  • 追问:RM 损失长什么样? L = −log σ(r_优 − r_劣),拉大被偏好与被拒绝回答的分差。
  • 追问:RM 怎么初始化? 用 SFT 模型初始化,换标量奖励头。
  • 追问:RM 有什么典型偏差? 偏爱长回答、格式花哨等表面特征,会被策略利用(reward hacking)。
  • 追问:为什么 RM 会随 RL 变得不准? 策略分布偏移,产出 RM 训练时没见过的回答,打分失真,需 KL 约束或重训 RM。

八、加强记忆

奖励模型记「比较训分、Bradley-Terry」:RM 输入(提示,回答)输出标量分数,用两两比较的偏好数据训练(人对”谁比谁好”比”打几分”更一致),核心公式 P(A≻B)=σ(r_A−r_B)、损失 L=−logσ(r_优−r_劣)——从一堆胜负比较里反解出自洽的实力分(类比 Elo)。牢记两个深度点:RM 是”人类偏好的可微代理”,它的偏差(偏爱长/格式)会被策略放大成 reward hacking策略分布偏移会让 RM 打分失真,故需 KL 约束/重训 RM。RM 好不好,直接封顶整个 RLHF 的效果。