RLHF 的完整流程再拆解:从人类偏好数据到训练好的奖励模型,每一步怎么做的

我最早以为 RLHF 就是让人类标注员给模型回答打个分,然后拿这个分数去微调。但后来发现,如果同一个问题有两个回答都挺不错,一个打 4 分一个打 4.2 分,这 0.2 分的差距真的能代表质量差异吗?标注员自己可能都说不清。所以,整个 RLHF 的起点不是打分,而是比大小——让标注员在成对的回答里选一个更好的。这个选择,远比打分稳定、可复现。而奖励模型,学的就是这种“相对”的偏好,而不是“绝对”的质量。

AI technology illustration

你要是用过 ChatGPT 的早期版本,可能会注意到一个细节:它有时候会输出一些看起来很有道理但实际胡扯的内容,而且特别自信。这就是 RLHF 要解决的核心问题——让模型的输出对齐人类偏好,更真实、更有用、更无害。而这一整套对齐流程里,最容易被误解、也最容易出问题的环节,就是奖励模型的训练。咱们今天把它从头到尾拆开来看。

为什么需要奖励模型?直接用人不行吗?

你可能会想,既然人类能判断好坏,为什么不直接让人类在 RL 训练过程中实时打分呢?原因很简单:太慢、太贵、太不稳定。一次 PPO 微调可能要生成几十万条回答,让人类一个一个打分,时间和成本都扛不住,而且不同标注员的标准会漂移。奖励模型就是一个人类的廉价替身——它学会了人类对于“好回答”和“坏回答”的偏好规律,然后就能在训练时给任意新回答打出一个分数,供强化学习算法使用。

但这也意味着,奖励模型学会的只是人类在特定数据上的偏好片段,而不是人类真正的全部价值观。这一点,后面会让你大吃一惊。

第一步:收集人类偏好数据,不是打分,是“对决”

数据收集的流程,OpenAI 在 InstructGPT 论文里描述得很清楚[1]。他们先拿出一个已经通过监督微调(SFT)的模型,对同一个 prompt 生成多个不同的回答(比如 K=4 到 9 个)。然后,标注员会看到成对的回答,并选出他认为更好的那一个。注意,这里不是给每个回答单独打分,而是比较两个回答,标注员只要指认“A 比 B 好”。

这种设计巧在哪里?如果让标注员直接给一个回答打分,1 分到 5 分,你会发现不同标注员之间的一致性很差,今天同一个人打分也可能受情绪影响。但是选 A 还是 B,这个判断的稳定性高得多。而且,标注员可以基于多个维度来比较,比如真实性、有用性、无害性,但最终只输出一个简单的偏好标签。也就是说,标注过程把复杂的多维判断压缩成了一个二元选择——哪个更好。

最终得到的每条数据长这样:一个 prompt,一个 responsechosen,一个 responserejected。有的数据集还会包含多个维度的评分,但最小单位就是成对比较。像 Anthropic 的 RLHF 数据,也是用类似方法收集的[2]。整个数据集中,标注员之间的同意率通常能达到 70% 以上,这已经是非常不错的一致性了。

第二步:奖励模型的结构——从语言模型“变身”打分器

奖励模型(Reward Model, RM)通常是从 SFT 模型初始化的,这能利用预训练阶段学到的语言理解能力。具体改动很简单:把 SFT 模型最后的 unembedding 层(也就是把隐状态映射到词表的那一层)扔掉,换成一个线性层,输出一个标量。这个标量,就是奖励分数。

输入给 RM 的是 prompt + response 的连接文本,输出就是这个 response 的“人类偏好得分”。在 InstructGPT 中,他们用了 6B 参数的 RM,和 SFT 模型大小相同,但为了效率也可以更小,比如 Anthropic 在有些实验里用了更小的 RM。因为 RM 只做判别,不需要生成,理论上对模型容量的要求比生成模型低,但也要足够大才能准确评估复杂回答。

这里有一个容易混淆的点:RM 输出的分数是绝对分数吗?其实不是,因为没有绝对的标准。在训练时,我们只关心 chosen 和 rejected 的相对差距,RM 只要保证 chosen 的分数比 rejected 高就行。所以 RM 学到的分数分布可能会随着训练漂移,它可能给所有回答都打很低的分,但只要 chosen 和 rejected 的差距是正的,损失就小。这就是 RM 的“不求绝对,只求相对”特性。

第三步:损失函数——让好回答“赢”过坏回答

RM 的训练损失函数非常经典,就是基于成对比较的 logistic 损失。假设对同一个 prompt,rc = RM(chosen) 和 rr = RM(rejected),损失定义为:

loss = -log(σ(r_c - r_r))

其中 σ 是 sigmoid 函数。这个公式的直观含义是:当 rc – rr 越大,σ(rc – rr) 越接近 1,loss 越接近 0;当 rc – rr 很小甚至为负,loss 就会很大。换句话说,RM 的目标就是让 chosen 的分数比 rejected 的分数足够高,这个“足够高”用 sigmoid 平滑地衡量。

