奖励模型架构与训练
典型的奖励模型架构是怎样的?请画出从输入到标量输出的结构图。¶

典型的奖励模型(RM)架构共享了预训练语言模型的主体,但在输出层进行了定制化改造。
结构图文字描述:
[Prompt + Response] → Token Embedding → Transformer Decoder (SFT权重) → 最后一层隐藏状态 → Pooling → Linear → Scalar Reward
详细分步解析:
-
输入:将 prompt 和待评估的 response 拼接成一个完整的序列。通常格式为
[CLS] prompt [SEP] response [SEP](或等效的特殊标记)。整个序列的长度等于 prompt 的 token 数加上 response 的 token 数。与 SFT 模型不同,RM 不需要进行自回归生成,只需进行一次编码前向传播。 -
词嵌入与位置编码:完全复用 SFT 模型训练好的嵌入层和位置编码矩阵,确保对文本的基础理解与 Actor 完全一致。
-
Transformer 主体:这是一个标准的多层 Transformer 解码器结构。这里的“解码器”是指它使用的掩码机制(causal mask),但在 RM 的训练和推理中,我们并不进行自回归生成,而是一次性输入整个序列。模型会计算每个 token 位置的上下文表示。所有参数都从 SFT 模型初始化,并保留可训练状态。
-
池化层:从最后一层隐藏状态中提取一个固定维度的向量,代表整个序列的“总结性表示”。最常见的做法是取最后一个 token(即 EOS token 或 SEP token)的隐藏状态。因为自注意力机制使得这个 token 的关注范围内包含了前面的所有信息,它天然是一个序列级别的摘要。或者,也可以对最后几个 token 的隐藏状态做平均池化、注意力池化或最大池化。实践中最简单的 last-token pooling 效果就很好。
-
线性头:将池化后的向量(维度为隐藏层维度 d_model)通过一个简单的线性层(d_model → 1),直接输出一个标量值。这个标量值就是该 prompt-response 对的奖励分数 r。这个线性头通常是最小规模的参数(仅几千个),这也是 RM 能够高效微调的关键。
关键设计选择:
-
为什么不是双塔分别编码 prompt 和 response?因为 prompt 和 response 之间的语义交互非常复杂,将它们拼接后送入统一的 Transformer 进行深度交互,远比分别编码后进行简单交互(如点积)更具表达力。这种单塔融合架构是当前 RM 的绝对主流。
-
因此,奖励模型的本质就是一个带有标量输出头的、冻结了部分层或全部微调的 SFT 模型。
为什么奖励模型常用 SFT 模型进行初始化,而不是从头训练?¶
直接原因:从头训练一个与 SFT 模型同等规模的 RM,需要海量的偏好数据,且在自然语言理解能力上会存在巨大差距。SFT 模型已经是一个语言专家。
深层原因分析:
-
自然语言理解的迁移:SFT 模型已经通过预训练和指令微调,掌握了语法、语义、常识、推理以及遵循指令的能力。这些能力是判断一个回答是否“有用”、“连贯”、“符合指令”的绝对基础。一个从随机初始化开始的模型,即使给它再多的偏好数据,也需要在训练前期耗费大量容量去重新学习这些基础语言技能,效率极低。
-
特征空间的共享与稳定:在 PPO 阶段,Actor 网络同样是从 SFT 模型初始化的。这意味着 RM 和 Actor 初始时拥有完全相同的“世界观”和“语言理解框架”。当 Actor 生成一个略微偏离常规表达但语义正确的句子时,RM 能够因为共享的底层表示而正确理解它,而不是因为“没见过这种说法”而打出低分。这种表示空间的同源性对于 RL 训练的稳定性至关重要。如果 RM 从零训练,它对 Actor 生成的各种分布外样本的泛化能力会极差。
-
计算与数据效率的极致优化:训练一个上百亿参数的 Transformer 极其昂贵,而偏好数据的获取成本又远高于预训练文本。让 RM 继承 SFT 模型的所有权重,相当于让偏好数据只负责调整模型顶层的“价值观判断”,而无需重塑底层的“语言理解通路”。这使得我们仅需数万至数十万条偏好数据,就能训练出一个相当有效的奖励模型。如果从零开始,可能需要上千万条高质量偏好数据才能达到类似水平。
-
防止灾难性遗忘的天然优势:RM 训练如果不从 SFT 初始化,它可能会在一个完全由偏好数据构建的分布上过拟合,成为一个只懂“裁判”但不那么懂“语言”的模型。SFT 初始化相当于施加了一个强正则化,保证 RM 在优化偏好排序的同时,不会丧失对语言本身的深刻理解,缓解了对偏好数据的过拟合倾向。
结论:SFT 初始化是为了用最低的标注成本,将一个强大的语言模型快速转变为精确的“价值裁判”,同时确保与后续 PPO 优化对象在认知架构上的同源性。
奖励模型的输出可以是一个值,也可以对序列中每个 token 打分,两者在理论和实践上有什么区别?¶
-
序列级标量奖励 这是当前 RLHF 的标准实践。RM 在完整序列的末尾给出一个单一的标量
r(x, y),代表对整个回答的整体评价。 -
理论优势:与人类“看完一段话后给出一个整体感觉”的评估方式高度吻合。训练目标(Bradley-Terry 模型)天然匹配这种全局比较。它简单、直接、易于训练和推理。
-
实践优势:RM 结构简单(仅需一个池化层和一个标量头)。计算效率高。对于 PPO 训练,只需要将最终奖励放到轨迹的最后一个 token 上。
-
劣势:信用分配(Credit Assignment)困难。在 PPO 中,这个单一的最终奖励需要被合理地“分配”到序列中的每一个 token 上,以便进行策略更新。这严重依赖于价值函数(Critic)的估计质量。如果 Critic 不准,模型很难知道是哪几个具体 token 导致了好/坏结果。这被称为延迟奖励问题。
-
逐 Token 的密集奖励 这种思路是让 RM 对序列中的每一个 token 都预测一个奖励值
r(s_t, a_t),构成一个奖励序列。 -
理论优势:直接解决了信用分配问题。PPO 中的优势函数可以直接基于每个 token 的真实奖励来计算,学习信号更密集、更精确。理论上有望实现更细粒度的风格控制或安全对齐(例如精确惩罚不安全的词)。
-
实践挑战:
- 标注的极大困难:几乎不可能让人类标注员为每一个 token 标注一个奖励分数。因此,获取真实的 token 级奖励训练数据极其困难。
- 奖励模型架构复杂化:需要 RM 对每个 token 的输出隐藏状态都接一个标量头,结构更复杂。
- 训练目标的模糊性:如何训练这样一个 token 级的 RM?如果我们仍然只有序列级的偏好比较,就无法直接监督 token 级的奖励。一种方法是将序列级奖励视为 token 级奖励的累加,但这引入了额外的建模假设。目前更常见的是将语言模型 head 本身的自回归生成概率作为隐式的 token 级奖励信号。
结论:当前主流是序列级标量奖励,因其简单高效且与人类评估一致。token 级奖励是更理想但极难实现的方向,通常用 Critic 网络的价值输出来近似,而非直接训练 RM 来输出。
请写出基于 Bradley-Terry 模型的成对比较损失函数,并说明它如何鼓励 chosen 的奖励高于 rejected。¶
损失函数:
给定一个 prompt x,一个被人类偏好的回答 y_w(win),一个不被偏好的回答 y_l(lose)。奖励模型 r_φ 分别给出两者的奖励分数 r_w = r_φ(x, y_w) 和 r_l = r_φ(x, y_l)。基于 Bradley-Terry (BT) 模型的成对比较损失函数为:

