奖励建模¶
Reward model 把人类偏好、规则或过程判断映射成可优化分数。它不是客观效用函数,而是对特定数据、标注协议和回答分布的统计外推;策略一旦针对它优化,原本微小的 shortcut 会被放大。
Bradley–Terry 模型¶
给定 prompt \(x\) 与回答 \(y_w\succ y_l\),标量奖励 \(r_\phi(x,y)\) 常使用
只有差值可辨识。对同一 prompt 的所有回答加常数 \(c(x)\):
偏好概率不变。因此奖励绝对零点没有由 pairwise 数据确定,跨模型、跨 prompt 或跨 checkpoint 比较 raw reward 必须先建立校准协议。
尺度也不是无关紧要:若所有 reward 乘常数,pairwise 排序可能不变,但在线 RL 中 reward 与 KL、value loss 和 clipping 的相对强度会变化。
Bradley–Terry loss¶
reward_a 与 reward_b 是同一 prompt 下两个候选的标量分数,preference 是 \(a\) 胜出的概率;硬标签取 \(0/1\),平局或软标签可取中间值。函数输出逐 pair loss,保留维度以便外层按标注置信度加权。
import torch
import torch.nn.functional as F
def bradley_terry_loss(reward_a, reward_b, preference):
if not (reward_a.shape == reward_b.shape == preference.shape):
raise ValueError("one aligned preference is required per reward pair")
if not (reward_a.device == reward_b.device == preference.device):
raise ValueError("rewards and preferences must share a device")
if not torch.isfinite(reward_a).all() or not torch.isfinite(reward_b).all():
raise ValueError("rewards must be finite")
if not torch.isfinite(preference).all() or torch.any((preference < 0) | (preference > 1)):
raise ValueError("preference probabilities must lie in [0, 1]")
margin = reward_a - reward_b
return F.binary_cross_entropy_with_logits(
margin, preference.to(margin.dtype), reduction="none"
)
ra = torch.tensor([2., -1., 0.])
rb = torch.tensor([0., 1., 0.])
q = torch.tensor([1., 0., 0.5])
loss = bradley_terry_loss(ra, rb, q)
assert torch.allclose(loss, bradley_terry_loss(ra + 7, rb + 7, q))
assert torch.allclose(loss, bradley_terry_loss(rb, ra, 1 - q))
assert loss[:2].max() < bradley_terry_loss(torch.zeros(2), torch.zeros(2), q[:2]).min()
try:
bradley_terry_loss(ra, rb, torch.tensor([2., 0., .5]))
except ValueError:
pass
else:
raise AssertionError("out-of-range preference probabilities must be rejected")
加同一常数不改变输出,交换候选并翻转标签也不改变 loss;这两个断言正对应 pairwise 模型的可辨识边界。reference 不包含 reward head、padding mask、listwise 采样和跨 prompt 校准,生产路径还必须防止同一候选跨数据切分泄漏。
数据契约¶
每个 pair 或 list 至少记录:
prompt and context source
candidate texts and generator versions
sampling / decoding configuration
presentation order and randomization
annotator or judge protocol
winner / tie / invalid / disagreement
reason codes and rubric dimensions
language, domain, length and safety slice
候选生成器身份、模板、长度和格式若与 label 强相关,reward model 会把它们当捷径。训练切分应按 prompt/题族和候选来源分组,而不是随机拆 pair。
标签语义¶
软标签与平局¶
若偏好概率或标注者比例为 \(q\in[0,1]\),可使用
将所有 tie 随机改成 win/loss 会制造不存在的强偏好。也可把 tie 单独建模,但训练与评测必须使用一致语义。
Listwise 排序¶
当同一 prompt 有多个候选,独立 pair 会重复利用样本且忽略整体排序。可使用 listwise likelihood 或先构造有控制的 pair;无论哪种方式,都要避免把同一候选跨 train/test。
多维 rubric¶
正确性、帮助性、事实性、风格和安全可能冲突。把它们直接压成一个标量会隐藏 trade-off。可训练分项 head 或保留分项标签,再由策略层明确组合;总 reward 仍需能回溯到各分项。
Shortcut 与分布外问题¶
常见 shortcut 包括:
- 长回答或更多标题;
- 固定礼貌语和拒答模板;
- 生成器身份、tokenizer 或格式;
- 引用数量而非引用支持;
- 代码块存在而非测试通过;
- 推理步骤更长而非结论更正确。
控制方法包括长度匹配 pair、顺序交换、格式扰动、只改变一个事实的 hard negative、匿名化生成器信息和可执行 verifier。Reward Model Overoptimization 研究了代理 reward 被持续优化时与真实目标之间的偏离,说明 held-out pair accuracy 不能保证策略优化后的可靠性。
Outcome 与 process reward¶
Outcome reward 只评估最终答案,标注便宜但信用分配稀疏。Process reward 对中间步骤评分,能定位错误,却需要定义步骤边界、前缀可行性和局部正确是否足以通向全局解。
Let's Verify Step by Step 比较了数学推理中的 outcome 与 process supervision。其结果属于特定任务和数据,不意味着所有开放式推理都适合步骤标量。对工具轨迹,还要区分模型动作、环境 observation、超时和终态。
训练与校准¶
除了 pairwise accuracy,还应报告:
- log loss 与 Brier-style 概率误差;
- margin 分布和 tie slice;
- 长度、语言、领域、生成器与安全切片;
- 顺序交换后的预测一致性;
- 新策略样本上的校准;
- reward 与可执行正确、人工判断的相关;
- ensemble 或重复训练的不确定性。
从 SFT 生成器切换到经过优化的 policy 后,回答分布会移动。reward model 必须在当前策略样本上重新评估;历史测试集不能证明在线区域仍可靠。
正确性与失效¶
- 把绝对 reward 当可辨识量:pairwise 训练只约束差值。
- 训练/测试随机拆 pair:同一 prompt 或候选泄漏。
- 无视 tie 与 disagreement:人为制造强标签。
- 候选长度不受控:模型学会长度捷径。
- 只报 accuracy:严重错分和轻微错分被同等计数。
- 评测仍来自旧 policy:策略优化后进入 reward model 的分布外区域。
- infra error 记为低 reward:环境故障被错归因模型行为。
- 过程步骤没有稳定边界:PRM 标签与 token 或 action 错位。
- reward 总和掩盖分项:某一维提升抵消关键安全或正确性退化。
何时不需要 reward model¶
若任务有可靠、低成本的可执行 verifier,可直接使用结果奖励或 rejection sampling;若只有高质量离线 pair,DPO/IPO 类方法可能更简单;若目标能由 SFT 示范清晰表达,显式 reward model 可能增加不必要外推风险。
验证¶
- 给所有候选 reward 加同一常数,BT loss 必须不变。
- 交换候选顺序与标签,预测概率应互补。
- 按 prompt/题族分组切分,并检查生成器和模板泄漏。
- 构造长度相同、格式扰动和单事实错误的 counterfactual pair。
- 在当前 policy、旧 policy 和外部生成器样本上分别测校准。
- 对 reward 高分但 verifier/人工失败的样本做优先审计。
- 进入在线 RL 前冻结 reward 版本、归一化、clip 和组合权重。
偏好数据结构见偏好、过程与轨迹数据,从 reward 到策略优化见在线 RL,最小 BT 目标与校准工具见训练目标实现和评测工具。