奖励模型训练:从人类偏好数据到打分函数

FreeGuideOnline 最新 2026-06-29

奖励模型训练:从人类偏好数据到打分函数

什么是奖励模型?

奖励模型(Reward Model, RM)是强化学习与人类反馈(RLHF)流水线中的核心组件。它的任务是将“人类的偏好”转化为一个可量化的标量信号——奖励值。在大型语言模型的对齐过程中,我们无法在每一个生成步骤都获得人工反馈,因此需要训练一个模型来模拟人类的判断,自动为模型输出打分。

简单理解:奖励模型就是一个模仿人类喜好的打分函数。给定一个提示词和模型生成的回答,它输出一个分数,分数越高代表回答越符合人类期望。

奖励模型的工作流程概览

整个训练过程分为三个核心阶段:

  1. 收集人类偏好数据:让标注者对同一提示词的多个回答进行比较。
  2. 定义奖励模型架构:通常基于预训练语言模型,附加一个线性头输出标量分数。
  3. 训练奖励模型:使用偏好数据,让模型学会如何为更受人类偏爱的回答打出更高分。

最终,这个训练好的奖励模型将被冻结,用于后续的强化学习(如PPO)环节,指导策略模型优化生成质量。

第一步:构建人类偏好数据集

数据格式:比较式标注

偏好数据集的结构通常如下:

提示 (Prompt) 回答 A (Response A) 回答 B (Response B) 人类偏好
如何制作拿铁? 简单步骤... 详细步骤并附温度说明... B > A
  • 提示:用户输入的原始问题或指令。
  • 回答对:由初始策略模型(通常经过监督微调)针对同一提示生成的多个不同回答。通常会采样4~9个回答来形成比较对。
  • 偏好标签:标注者选择他们认为更好、更有帮助、更安全或无偏见的那个回答。标签可以是“A更好”“B更好”“平手”或“都差”。