运作机制:
这个损失函数本质上是一个 logistic 回归,它试图最大化在给定分数差 r_w - r_l 下,y_w 优于 y_l 的似然概率。
-
当
r_w > r_l时:差值r_w - r_l为正数,σ(r_w - r_l)接近 1,-log(接近1)是一个很小的损失。模型被奖励,因为它的评分排序与人类一致。 -
当
r_w ≈ r_l时:差值接近 0,σ(r_w - r_l) ≈ 0.5,-log(0.5) ≈ 0.693,损失中等。模型被惩罚,因为它没有有效地区分出好回答和坏回答。 -
当
r_w < r_l时:差值为负数,σ(r_w - r_l) < 0.5甚至接近 0,损失变得非常大。模型被强烈惩罚,因为它的评分完全颠倒了人类的偏好。
梯度分析:对 r_w 求导,梯度为 -(1 - σ(r_w - r_l)),这意味着如果当前模型还没有让 r_w 足够大(σ 不接近 1),梯度会推动 r_w 增加。对 r_l 的梯度为 (1 - σ(r_w - r_l)),会推动 r_l 减小。这形成了对称的推力:提升胜者的分数,降低败者的分数,直至两者的差距足够大,使得 BT 模型认为胜出的概率接近 1。
因此,这个简洁优雅的损失函数完美地将相对偏好转化为连续的奖励值空间中的对比学习过程。
奖励模型训练中,除了成对比较损失,是否还会加入其他辅助损失?例如语言建模损失?¶
会,而且这往往是提升 RM 泛化能力和稳定性的关键技巧。 单一的排序损失容易让 RM 发生“奖励漂移”或“语言能力退化”。
-
语言建模损失 (LM Loss / SFT Loss)
-
做法:在 RM 的训练目标中,添加一个额外的交叉熵损失,要求 RM 对
chosen回答的 token 进行预测。损失函数变为:

-
其中 α 是一个较小的权重(如 0.01)。
-
作用:
- 锚定语言能力:防止 RM 在优化排序时,其底层表示发生剧烈漂移,丧失对语言本身的理解。这相当于一个强正则化项。
- 保持分布一致性:迫使 RM 对“人类喜欢的文本”保持高概率,从而在与 PPO Actor 交互时,不会因为生成文本的微小分布偏移而给出离谱的分数。
-
缓解过拟合:LM 损失提供了一种密集的训练信号,能有效对抗 RM 在小规模偏好数据上的过拟合倾向。
-
正负例分数间隔损失 (Margin Loss)
-
做法:强制要求
r_w - r_l > margin。损失函数变为 Hinge-like:max(0, margin - (r_w - r_l))。 -
作用:这不仅要求排序正确,还要求好坏之间有明确的分数鸿沟。这能避免 RM 给所有回答都打出差不多的分数,使得 PPO 阶段缺乏有区分度的梯度信号。
-
安全/有用性的多任务损失
-
做法:如果偏好数据带有安全、有用等维度的标签,可以为每个维度训练一个单独的标量头,并在 BT 损失之外,加入这些维度分数的回归损失。
-
作用:实现多目标对齐,让 RM 能给出多维度的评判,使后续 PPO 可以灵活地调节各维度的权重。
-
价值校准损失 (Value Calibration Loss)
-
做法:对一小批有人工绝对评分(如1-5分)的数据,让 RM 的标量输出直接拟合这个评分(MSE损失)。
-
作用:校准 RM 分数的绝对范围,防止分数在 RL 优化中无限制增长(reward drift)。它为 RM 的分数赋予了实际的尺度含义。
结论:一个鲁棒的 RM 训练管线通常会结合 BT 损失、LM 损失,并可能加入 Margin 损失,形成多任务学习框架。
如何使用对比学习思想来训练奖励模型,使其对偏好对产生更大的奖励差距?¶
BT 模型损失本身就是一种对比学习(让 chosen 和 rejected 的分数对比)。但我们可以通过更显式的对比学习策略来增大奖励差距。
- 使用信息噪声对比估计 (InfoNCE) 风格的损失
BT 损失只关心成对之间的差值,而 InfoNCE 会考虑更多的负样本。我们可以对一个 prompt 采样多个回答(如一个 chosen,多个 rejected),然后使用类似 InfoNCE 的损失,强制 chosen 的分数不仅高于某个 rejected,还要高于所有 rejected 的分数。

这样做的好处是引入了全局对比,让 RM 对好坏的回答形成更显著的分数分离,而不仅仅是两两比较的局部优序。温度系数 τ 可以控制分离的锐度。
- 三元组损失 (Triplet Loss)