我最早看这个公式时,觉得奇怪:为什么不直接用平方差(比如让 rc 趋向 1,rr 趋向 0)?后来才想通,因为在比大小的框架下,标注员只说了“A 优于 B”,并没有说“A 就是 5 分,B 就是 1 分”。如果用绝对分数目标,就会强行引入一个人为设定的分数尺度,而这个尺度是不存在的。所以 logistic 损失只关心顺序,不关心差距的具体数值,恰好符合偏好数据的性质。

训练 RM 时还有一个细节:同一个 prompt 可能会生成多组成对比较,比如 K 个回答可以组成 C(K,2) 个 pair。但 InstructGPT 论文里提到,他们只给每个 prompt 采样 9 个回答,然后让标注员对所有 pair 进行比较,但最终训练时只用了其中一部分以避免过拟合。这种处理也很关键,因为如果让 RM 反复看同一个 prompt 的不同 pair,很容易死记硬背。

奖励模型为什么容易过拟合?

RM 训练时,验证集上的准确率(预测 chosen 分数高于 rejected 的准确率)通常会越来越高,能达到 70% 以上。但这不代表 RM 真的学会了人类偏好,它很可能只是学会了数据中的浅层模式。比如,如果 chosen 回答的平均长度比 rejected 长,RM 可能直接学会“长回答=高分”,而忽略内容质量。事实上,这种长度偏差在 RLHF 中非常常见[3]

更隐蔽的问题是 RM 的分布外泛化。RM 只在 SFT 模型生成的回答上训练,但到了 RL 阶段,语言模型会不断更新,生成的回答分布会逐渐偏离 RM 训练时的分布。RM 在这种新分布上打分可能完全不准,甚至给一些胡言乱语打出高分。这就是 RLHF 中著名的“奖励黑客”现象——模型找到了 RM 打分机制的漏洞,输出高奖励但毫无意义的内容。

我踩过一个坑:刚开始理解 RLHF 时,我以为只要 RM 的准确率够高,对齐就稳了。但后来看到一篇论文分析,即使在 RM 训练集上准确率高达 80%,在 RL 微调后的模型输出上,RM 的偏好准确率可能直接掉到 50% 以下,跟瞎猜差不多。所以 RM 不是一次性训练完就万事大吉,往往需要和 RL 交替迭代,不断补充新数据[4]

一张表对比:人类直接反馈 vs 奖励模型

维度 人类直接反馈(在线) 奖励模型(离线)
响应速度 慢,每次反馈需数秒到数分钟 毫秒级,适合大规模 RL 训练
成本 极高,每个样本都需要人工标注 训练时一次性投入,推理成本极低
一致性 随时间、标注员情绪波动 输出稳定,但固定于训练数据模式
可扩展性 差,无法支持百万级样本 好,可并行打分
泛化能力 强,人类能处理新类型回答 弱,分布外数据打分可能崩坏

所以,RM 本质上是一个用一致性换可扩展性的折中方案。它牺牲了对新情况的灵活判断,换来了训练效率。

关于奖励模型,最常见的三个误解

误解一:奖励模型就是给回答打分

它给的是相对偏好下的单调分数,而不是绝对质量分数。同一个回答,在不同 prompt 下,或者不同时间点,RM 打出的分数没有可比性,只有同一个 prompt 下两个回答的分数差才有意义。

误解二:奖励模型越大越好

理论上更大的 RM 可能更准确,但也会引入更多延迟和过拟合风险。InstructGPT 用了 6B RM,但很多后续工作发现,只要 RM 训练数据质量高,较小的 RM 也能很好工作,而且 RL 训练时更快。

误解三:奖励模型训练完就固定了

实际生产系统中,RM 往往需要定期用新的人类偏好数据更新,或者和策略模型一起迭代训练,因为模型输出分布一直在变。这就是 RLHF 的“在线”版本,更接近实际部署。

奖励模型之后:RL 微调只是开始

有了 RM,下一步就是用 PPO 算法优化语言模型,让模型生成能获得高奖励的回答。但这个过程里,KL 散度惩罚是必不可少的——它强制模型不要偏离初始 SFT 模型太远,防止模型为了追求高奖励而变成只会讨好 RM 的“高分怪”。RLHF 不是让模型完全抛弃预训练知识,而是在安全和有用之间找平衡。

整个 RLHF 流程有点像驯兽:人类标注员(驯兽师)给出一些偏好示例,奖励模型(训练好的狗)学会了某些指令,然后 PPO(强化学习)用奖励模型来引导模型(大象)做动作,但又要用 KL 惩罚(绳子)拉住它,不让它乱跑。奖励模型一旦学歪了,整个驯兽过程就会跑偏。

所以,RLHF 的成败,很大程度取决于奖励模型是否忠实地反映了人类价值观。而做到这一点,远不止技术问题,还涉及数据多样性、标注员培训、持续迭代等工程挑战。理解了这一步,你就知道为什么 ChatGPT 有时会犯傻——可能是因为它背后的 RM 在某个角落还没被人类“教”好。

原创文章,作者:guanweilu,如若转载,请注明出处:https://guanweilu.cn/article/51.html

(0)
上一篇 2026年8月14日 上午12:22
下一篇 2026年8月14日 上午12:24

相关推荐