第4章 奖励模型训练:数据准备、损失函数与训练技巧

奖励模型(Reward Model)的训练,说白了就是给AI的回复打分。你想想看,我们做RLHF,总得有个裁判吧?这个裁判就是奖励模型。我刚开始接触这个环节时,总觉得它就是个简单的二分类问题,后来踩了不少坑才明白——这里面的门道可深了。

4.1 数据准备:从偏好到分数

训练奖励模型,首先得有数据。但这里的数据不是普通的标注数据,而是偏好数据

什么叫偏好数据?就是给同一个prompt,生成两个不同的回复,然后让人去选:哪个更好?哪个更差?

我个人习惯用这样的格式来组织数据:

{
  "prompt": "请解释一下量子纠缠",
  "chosen": "量子纠缠是指两个粒子之间的一种特殊关联...",
  "rejected": "量子纠缠就是两个粒子互相纠缠..."
}

这里要注意几个关键点:

  • 数据量:我建议至少准备10万条以上的偏好对。太少的话,模型学不到稳定的偏好信号。
  • 多样性:prompt要覆盖各种领域和难度。我在项目中遇到过,如果只收集简单问题的偏好,模型在复杂问题上就会乱打分。
  • 标注一致性:同一个标注员标注的数据要尽量一致。我曾经发现,同一个标注员上午和下午的标准都不一样——嗯,这很常见,需要做质量控制。

核心要点:偏好数据的质量直接决定奖励模型的上限。宁可数据量少一点,也要保证标注质量。

4.2 损失函数:Pairwise Ranking Loss

奖励模型的训练,用的不是交叉熵,而是Pairwise Ranking Loss。为什么?因为我们要学习的是相对偏好,而不是绝对分数。

公式长这样:

L = -E[log(σ(r_chosen - r_rejected))]

其中:

  • r_chosen 是模型对"更好"回复的打分
  • r_rejected 是模型对"更差"回复的打分
  • σ 是sigmoid函数

说白了,这个损失函数就是让模型学会:好的回复得分要比差的回复得分高。至于具体高多少,不重要。

我刚开始做的时候,总觉得这个损失函数太简单了。后来发现,它的优雅之处就在于简单——你不需要定义"好多少",只需要定义"哪个更好"。这大大降低了标注难度。

小技巧:实际训练时,我习惯在损失函数里加一个margin项:

L = -E[log(σ(r_chosen - r_rejected - margin))]

这个margin能让模型学得更稳定,避免出现"两个回复得分差不多"的情况。

4.3 训练技巧:让奖励模型真正学会打分

训练奖励模型,有几个坑我替你们踩过了,直接说结论:

4.3.1 初始化策略

奖励模型通常基于一个预训练语言模型来初始化。我建议用SFT(监督微调)后的模型,而不是直接用基座模型。为什么?因为基座模型还没学会"对话",直接训练奖励模型容易学偏。

4.3.2 训练稳定性

奖励模型的训练很容易出现梯度爆炸。我遇到过最夸张的一次,loss直接飞到NaN。后来加了梯度裁剪(gradient clipping),阈值设为1.0,问题就解决了。

4.3.3 评估指标

怎么知道奖励模型训练得好不好?我一般看两个指标:

指标 含义 理想值
Accuracy 模型判断"哪个更好"的准确率 > 70%
Kendall's Tau 排序一致性 > 0.5

注意,Accuracy不是越高越好。如果超过90%,说明你的数据太简单了,模型可能过拟合了。

避坑指南:我曾经在训练奖励模型时,发现验证集上的Accuracy一直在涨,但实际用起来效果很差。后来发现,模型学会了"长回复就是好回复"这种捷径。解决办法是:在数据中加入长度、风格等干扰项,让模型真正学习内容质量。

4.4 知识体系总览

下面这张图,是我自己总结的奖励模型训练全流程。你看一眼,就能把整个章节串起来:

奖励模型训练知识体系 数据准备 偏好数据收集 标注质量控制 数据多样性保证 损失函数 Pairwise Ranking Loss Margin机制 Sigmoid映射 训练技巧 SFT初始化 梯度裁剪 评估指标监控 核心原则 学习相对偏好,而非绝对分数 常见问题与解决方案 • 过拟合 → 增加数据多样性,加入正则化 • 梯度爆炸 → 梯度裁剪,降低学习率 • 捷径学习 → 控制回复长度、风格等干扰因素

4.5 实战建议

最后,给你几个我实战中总结的建议:

  1. 先小规模试跑:用1000条数据先跑通流程,再上全量数据。我吃过亏,一上来就跑10万条,结果发现代码有bug,白白浪费了算力。
  2. 监控训练过程:除了loss,还要看chosen和rejected的分数分布。如果两个分布完全重叠,说明模型没学到东西。
  3. 做人工验证:每训练一个checkpoint,都拿几个典型case让人去判断。机器指标再好看,也不如人眼靠谱。

我的小习惯:训练奖励模型时,我会同时保存多个checkpoint。因为有时候训练到后期,模型反而会"学过头",早期的checkpoint反而更好用。

嗯,奖励模型的训练就讲到这里。记住一句话:奖励模型的质量,决定了RLHF的上限。花时间把这一步做好,后面的PPO训练会轻松很多。

专注资料整理