如果 chosen 的分数没有比 rejected 高出 margin 以上,就会产生损失。这会迫使 RM 在奖励空间中推远好与坏的距离,不满足于微小的差距。
- 监督对比学习 (Supervised Contrastive Learning)
在 RM 的表示空间(池化层之前)施加对比损失。将同一 prompt 下的 chosen 回答的表示拉近,将 rejected 回答的表示推远。这会让 RM 的内部特征对“质量”更敏感,间接增大了最终奖励分数的差距。
- 动态负样本挖掘
在训练过程中,不随机选择 rejected 样本,而是优先选择那些当前 RM 评分与 chosen 最接近的 rejected 样本作为“困难负样本”。这种挖掘让对比学习始终聚焦在决策边界上,逼迫 RM 不断增开差距以区分这些难例。
注意事项:奖励差距并非越大越好。一个过于激进的对比损失可能导致 RM 对 quality 细微差异极其敏感,而对高质量回复内部的合理多样性进行过度惩罚。因此,需要配合 KL 散度正则或 LM 损失来平衡。
奖励模型容易过拟合到“长度”等表面特征,有哪些缓解手段?(如长度归一化、数据增强)¶
RM 极易抓住长度、格式、特定关键词等表面捷径,而忽略内容质量。这是 RLHF 中最顽固的偏差之一。
缓解手段工具箱:
最佳实践组合:在数据构造阶段进行长度平衡和增强,在模型训练阶段施加轻微的长度惩罚和动态重加权,并在评估阶段定期检查 RM 对长度的相关性(Spearman),形成闭环。
为什么奖励模型的评估不仅要看准确率,还要看与真实人类分数的相关性(Spearman/Pearson)?¶
准确率的局限性:
准确率(Accuracy)衡量的是“在测试集上,RM 的偏好判断与人类标签一致的百分比”。它在 RM 评估中是一个有缺陷的指标:
-
只关注排序方向,忽略程度:Acc 只关心
r_w > r_l是否成立,不关心r_w比r_l大多少。一个回答质量是90分 vs 89分,另一个是90分 vs 10分,只要 RM 都判对方向,Acc 都会给满分。但在 PPO 中,这两种情况的梯度强度天差地别。我们需要 RM 对后者给出巨大的分数差,提供强烈的优化信号。 -
对容易样本的过拟合:测试集中大量偏好对比可能是质量差距悬殊的简单样本。RM 很容易在这些样本上拿到高 Acc,掩盖了它在区分高质量样本细微差异上的无能。
-
无法反映分数校准性:Acc 不涉及分数的绝对大小。一个 RM 可能每次只以微弱优势判对(
r_w始终比r_l高0.001),另一个 RM 则在正确判断的同时还能拉开合理差距。前者在 Acc 上可能与后者无异,但在 PPO 中会导致梯度微弱、优化停滞。
相关性(Spearman/Pearson)的价值:
计算 RM 预测的奖励分数与人类标注员给出的绝对评分(如 1-5 分)之间的 Spearman 秩相关系数或 Pearson 线性相关系数,能回答 Acc 无法回答的问题:
-
衡量分数的单调度:Spearman 系数评估了“人类打出的分数是否与 RM 打出的分数保持相同的单调趋势”。这是最关键的,因为 RL 中 Actor 沿着奖励的梯度方向移动,只要分数单调递增,就能优化。
-
衡量分数差距的合理性:Pearson 系数(在校准后)反映了 RM 分数是否能线性地反映人类评价的质量差距。高 Pearson 系数意味着当人类认为“好一个档次”时,RM 给出的分数差也大致成比例,这能为 PPO 提供稳定且有意义的梯度规模。
-
检测奖励黑客的早期信号:如果在 PPO 过程中,RM 的 Acc 保持不变甚至略升,但与人类评分的 Spearman 系数急剧下降,这强烈暗示模型已经找到了奖励黑客的捷径——它仍在“正确排序”,但排序的依据已偏离人类价值观,分数的分布也变得极端扭曲。相关性指标能比 Acc 更早地暴露这一问题。
结论:准确率是“做对了没有”,而相关性是“做得好不好,打分合理吗”。一个可用的 RM 必须两者兼备,而相关性往往是最终的试金石。
如何校准奖励模型,使得其打出的分数能真正反映质量差距,而不只是相对排序?¶
奖励模型的原始分数常常会发生“尺度漂移”,例如随着优化,模型可能输出越来越大的分数值,但这些分值并不对应质量的线性提升。校准旨在赋予奖励分数以明确、稳定的尺度意义。
-
基于人类绝对评分的回归校准 如果有一小批拥有高质量人类绝对评分(如1-5分)的数据,可以将 RM 作为回归模型进行微调。在 BT 损失之外,添加一个 MSE 回归损失:
(r_rm - human_score)^2。这会强制 RM 的标量输出与人类评分对齐,从而为分数确立了尺度的“原点”和“单位”。 -
特征缩放与标准化
最直接的做法是在每次 RM 打分后,对一个批次内的奖励分数进行 Z-score 标准化。这在 PPO 中极为常见,可以防止因奖励值域的波动导致策略梯度的尺度失控。
-
基于 Bradley-Terry 模型的概率校准 BT 模型本身隐含了一个概率解释:
P(chosen) = σ(r_w - r_l)。我们可以不直接使用原始分数,而是使用这个概率作为“偏好强度”的度量。在 PPO 中,可以利用这个概率来缩放奖励,使得当模型对质量差异不确定时,提供的梯度信号更弱。 -
引入“锚点回答”进行动态校准
在训练过程中,定期让 RM 对一些固定的、经过专家精心评级的“锚点回答”进行打分。通过比较当前 RM 对这些锚点回答的分数变化,可以检测出整体分数的漂移,并计算一个补偿偏置,对所有分数进行动态校准。
- 基于能量函数的校准
将 RM 的输出视为一个能量函数,通过 Platt scaling 或等距回归对 RM 的输出进行后处理变换,使得变换后的分数与人类偏好概率具有良好的校准关系,即当模型输出某个偏好概率时,其实际的准确率也大致相当。
- 多任务学习中的隐式校准
如果 RM 同时具备多个输出头(如有用性、无害性),这些不同维度的分数天然带有尺度,它们的组合可以产生一个更加鲁棒和校准良好的总分。
目标:一个校准良好的 RM 应该满足,如果它对 A 和 B 的分数差是 2 分,那么 A 以绝对优势优于 B 的概率应该很高;如果差 0.1 分,两者可能几乎无异。这种可解释的分差让 PPO 能更稳定地进行策略更新。
奖励模型训练时,如果 chosen 和 rejected 回答来自不同温度或不同模型,有什么问题?¶
这会在偏好数据中引入严重的分布偏移和虚假相关,是 RM 训练的大忌。
具体问题:
-
RM 退化为“生成参数/模型识别器” 如果所有 chosen 都来自 temperature=0.1 的模型(输出更确定、更流畅),所有 rejected 来自 temperature=1.0 的模型(输出更随机、偶尔不通顺),RM 会迅速学会识别这种源于解码策略的风格差异,而不是去评估内容的真实质量。例如,RM 可能只是通过识别回答中词汇的确定性程度来打分,流畅但平庸的回答永远比深刻但偶有毛刺的回答得分高。
-
训练与推理的分布断裂 在 PPO 阶段,Actor 的采样温度通常是固定的(如 0.7),它生成的回答分布是单一的。如果 RM 是在不同温度混杂的数据上训练的,它学到的评分标准就会与 Actor 的实际生成分布发生错位。例如,Actor 生成一个有点小瑕疵但高质量的回答,RM 可能因为之前见过这类瑕疵总出现在低分回答中而给打低分,但实际上在高确定性模型输出中,这类瑕疵根本不会出现。
-
模型能力的混淆 如果 chosen 来自大模型(GPT-4),rejected 来自小模型(GPT-2),RM 将学会识别模型能力的系统性差异——如大模型的词汇量更丰富、语法更复杂。这会让 RM 过度关注“大模型风格”的表面特征。当对同一个小模型的不同回答进行偏好判断时,RM 可能完全失效,因为它没学过如何区分小模型自身的好坏。
正确做法:
-
同源同参数采样:保证每个偏好对的两个回答来自完全相同的模型、完全相同的解码参数,仅在随机种子(或 temperature 采样)上有区别。这样,两个回答的潜在“风格”被严格控制,唯一的差异就是采样的随机性和底层模型策略的细微差别。
-
如果必须混合,全面平衡:如果实在需要混合不同模型/温度的数据,必须确保在数据集中,每个模型/温度都同等概率地产生 chosen 和 rejected。通过数据后处理或重采样,打破“来源”与“好坏”标签之间的任何统计关联。
总之,偏好数据的构造原则是隔离唯一变量:确保导致偏好差异的唯一原因是我们想要模型学习的“质量”差异,而不是生成过程的任何其他元参数。
如何对奖励模型进行集成(Ensemble)?为什么集成多个 RM 可以缓解奖励黑客?¶
如何进行 RM 集成:
最简单也最有效的方法是分别独立训练多个 RM,然后将它们的输出进行聚合。
-
独立训练:使用完全相同或略有不同的偏好数据子集、不同的随机种子、不同的模型初始化检查点,甚至略微不同的架构(如不同的池化方式或头部设计),训练出
K个独立的奖励模型RM_1, RM_2, ..., RM_K。 -
推理时聚合:
- 均值聚合:在 PPO 训练或推理时,最终的奖励为所有 RM 输出的平均值:
r_final = (1/K) * Σ r_k。 - 保守聚合:取所有 RM 输出的最小值、中位数或下分位数。在安全对齐中,取最小值是一种极度保守的策略,要求所有 RM 都认可的回答才能获得高分。
- 不确定性加权:计算 K 个 RM 打分的方差,作为当前评估的不确定性度量。最终奖励可以是均值减去一个与方差成比例的正则项。这会让策略远离那些让 RM 们产生巨大分歧的“争议区域”。
为什么集成可以缓解奖励黑客:
奖励黑客的本质是单个 RM 存在过拟合和“盲点”。Actor 在 PPO 中会沿着奖励函数的地形“攀爬”,如果地形有某些“错位的高峰”(即那些 RM 过拟合后喜欢、但人类不喜欢的回答模式),Actor 就会迅速冲向这些高峰。
-
平滑决策边界:集成模型通过多个独立 RM 的投票,极大地平滑了奖励地形。单个 RM 的某个尖锐的、异常的局部高峰,在与其他 RM 的平均后很可能被抹平。Actor 不再那么容易找到一个让所有 RM 都“盲目叫好”的作弊模式。
-
增加攻击难度:要找到奖励黑客攻击,Actor 需要同时欺骗所有独立的 RM。每个 RM 因不同的初始化、数据子集和微调路径,其决策边界和过拟合盲区各不相同。要同时找到所有 RM 的交集盲区,难度呈指数级上升。
-
提供不确定性估计:当 Actor 探索到某个新奇模式时,如果只有一个 RM,它可能给出一个离谱的高分。但集成中多个 RM 对此模式打分分歧会非常大(高方差),通过不确定性惩罚,这个模式的最终奖励会被大幅压低,Actor 就会放弃继续朝这个方向优化。
代价:训练和推理成本成倍增加,且需要维护多个模型。但在大型项目中,为了稳定性和安全性,这种开销常常是值得的。
训练 RM 时,通常使用多大的 batch size?为什么 batch size 对偏好比较很重要?¶
典型范围:在大型语言模型的 RM 训练中,全局 batch size(所有 GPU 上总和)通常在 32 到 128 个比较对 之间,有时会更大(如 256)。这指的是成对比较的数量,而非 token 数。
为什么 batch size 很重要?
RM 的训练损失是基于“对比”的。一个 batch 内的样本构成直接影响了梯度信号的丰富度和对比学习的质量。
-
构建有效的对比空间:BT 模型损失
-log σ(r_w - r_l)只在一个独立的偏好对上进行。理论上,batch size 为 1 也能训练。但实践中,更大的 batch size 能自然地将更多无关的 (prompt, response) 组合在一起。虽然它们不参与 loss 计算,但在使用正则化(如批次归一化)或某些隐式对比机制时,更大的 batch 能提供更稳定的统计量。 -
挖掘“困难负样本”:最关键的对比学习技巧是批内负样本挖掘。我们可以构造一种训练方式:对于一个 batch 内的 N 个偏好对,我们不仅计算原始对内的 chosen vs rejected 损失,还可以将某个 prompt 的 chosen 回答与其他 prompt 的 chosen 回答进行对比(作为更强的负例)。或者,在批内寻找那些 RM 评分最高的 rejected 和评分最低的 chosen,让它们形成“最难”的对比。所有这些挖掘策略都要求 batch size 足够大,才能包含有意义的困难负样本。 如果 batch size 太小,挖掘池过浅,模型学不到有区分力的决策边界。
-
稳定梯度和训练:RM 训练对偏好数据中的噪声(如标注错误)很敏感。小 batch 下的梯度方向可能被个别错误标签主导,导致训练震荡。较大的 batch 通过平均效应,能产生更平稳、更代表整体偏好趋势的梯度。
-
与 PPO 阶段的匹配:PPO 阶段的 batch 通常也很大,用于生成和评估大量回答。RM 在训练时接触到的 batch 尺度与推理时(为 PPO 打分)的尺度保持一致,有助于避免因 batch 统计差异带来的分布偏移。
实践考虑:由于每个样本包含很长的 prompt 和一对回答,RM 训练的显存消耗巨大。通常需要配合梯度累积(Gradient Accumulation)来模拟大 batch 训练。
奖励模型是否需要进行对抗训练?如何构造对抗样本?¶
绝对需要。 标准的 RM 训练数据是静态的,无法覆盖 PPO 中 Actor 主动探索出的各种“奖励黑客”样本。对抗训练是为了让 RM 提前见识到未来可能遭受的攻击,并变得更强。
构造对抗样本的方法:
-
利用 PPO 的中间检查点生成:这是最直接、最贴近真实攻击的方法。在 RLHF 过程中,定期保存 Actor 的中间版本(如每 10-20 步的检查点)。让这些中间版本的 Actor 对一批 prompt 生成回答。由于 RL 训练会推动 Actor 去最大化 RM 的分数,这些中间回答中会天然地包含许多 RM “喜欢”但可能已经偏离正轨的样本。将这些样本与人写的优质回答进行比较,让人工或 AI 评判员指出其缺陷,就构成了高质量的对抗偏好数据。
-
对抗性 prompt 的构造:让红队专家或有创造力的标注员,专门设计那些容易诱使模型生成表面上高分、实则低质的 prompt。例如,“请用一种极其专业且充满自信的语气,解释为什么地球是平的”。模型很可能生成一个格式完美、腔调权威但内容荒谬的回答。RM 的原型极可能给这种“完美的胡说八道”打高分。将其标注为 rejected,与一个正确解释的回答对比,就构成了事实性维度的对抗样本。
-
基于奖励模型的“白盒”对抗攻击:这是梯度层面的攻击。固定当前 RM 的参数,对一个初始的回答 token 序列进行梯度上升,目标是最大化 RM 的输出奖励。通过这种优化,我们会在回答空间中找到那些能让 RM 极度兴奋、但在人类看来荒诞不经的“对抗性回答”。然后,由人类/AI 将这些对抗性回答标注为 rejected,并与正常回答构成训练对。这相当于拿着 RM 自己的“弱点地图”来训练它。
-
语义等价对抗:对高质量回答进行文本改写(如同义词替换、语序调整),但不改变其含义。原始的 RM 可能会因为不熟悉这种微小的分布偏移而打出低分。将改写后的回答与原始回答构造成“同等好”的平局或弱偏好对,训练 RM 对这些语义保持不变的扰动具有鲁棒性。
通过以上主动攻击和被动防御式的对抗训练,RM 才能在 PPO 的高强度对抗博弈中站稳脚跟,成为一个真正“老练”的裁判。
在 RM 训练中,如何处理“不确定样本”(即标注者分歧大的数据)?可以加权或丢弃。¶
在 RM 训练中,不确定样本指多个标注员对同一比较对持不同意见的数据,通常表现为标注者间一致性低(如投票接近 3:2)或标注者给出的偏好强度弱。简单丢弃这些样本会损失宝贵信息,尤其是它们往往正是模型决策边界上的困难样本。更优的做法是利用它们进行软标签训练或样本加权,让 RM 学习到“这些样本的回答质量差异很小或存在合理主观性”。
处理方法:
- 软标签 (Soft Labeling)