采集的注意事项

  • 多样性:提示应覆盖广泛的主题和任务,确保奖励模型对不同场景都有判断能力。
  • 高质量标注:标注者需要经过培训,遵循明确的准则(如帮助性、真实性、无害性)。多个标注者之间的一致性(如Cohen's Kappa)需要监控。
  • 排序粒度:除了二选一,有时也会收集更细粒度的排序数据(例如列出4个回答的优劣顺序),这能提供更丰富的训练信号。

第二步:奖励模型的架构设计

基础骨干网络

奖励模型通常复用已完成预训练且经过监督微调(SFT)的语言模型作为初始化,因为SFT模型已经具备了一定的语言理解和生成能力,包含了对优质回答的潜在知识。使用相同词汇表和大小的模型能减少分布偏移。

预测头(Scoring Head)

在基础模型的最后一层隐藏状态之上,添加一个线性回归头。最常见的做法是:

  • 取最后一个token的隐藏向量(或者对所有token的隐藏状态做池化),输入到一个线性层。
  • 线性层输出一个单一的标量值,即为该回答的奖励分数。

数学表示:$r_\theta(x, y) = W^\top \cdot h_{\text{last}}(x, y) + b$,其中 $x$ 是提示,$y$ 是回答,$h_{\text{last}}$ 是最后的隐藏状态。

为何使用最后一个token?

自回归模型中,最后一个token的表示聚合了整个序列的信息,尤其适合作为序列级表示进行打分。实验中也常证实这比平均池化效果更稳定。

第三步:训练目标与损失函数

核心思想:Bradley-Terry 偏好模型

假设我们有一对回答 $(y_w, y_l)$,其中 $y_w$ 是更偏好的,$y_l$ 是较差的。奖励模型的理论基础是 Bradley-Terry 模型,它建模了“ $y_w$ 比 $y_l$ 更受偏好”的概率:

$$P(y_w \succ y_l) = \frac{\exp(r(x, y_w))}{\exp(r(x, y_w)) + \exp(r(x, y_l))} = \sigma(r(x, y_w) - r(x, y_l))$$

其中 $\sigma$ 是sigmoid函数。这本质上将两个回答的奖励值之差映射到[0,1]的概率,表示 $y_w$ 被选中的概率。

损失函数:交叉熵损失

我们希望最大化人类偏好数据的似然,因此使用负对数似然损失:

$$\mathcal{L}(\theta) = -\mathbb{E}{(x, y_w, y_l) \sim \mathcal{D}} \left[ \log \sigma \left( r\theta(x, y_w) - r_\theta(x, y_l) \right) \right]$$

这意味着:

  • 当 $r_\theta(x, y_w) - r_\theta(x, y_l)$ 很大时,损失很小。
  • 当差值很小或负值时,损失增大,迫使模型拉大两个回答的分数差。

实现细节与训练技巧

  • 批量构建:每个训练样本包含提示、胜者回答和败者回答。将所有样本的分数差值送入sigmoid后计算损失。
  • 奖励归一化:为了防止奖励分数的尺度在训练中漂移,通常会设定一个约束,例如让一个batch内的奖励均值为0。常见做法是维护奖励的滑动平均值并从输出中减去。
  • 学习率与优化:使用小学习率(如1e-5~5e-6),采用AdamW优化器。因为只训练顶层的线性头或全量微调,但全量微调可能更利于捕捉偏好细节,不过需警惕过拟合。
  • 早停与验证:使用独立的验证集(人工标注的偏好对)监控准确率(即模型对胜者打分更高的比例)。通常准确率在65%~75%之间可视为有效。

第四步:评估奖励模型的性能

训练完奖励模型后,我们需要确保它学会了人类的偏好。常用指标包括:

  • 偏好准确率:在留出测试集上,模型对 $(y_w, y_l)$ 给出 $r(x, y_w) > r(x, y_l)$ 的比例。这是最重要的直接指标。
  • 与人工评分的相关系数:对一批回答单独进行人工打分(Likert量表),计算模型奖励与人工评分的Pearson或Spearman相关系数。
  • 校准度:奖励分数是否随着回答质量的提升而单调递增?可以通过对多个不同质量的回答进行排名来观察。
  • 奖励分布的尺度与方差:过大或过小的奖励范围都不利于后续强化学习。通常希望奖励值有合理的动态范围(例如均值接近0,标准差可控)。

第五步:将奖励模型用于强化学习

当奖励模型训练完毕且冻结后,它被接入到RLHF的第三步——PPO训练中:

  • 策略模型(待优化语言模型)生成回答 $y$。
  • 奖励模型对 $(x, y)$ 给出奖励值 $r(x, y)$。
  • PPO算法利用这个奖励信号,结合KL惩罚项(防止策略偏离初始SFT模型太远)来更新策略模型。

此时,奖励模型就充当了环境反馈的角色,替代了真实世界中无法获取的即时奖励。它的准确性和鲁棒性直接决定了最终对齐效果的上限。

进阶挑战与优化方向

减少奖励黑客(Reward Hacking)

策略模型在RL训练中可能会学会一些“钻空子”的行为,例如产生高奖励但无意义或重复的文本。原因可能是奖励模型在某些分布外输入上泛化不良,给出了虚高的分数。缓解方法包括:

  • 在奖励模型训练时加入对抗样本困难负样本
  • 使用集成奖励模型(Ensemble),通过平均多个独立训练的RM输出,提高稳健性。
  • 结合规则奖励(如长度惩罚、重复惩罚)进行约束。

处理多目标偏好

人类偏好通常是多维度的(帮助性、安全性、诚实性等),单一标量奖励可能导致目标冲突。解决思路包括:

  • 训练多个独立的奖励模型,每个模型负责一个维度,然后在RL阶段加权求和。
  • 使用基于排序的偏好数据,将多个方面整合进一个统一的比较框架。

降低标注成本

高质量人类标注昂贵且耗时。可以采用AI辅助标注流程:

  • 用已有奖励模型对批量回答进行预排序,只让人标注不确定性高的边界样本(主动学习)。
  • 利用强大的语言模型(如GPT-4)生成偏好判断作为弱监督信号,再通过少量人工数据微调。

总结

奖励模型训练是从人类偏好数据中提炼出量化打分函数的过程,它搭建了“人类意图”与“机器优化”之间的桥梁。关注数据收集质量、稳定的loss设计、合适的评测手段及抗过拟合策略,是成功训练奖励模型的关键。一旦获得一个可靠的奖励模型,我们便拥有了一个可复用的、自动化的质量裁判,为语言模型的深度对齐铺平道路。


本教程属于“免费在线教程”系列,旨在帮助开发者快速掌握大模型对齐技术的核心环节。