这篇文章对应视频:【[Agentic RL] [RM] 09 Reward Model insights,理解概率建模(Bradley-Terry)、MLE、深度学习的关系】(BV1z4vkBBEgD)。
我不会把它写成“逐句笔记”,而是把 RM 的核心拆成一个你能反复复用的框架:
最顶层是 MLE(决定 loss),中间层是 Bradley-Terry(赋予概率意义),最底层是 Deep Learning(提供函数逼近与表征能力)。
如果你把 Reward Model 当成“又一个神经网络”,你很容易在训练/调参/诊断上迷路;但只要把它当成一个概率模型的参数化实现,很多现象会瞬间可解释(包括:为什么 RM 会偏向“拉平”、为什么 KL 约束几乎是必需、为什么 intransitive 数据会让 RM 变钝)。
系列导航:
关联阅读(建议顺序):
- RL4LLM 最小闭环:reward + PG/KL 的工程细节
- PPO/GRPO 中 KL 的意义与调参逻辑(别背经验区间)
- 多轮训练的分布一致性:token-in-token-out
- DPO 专文:KL 正则 RL、隐式 RM 与常见坑点
配套仓库(你本地已下载)里,本文主要对齐这两份笔记:
- Bradley-Terry + MLE + 梯度直觉 + intransitive 偏好:
/Users/wangpeng/Downloads/modern_genai_bilibili-main/agentic_rl/reward_model/Bradley-Terry-RM.ipynb
- DPO 视角(可选):为什么 KL-constrained objective + BT 偏好建模可以“消掉显式 RM”
/Users/wangpeng/Downloads/modern_genai_bilibili-main/agentic_rl/reward_model/dpo.ipynb
0. RM 在 RLHF/Agentic RL 里到底扮演什么角色
把 RM 放回 RLHF 的链路中,你可以把它当成一个“可微的偏好评估器”:
- 你有一个 prompt $x$(问题/任务/上下文)。
- 你有两个回答(或两个轨迹)$y_w$(winner)和 $y_\ell$(loser)。
- 人类(或规则/verifier)告诉你 $y_w$ 更好。
- 你想训练一个模型 $r_\theta(x, y)$,输出一个标量分数,使得“分差越大,winner 胜出的概率越高”。
然后这个 RM 进入后续阶段:
- 作为 RL(PPO/GRPO)的 reward(或其中一部分)
- 或者作为采样/拒绝采样/重排序器(re-ranking)
- 或者作为 DPO/IPO/SPIN 等偏好优化的隐式中间量
你后面看到的很多工程规则(例如 RL 里要加 KL anchor、要做 holdout 评测、要防 reward hacking),本质都来自一个事实:
RM 只在它“被训练过的数据分布附近”才可靠。
所以 KL 约束不是“玄学正则”,而是“保证策略别跑出 RM 的可信域(trust region)”的工程手段。
1. Bradley-Terry:把“分数差”解释成“偏好概率”
Bradley-Terry(BT)模型的假设非常简单,也非常强:
对同一个 prompt $x$ 下的两个候选 $y_w, y_\ell$,winner 被偏好的概率由分差决定:
$$
P(y_w \succ y_\ell \mid x)=\sigma(\Delta r)=\sigma(r_\theta(x,y_w)-r_\theta(x,y_\ell)),
$$
其中 $\sigma(u)=\frac{1}{1+e^{-u}}$。
换个更“竞赛直觉”的写法(选手 A/B):
$$
P(A \succ B)=\frac{e^{r_A}}{e^{r_A}+e^{r_B}}=\sigma(r_A-r_B).
$$
1.1 两个常被忽略、但决定你能不能调参的性质
- 只关心分差,不关心绝对值
- 如果你把所有分数加同一个常数 $c$,分差不变,概率不变。
- 这意味着 RM 的“零点”是任意的,你看到的 reward 绝对值本身不重要,重要的是差。
- 分差尺度决定“梯度多大”
- BT 通过 sigmoid 把分差压到 $(0,1)$,分差一旦很大就会饱和,梯度会变小。
- 所以 RM 不会“无限拉大分差”,它更倾向把学习力用在“还分不清的样本”(hard negatives)上。
2. MLE:从概率模型推导出 RM 的 loss(以及它为什么长得像 BCE)
现在我们已经定义了“偏好概率”。训练就变成了统计学最常规的事情:最大化观测到的选择的概率。
给一个偏好数据集 $\mathcal{D}={(x,y_w,y_\ell)}$,MLE 目标是:
$$
\max_\theta \prod_{(x,y_w,y_\ell)\in \mathcal{D}} P(y_w \succ y_\ell \mid x).
$$
取对数(把连乘变连加):
$$
\max_\theta \sum_{(x,y_w,y_\ell)\in \mathcal{D}} \log \sigma(r_\theta(x,y_w)-r_\theta(x,y_\ell)).
$$
写成最小化 loss(取负号)就是:
$$
\mathcal{L}_{\text{RM}}(\theta)= - \mathbb{E}_{(x,y_w,y_\ell)\sim \mathcal{D}} \left[\log \sigma(\Delta r)\right].
$$
很多实现里也会做一个按 pair 数量的归一(例如从 $K$ 个候选里构造 $\binom{K}{2}$ 个 pair),这不会改变本质,只是改变数值尺度。
2.1 这就是“二分类交叉熵”:把 $\Delta r$ 当 logit
如果你把 $\Delta r$ 当成二分类 logit,label 恒为 1(winner 赢),那么:
BCEWithLogitsLoss(logit=Δr, label=1)等价于-log σ(Δr)
所以 RM 训练本质上是一个非常熟悉的监督学习问题:逻辑回归 / 二元交叉熵。
这也解释了一个工程直觉:
RM 并不“直接学习人类偏好”,它学习的是“能把 winner/loser 分开的一条判别边界”。
3. 梯度长什么样:RM 为什么会自动聚焦 hard negatives
设 $\Delta r=r_w-r_\ell$,loss 为 $L=-\log \sigma(\Delta r)$。
有一个极其重要的导数(几乎所有 RM 的训练现象都能从它解释):
$$
\frac{\partial L}{\partial \Delta r}=\sigma(\Delta r)-1.
$$
你可以把它理解成一个“权重项”:
- 如果模型把 winner 打得很低($\Delta r \ll 0$),$\sigma(\Delta r)\approx 0$,梯度 $\approx -1$:狠狠改。
- 如果模型分不清($\Delta r \approx 0$),$\sigma(\Delta r)=0.5$,梯度 $=-0.5$:努力改。
- 如果模型已经分得很开($\Delta r \gg 0$),$\sigma(\Delta r)\approx 1$,梯度接近 0:基本不改。
这就是为什么实际训练里你会看到 RM 逐步“把简单样本放到一边”,然后对难样本更敏感。
3.1 一个经常被误解的点:饱和不是坏事
很多人看到 sigmoid 饱和就会条件反射地说“梯度消失不好”。但对 RM 来说,饱和恰恰是合理的:
- RM 的目标不是给出“无限精确的分差”,而是把 winner/loser 的相对顺序学对;
- 一旦分差足够大,继续增大分差并不会带来更多信息,反而会把训练算力浪费在“送分题”上。
4. Deep Learning:RM 只是把 $r(x,y)$ 参数化成可学习函数
现在你可以把 RM 看成一个黑盒函数:
- 输入:$(x,y)$
- 输出:一个标量 $r_\theta(x,y)$
具体实现通常是:
- 把
prompt + response拼成一段序列 - 用一个 encoder(LLM/Transformer)得到 hidden states
- 用一个线性 head 输出标量 reward(常见做法是取最后一个 token 或平均池化)
然后用上面的 pairwise loss 训练即可。
下面给一个“够用且不误导”的 PyTorch 伪代码(不绑定任何框架):
1 | def rm_loss(r_w: torch.Tensor, r_l: torch.Tensor) -> torch.Tensor: |
注意:这里用 softplus(-Δr) 是为了数值稳定(等价于 -log sigmoid(Δr))。
5. Intransitive Preferences:为什么偏好数据一旦“成环”,RM 会倾向“拉平”
BT 模型隐含了一个强假设:存在一个一维的隐藏分数可以排序所有候选。
但人类偏好经常不是一维可排序的,典型现象是“非传递”:
- $A \succ B$
- $B \succ C$
- 但 $C \succ A$
这在语言模型里非常常见,例如:
- 长文本更“详尽”胜过短文本
- 短文本更“干净利落”胜过幽默文本
- 幽默文本更“吸引人”胜过长文本
这种数据对 BT 是不可满足约束。关键点在于:log loss 会极度惩罚“非常确信地预测错”。
所以在成环数据上,BT 的 MLE 往往会倾向一个妥协策略:
把分数拉近(flattening),让每一对的胜率都接近 0.5,从而避免任何一条边出现“confident wrong”的巨大损失。
工程含义是:如果你的偏好数据里环很多,标准 RM 会变得“钝”,对细粒度风格差异不敏感。
5.1 怎么缓解(不是银弹,但能让你少走弯路)
- 把偏好拆成多维属性(多头 reward / 多目标优化)
- 把“长度/严谨/幽默/安全”等拆开建模,后续用加权组合或约束优化。
- 做更强的数据分层与采样
- 你不一定要把所有 style 混在一个 RM 里;对特定任务可以做 task-specific RM。
- 承认偏好噪声并显式建模
- BT 是最简单的噪声模型;如果你真的需要表达更复杂的人类偏好结构,要考虑更丰富的随机效用模型(这超出本文范围,但你至少要知道 BT 的边界)。
6. 为什么 KL 约束几乎是必需:RM 的“可信域”不是无限的
你在训练 RL(PPO/GRPO)时,常见目标会长这样(省略细节):
$$
\max_\pi \mathbb{E}[r(x,y)] - \beta D_{KL}(\pi ,|, \pi_{\text{ref}}).
$$
这里 KL 项的工程意义非常朴素:
- RM 只在“训练它的数据分布附近”靠谱;
- 你让 policy 生成的分布跑太远,RM 就会开始乱打分;
- RL 于是会利用这个漏洞进行 reward hacking,导致能力表面上升、行为实际上变坏。
所以 KL 是一种“让策略别跑飞”的护栏,而不是可有可无的装饰。
7. (可选)DPO 视角:BT + KL 约束如何“消掉显式 RM”
如果你看过 DPO,你会发现它的数学几乎就是把上面的两件事拼在一起:
- KL-constrained reward maximization 有闭式解:
$$
\pi^*(y|x)\propto \pi_{\text{ref}}(y|x)\cdot \exp\left(\frac{r(x,y)}{\beta}\right).
$$
- BT 偏好模型只关心分差 $r(x,y_w)-r(x,y_\ell)$。
把 1 代入 2,会得到一个非常关键的“消元”:
- 归一化常数(partition function)在做差时抵消;
- 显式 reward 变成了 log-ratio(相对参考模型的提权幅度);
- 最终 loss 仍然是
-log sigmoid(·)的二分类形式。
这就是为什么 DPO 常被描述为:
“把 RL 问题降维成一个二分类监督学习问题(BT modeling)”
它也解释了 DPO/偏好优化里为什么依然要关心 KL/参考模型:你本质上仍然在控制“偏离可信域”的程度。
(如果你想完整看这段推导,直接对照本地笔记:reward_model/dpo.ipynb。)
8. 面向 Agentic RL / Deep Research:RM 应该怎么落地
如果你的目标是 deep research agent(检索、引用、事实一致性、长链推理),我建议你把 RM 设计成“可验证信号的组合”,而不是单纯让 RM 去学一个玄学偏好:
- 尽量把 reward 绑定到可验证指标
- 引用是否可追溯、是否引用了正确段落、事实一致性校验、是否覆盖了关键文献等。
- 对不可验证的“写作质量/逻辑”再用偏好数据补齐
- 但要接受 intransitive/噪声不可避免,并通过数据分层和多头 reward 降低冲突。
- 始终把“分布一致性”当第一优先级
- 多轮 agent 场景建议坚持 token-in-token-out,否则你在 RL 阶段很难解释 logprob/ratio/KL 的统计量。
9. 小结(你真正需要记住的)
- RM 不是“又一个神经网络”,它是 Bradley-Terry 概率模型的参数化实例。
- MLE 推出来的 loss 就是
-log sigmoid(Δr),等价于 BCE;它的梯度天然会聚焦 hard negatives。 - 偏好数据存在大量 intransitive 环时,BT 会倾向“拉平”,这是模型边界而不是实现 bug。
- KL 约束的核心作用是:把策略限制在 RM 的可信域附近,避免 reward hacking 与 OOD 崩坏。