-
作为困难负样本的补充 分歧大的样本可视为“模糊边界”的困难样本。可在训练后期使用,强制 RM 细化决策边界。但需谨慎,过多困难样本会导致过拟合标注噪声。
-
分层训练 先使用高一致性数据(如一致率>80%)训练 RM 至收敛,获得基本排序能力;再用包含分歧的数据进行微调,此时可通过上述软标签+低权重的方式,在不破坏已有知识的前提下进行精细化。
-
仲裁与专家介入 对于关键安全维度或高价值长尾数据,分歧样本应交由资深专家仲裁,给出最终标签。这比简单丢弃或投票更可靠。
结论:直接丢弃是最差选择。推荐使用软标签+低权重的方式保留所有信息,让 RM 了解人类偏好的不确定性,从而在 PPO 中提供更平滑的奖励信号,避免过度优化到个别标注员的偏差上。
如果 RM 在某些领域(如代码)评判能力很弱,你如何诊断和增强?¶
诊断方法:
-
按领域评估准确率 将 RM 的评估集按任务类型(代码、数学、创意写作、安全等)分层,计算每个领域的排序准确率和 Spearman 相关系数。如果在代码子集上准确率显著低于整体平均(如 60% vs 80%),就表明 RM 对该领域认知薄弱。
-
与专家评判比对 抽取一批代码生成样本,邀请资深开发者作为专家评判者,比较 RM 打分与专家打分的相关性。低相关说明 RM 没有掌握代码质量的评估标准(如正确性、效率、可读性等)。
-
特征归因分析 分析 RM 对代码回答的奖励预测中,哪些 token 贡献最大(如通过梯度×输入或注意力)。如果 RM 过度关注代码表面格式(如缩进、注释长度)而忽略逻辑正确性,说明它学到的特征有偏差。
-
人工抽查错误案例 重点检查 RM 判错的高分/低分代码案例。常见错误模式:给冗长的、带大量注释但逻辑错误的代码高分;给简洁但正确的代码低分;对有语法错误的代码给高分。
增强策略:
核心原则:对于有客观标准的领域(代码能否运行、数学答案是否正确),将自动化验证信号和人类偏好信号融合是快速提升 RM 能力的捷径。
奖励模型的输出范围需要限制吗?无限制的分数会对 PPO 造成什么影响?¶
强烈需要限制,否则 PPO 训练极易崩溃。
无限制分数的灾难性后果:
-
奖励尺度漂移与策略崩溃:如果 RM 的输出范围是 (−∞,∞),在 PPO 中,策略会不断探索以获取更高的奖励,RM 可能对越来越怪异的文本打出爆炸式增长的分数(例如,RM 隐式学会给超长文本高分)。PPO 算法没有内在机制阻止奖励的无限增长,最终导致策略更新步长过大,模型参数被推向极端,语言能力彻底崩溃。
-
优势函数的尺度失控:PPO 使用优势函数 At 进行梯度更新,优势的大小直接影响策略梯度的方差。如果奖励的绝对值和方差过大,优势估计的噪声也会极大,导致训练极度不稳定,甚至出现梯度爆炸。
-
KL 惩罚失准:RLHF 中 KL 惩罚系数 β 需要与奖励的尺度相平衡。如果奖励可以任意大,一个固定的 ββ 将无法有效约束策略,因为模型会宁愿承受较大的 KL 惩罚去追逐那巨大的奖励,导致参考模型约束形同虚设。
-
不同 batch 间的不可比性:如果 RM 的打分在不同 batch 间尺度漂移,优势归一化(如 Z-score 标准化)就成了必须。但即使标准化,如果原始分数分布出现长尾尖峰,标准化后也会导致大部分样本的奖励被压缩到极小区间,区分度丧失。
限制输出范围的方法:
-
标准化输出头:在 RM 的线性输出层后不加偏置,使用 LayerNorm 或直接限制权重范数,约束输出范围。
-
训练时损失函数设计:使用类似 margin ranking loss 的损失,只关心相对排序,而不是绝对分数值。或者增加一个辅助的 MSE 损失,将 RM 分数拉向某个预定义范围(如[-10, 10])。
-
训练后校准:训练完成后,用一批校准数据确定 RM 输出的均值和方差,在推理时进行 Z-score 标准化,并可能裁剪到固定区间(如[-3, 3])。
-
使用 Bradley-Terry 的概率形式:不直接输出无界分数,而是输出偏好概率,这自然被限制在 (0,1) 之间。但通常实现时仍输出 logit 值再映射。
最佳实践:在训练 RM 时,通常使用不带偏置的最后线性层,并结合适当强度的 L2 正则。在 PPO 中,对每个批次的奖励进行Z-score 标准化,并配合适当 ββ 的 KL 惩罚,以抵消奖励尺度的不稳定性。
分析 RM 训练中可能出现的“崩塌”:所有回答的得分趋同,为什么?怎么解决?¶
现象:无论输入是好是坏,RM 对所有回答打出的分数都差不多(比如围绕某个均值轻微波动),导致奖励信号没有区分度,PPO 无法进行有效优化。
原因分析:
-
训练数据中的“平局”过多:偏好数据中大量 chosen 和 rejected 质量差异极小,或者标注者随机选择,导致信号噪声比过高。RM 学习到的最优解就是给所有人都打差不多的分数,以最小化 BT 损失。
-
过强的正则化:为防止过拟合使用了过大的 L2 正则系数,或模型初始化不当,导致参数无法学到有意义的区分特征,输出趋向于偏置项。
-
学习率过低或训练不足:模型还未收敛到能将好坏拉开差距的程度。
-
特征表示崩塌:RM 的编码器(SFT 底座)在训练中发生了灾难性遗忘,丧失了语言理解能力,对所有输入产生相似的隐藏表示,导致输出趋同。
-
标签泄露或偏差:如果训练数据构造不当(例如 chosen 和 rejected 总是成对出现且仅有一两个词的差别),RM 可能只学会了识别这几个词,对其他部分视而不见,造成了“大部分情况分数一样,只有触发特定词才变化”的现象。
解决策略:
检测手段:在验证集上统计 RM 分数的标准差,并绘制 chosen 和 rejected 的分数分布直方图。理想情况下,两个分布应有明显分离且标准差合理。
如何使用对比数据构造“硬负样本”(Hard Negatives)来提升 RM 的区分能力?¶
硬负样本指那些容易被模型误判为高质量,但在人类评估中明显存在某方面缺陷的回答。它们位于决策边界的模糊地带,对训练最具信息量。
构造策略:
-
利用当前 RM 的错误案例:在训练过程中,定期用当前 RM 对一批候选回答打分。找出那些 RM 给分很高但人类标注员或专家判定为较差的样本(假阳性),以及 RM 给分很低但实际较好的样本(假阴性)。将这些错判样本与正确标签组合成新的偏好对,作为硬负样本加入训练集。
-
基于策略生成的回环 (On-policy Hard Negative Mining) 这需要在 PPO 迭代中配合进行:使用当前的 Actor 策略对 prompt 采样多个回答,并用当前 RM 评分。选出评分最高的几个回答,交由人工或 AI 评判员审查。那些表面诱人但包含事实错误、逻辑漏洞、安全风险的,就是完美的硬负样本。将它们与人工修正后的高质量回答配对,以此训练 RM 识别这些“美丽的陷阱”。
-
对抗性构造:给定一个高质量的 chosen 回答,有意对其进行微小的“破坏”以生成 rejected。破坏方式包括:
- 注入事实错误:用 AI 自动替换某些事实陈述为似是而非的错误信息。
- 逻辑破坏:在推理链中插入矛盾或跳跃。
-
风格污染:在专业回答中插入不礼貌用语或无关信息。 这类 rejected 与原始 chosen 构成高难度的对比对。
-
跨模型构造:使用一个强大的模型(如 GPT-4)生成高质量回答(chosen),再用一个较弱或有特定缺陷的模型生成回答(rejected),但要求该 rejected 在表面格式或流畅度上与 chosen 相当。这迫使 RM 深入内容本质进行区分。
-
温度与采样策略诱导:使用较高温度(如 T>1.0)让同一个模型生成多个不同质量的样本。高温度下模型偶尔会“说胡话”,这些样本可以作为天然的 rejected,而低温度下的高概率样本可以作为 chosen。需人工审核确保对比的有效性。
注意事项:硬负样本比例不宜过高(通常 10-30%),否则训练会过于困难、收敛缓慢。同时要防止 RM 对硬负样本过拟合,丧失对简单样本的泛化能力。
训练好的 RM 是否可以用于给 SFT 数据打分,从而过滤低质量指令数据?¶
完全可以,而且这是 RM 极具价值的衍生应用。 这实际上是利用 RLHF 的中间产物来反哺 SFT 阶段,形成数据质量的正向循环。
操作方式:
-
大规模打分与过滤:收集大量来源混杂的指令-回答对(如爬取的社区数据、众包标注、模型生成),使用已训练的 RM 对每个回答进行质量评分。设置一个合理的阈值,丢弃低于阈值的低质量样本,保留高质量样本用于下一轮 SFT 或继续训练 RM。
-
迭代式数据飞轮:
- 初始 SFT 模型用少量高质量人工数据训练。
- 用该 SFT 模型初始化 RM,收集偏好数据训练 RM。
- 用训练好的 RM 对更多无标注数据进行打分,筛选出高置信度的高质量样本,扩充 SFT 数据集。
-
用扩充后的数据训练更好的 SFT 模型,再初始化更强的 RM,如此循环。这就是“自我奖励”或“自我改进”的飞轮。
-
多维过滤:如果 RM 输出多维分数(有用性、安全性、流畅性),可以设置不同的过滤条件。例如,仅保留有用性>4 且安全性>4.5 的样本,确保进入 SFT 的数据既高质量又安全。
优势:
-
成本极低:自动化打分几乎零成本,可处理百万级数据。
-
标准统一:RM 的打分标准源自人类偏好,且高度一致,避免了人工审核的不稳定性。
-
可扩展:能快速扩展到新领域,只需该领域的 prompt 即可筛选出相应的好回答。
风险与缓解:
-
奖励黑客的延续:RM 自身的偏见(如偏好冗长)会导致筛选出的 SFT 数据同样带有此偏见,训练出的新模型会放大该偏见。需定期人工审计筛选后的数据质量。
-
分布偏移:RM 主要在某种分布的偏好数据上训练,对过于偏离该分布的数据打分可能不准。需要确保打分数据与 RM 训练分布有一定重叠。
-
多样性丧失:RM 倾向于选择“安全”的、主流的回答,可能会系统地过滤掉那些正确但风格迥异的回答,降低 SFT 数据的多样性。可以结合多样性采样策略(如聚类后筛选)来缓解。
什么是“奖励模型的 OOD 问题”?为什么它在 PPO 中面对策略生成的新回答时可能失效?¶
OOD (Out-of-Distribution) 问题指奖励模型在训练时见到的数据分布,与 PPO 阶段策略模型生成的样本分布发生严重偏离,导致 RM 的打分失去准确性、可靠性,进而引发奖励黑客或训练崩溃。
产生原因:
-
分布偏移的不可避免性:RM 是在静态偏好数据集上训练的,该数据集来自 SFT 模型或早期检查点的采样。而 PPO 是一个迭代优化过程,每一步 Actor 的策略都在变化,其生成的回答会逐渐漂移出原始数据分布。随着训练进行,Actor 生成的语言风格、用词习惯、甚至回答长度都可能发生显著变化,RM 对这些“新奇”样本完全陌生。
-
探索带来的新奇样本:PPO 鼓励策略探索以获得更高奖励。Actor 可能会生成一些在原始训练数据中几乎不可能出现的 token 组合(例如,为了获得长度奖励而重复无意义短语,或者组合出超长的推理链)。RM 在面对这些完全陌生的样本时,其预测要么高度不确定,要么依赖从训练数据中学到的表面特征进行盲猜,容易给出极端且错误的分数。
-
RM 的过度自信:神经网络本质上是插值器,但在外推(OOD)时往往表现得极其自信和不可预测。RM 可能会给某个完全错误的 OOD 回答打出非常高的分数,因为该回答偶然触发了它在训练中学到的某些正相关特征(如“详细”、“使用了复杂句式”),而完全忽略了内容的荒谬性。
后果:
-
奖励黑客:策略发现某些 OOD 样本能骗得异常高分,于是 RL 优化会系统性放大这些模式,生成越来越畸形的内容。
-
价值估计失败:Critic 网络无法准确估计这些 OOD 状态的价值,优势函数充满噪声,策略梯度失准。
-
语言崩溃:策略在追逐虚假高奖励的过程中,语言能力逐渐退化,最终生成不可读的文本。
缓解措施:
-
在线数据迭代 (Online RLHF):定期用当前的 Actor 采样生成新的回答,进行人类标注或 AI 评判,更新 RM 的训练集,以覆盖策略的最新分布。这是最根本的解决方案。
-
强大的 KL 约束:使用足够大的 KL 惩罚系数,强制 Actor 留在 RM 可信赖的分布区域内,避免进行过度的探索。
-
RM 集成与不确定性惩罚:利用集成 RM 的打分方差来衡量 OOD 程度,对高方差的样本施加奖励惩罚,迫使策略远离 RM 陌生的区域。
-
对抗训练 RM:在 RM 训练时,主动加入由各种中间检查点生成的对抗样本,扩展 RM 的训练分布,使其对未来的策略偏移有一定的预见性和鲁棒性。
如何检测 RM 是否学到了不该有的偏见(如对特定格式、语气的偏好)?¶
RM 的偏见通常是隐式的,需要设计系统性的检测手段。
- 控制变量对比实验
构造两组回答,它们的内容质量完全相同,只在单一表面特征上存在差异。
-
长度测试:生成内容相同但长度不同的回答(如详细版 vs 精简版),观察 RM 是否始终给长版更高分。
-
格式测试:生成 markdown 格式与纯文本格式的相同内容,看 RM 是否有格式偏好。
-
礼貌用语测试:在高质量回答的开头和结尾添加或移除大量客套话(“感谢您的提问”、“希望我的回答对您有帮助”),测试 RM 是否被礼貌性文字影响评分。
-
权威腔调测试:一个回答用词自信、引经据典但包含事实错误,另一个回答内容正确但语气谦逊,测试 RM 是否被腔调欺骗。 如果 RM 在这些测试中表现出显著的、与内容无关的偏好,说明它学到了表面捷径。
-
公平性与刻板印象审计
创建社会偏见测试集。例如,同一问题的两个回答,仅性别代词不同(他 vs 她),或关联不同种族、职业。检查 RM 的打分是否因这些敏感属性而产生系统性差异。如果 RM 对包含特定群体关键词的回答普遍给低分,说明它学到了训练数据中的社会偏见。
- 基于归因的特征重要性分析
使用 SHAP、LIME 或基于梯度的显著性方法,分析 RM 在给一个回答打分时,最关注的 token 是哪些。如果总是标点符号、换行符、客套词等占据高权重,而内容相关的名词、逻辑连接词等权重较低,则强烈的风格偏见。
- 分布外领域泛化测试
用与训练数据分布差异较大的 prompt 测试 RM(如从日常对话切换到古诗词、代码),观察其在未见领域是否能保持评分标准的一致性。若在新领域打分出现系统性偏差(如所有回答都极高/极低),说明 RM 的评分标准过于依赖训练分布。
- 统计相关性分析
计算 RM 打分与各种表面特征(长度、标点数量、生僻词数、段落数等)的 Pearson/Spearman 相关系数。如果相关系数在统计上显著且数值较大,说明 RM 存在对应的偏见。
一旦检测到偏见,需要在数据端(平衡训练数据)、损失端(对抗训练、特征解耦)、后处理端(校准惩罚)进行针对性修复。
奖励模型是否可以增量更新?在策略迭代中,如何不断让 RM 适应新的数据分布?¶
必须增量更新,否则 RM 在策略迭代中很快会过时。
增量更新策略:
-
定期全量重训 (Periodic Full Retraining) 当累积了足够多的新标注数据(来自当前策略的新分布)时,将新数据与旧数据按一定比例混合,从头或从旧 RM 检查点重新训练一个新 RM。这是最简单也最彻底的更新方式,能无偏地吸收新信息。缺点是成本高。
-
微调增量更新 (Incremental Fine-tuning) 以现有 RM 为起点,仅用新分布的数据进行少量步数的微调。为了避免灾难性遗忘(忘记了之前学到的有效通用标准),必须采取以下措施:
- 经验重放 (Experience Replay):在微调时,混入一部分旧数据,强制 RM 不遗忘旧知识。
- 弹性权重巩固 (EWC) 等持续学习正则化:对之前学到的关键参数施加较大约束,限制其在微调中发生剧变。
-
极小的学习率:用旧训练 1/10 的学习率进行微调,确保参数更新平滑。
-
集成与淘汰 (Ensemble with Retirement) 保留多个历史版本的 RM(如 RM_v1, RM_v2, ...)。在 PPO 中,使用它们的加权平均作为当前奖励,权重随时间衰减。当新 RM 上线后,最旧的 RM 被淘汰。这自然实现了奖励标准的平滑过渡。
-
在线自适应 RM (Online Adaptation) 在 PPO 训练的同时,RM 也以较小的学习率在线更新。但这种方法极易导致“奖励黑客的共谋”:Actor 和 RM 可能一起漂移到一个荒诞的状态。因此,必须用固定的参考基线 RM进行交叉验证,或使用双重 RM(一个在线更新,一个冻结),通过 KL 惩罚或打分对比来约束在线 RM 的更新幅度。
适应新分布的核心挑战:
-
避免“谄媚”RM:如果只用高分样本更新 RM,RM 会变得对当前策略越来越宽容,导致分数膨胀和标准退化。必须同时引入多样性的负样本,特别是人类标注为低质量但当前 RM 打分较高的假阳性样本。
-
保持与人类价值观的锚定:始终保留一批从项目初始就由人类专家精心标注的“金标准”偏好数据,在每次 RM 更新后验证其与人类判断的一致性。如果相关性下降,则回滚或修正更新。
如果让你从头设计一个轻量级的奖励模型,以减少 RLHF 显存,你会怎么做?¶
RLHF 阶段显存爆炸的核心是同时加载了 Actor、Critic、RM、Ref 四个大模型。轻量化 RM 可大幅节省资源。
设计策略:
- 极小化 RM 参数规模
- 使用预训练的小模型:如用 0.5B-1.5B 参数的小模型进行 SFT 后初始化 RM,而不是与 Actor 同等规模。实验证明,RM 作为评判者,其能力瓶颈更多在标注数据质量,而非参数规模。小模型足够捕捉偏好。
-
模型蒸馏:用一个超大型 RM 作为教师,将打分知识蒸馏到一个小型学生模型中。学生模型仅需几百 MB 显存即可。
-
共享底座 (Shared Backbone) 让 RM 与 Actor 共享 Transformer 底座的大部分层。仅在最后几层分叉,Actor 接语言模型头,RM 接标量头。这样只需加载一份底座参数,极大节省显存。但需注意梯度冲突,需精细设计训练策略(如交替训练)。
-
量化与低精度推理 对 RM 进行 INT8 甚至 INT4 量化。由于 RM 仅需进行单次前向传播(不需要自回归生成),推理速度极快且对量化噪声的容忍度比生成模型高。
-
非自回归的打分架构
- 使用双向注意力的编码器(如 Bert, RoBERTa)作为 RM 底座,代替自回归解码器。编码器在文本理解任务上效率极高,能生成丰富的句子级表示,结合池化层和标量头,性能优秀且参数量远小于同性能的解码器模型。
-
或者,利用现有的文本嵌入模型(如 sentence-transformers)作为底座,仅在其上增加轻量的评分头。
-
去除冗余组件 RM 不需要自回归生成,因此可以去掉所有与生成相关的缓存和优化(如 KV Cache)。只保留纯粹的前向推理图。
-
使用池化结构 不保留整个序列的隐藏状态,仅保留池化后的向量,极大节省后续计算。
一个轻量级 RM 的蓝图:
底座:一个 300M 参数的 Bert 模型,用 SFT 数据进行领域微调。顶部:取 [CLS] token 的隐藏状态,通过一个 LayerNorm -> 2层 MLP -> 标量输出。训练时使用 BT 损失 + 长度对抗训练。推理时使用 FP16 精度。这样一个 RM 所占显存不足 1GB,却足以在多数场景提供合格的奖励信号。
奖励模型训练时,梯度更新的稳定性和普通分类任务相比有什么特殊之处?¶
RM 训练本质上是一个排序问题,而非分类或回归,其梯度特性有显著不同,带来了独特的稳定性挑战。
- 梯度的尺度与分布


稳定训练的技巧:
-
梯度裁剪:限制每次更新梯度的最大值,防止个别异常样本引起参数剧变。
-
Mixout 或强 Dropout:在 RM 的顶层加入较大的 Dropout,防止过拟合到特定特征。
-
标签平滑/软标签:减少模型对训练标签的绝对信任,降低过拟合噪声的风险。
-
学习率 Warmup 和衰减:保证训练初期分数稳定建立,后期精细调整。
-
使用充足的 batch size:平滑梯度,避免被个别样本主导。