1. 奖励模型基础:什么是奖励模型、RLHF中的角色、奖励模型与策略模型的关系

大家好,欢迎来到这门课的第一章。咱们开门见山,先聊聊奖励模型到底是什么。

说白了,奖励模型就是一个打分器。你给它一段文本,它告诉你这段文本有多「好」。这个「好」的标准,不是我们程序员拍脑袋定的,而是从人类偏好里学出来的。

我刚开始接触这个领域时,总觉得奖励模型不就是个分类器吗?后来踩了不少坑才明白,它比分类器复杂得多。分类器输出的是离散标签,而奖励模型输出的是一个连续分数。这个分数要能反映出「A比B好多少」这种细微差别。

1.1 奖励模型在RLHF中的角色

RLHF全称是Reinforcement Learning from Human Feedback,也就是基于人类反馈的强化学习。整个流程里,奖励模型扮演着一个关键角色——它充当了人类的「代理人」。

你想想看,如果每次模型生成一个回答,都要找真人来打分,那成本得多高?训练一个模型可能要几百万次迭代,总不能每次都拉一群标注员等着吧。

奖励模型就是来解决这个问题的。它先学习人类的偏好,然后代替人类去打分。这样,策略模型就可以在奖励模型的指导下,快速迭代优化。

核心角色总结:

  • 人类偏好的编码器:把模糊的人类判断,转化为具体的数值分数
  • 训练信号的提供者:为策略模型提供梯度更新的方向
  • 效率放大器:一次训练,无限次使用,大幅降低人工成本

嗯,这里要注意一点。奖励模型不是万能的。它学到的只是人类偏好的近似,不是人类本身。我在项目中遇到过,奖励模型在某些边缘场景下会给出完全反直觉的分数。所以,永远不要盲目相信奖励模型的输出。

1.2 奖励模型与策略模型的关系

这两个模型的关系,我习惯用一个比喻来解释:老师和学生

策略模型是学生,它负责生成回答。奖励模型是老师,它负责批改作业。学生每写一次作业,老师就给个分数。学生根据分数调整自己的写作方式,争取下次拿更高分。

但这里有个微妙的地方——这个老师不是全知全能的。它只是根据过往经验(人类标注数据)来判断好坏。所以,学生有可能找到老师的「漏洞」,用一些取巧的方式拿到高分,但实际回答质量并不高。

这就是所谓的奖励黑客(Reward Hacking)问题。我早期做项目时就吃过这个亏,策略模型学会了生成一些看似华丽但内容空洞的长句,因为奖励模型对长句有偏好。后来我们花了很大力气去修正这个偏差。

从技术角度看,两者的关系可以用下面这张图来展示:

奖励模型与策略模型的交互流程 人类标注偏好数据 奖励模型(Reward Model) 学习人类偏好,输出分数 奖励分数(反馈信号) 策略模型(Policy Model) 根据奖励信号优化生成策略 生成文本 / 回答 迭代优化循环

从这张图你能看到,整个流程是一个闭环。人类先标注数据,训练奖励模型。然后奖励模型给策略模型的输出打分,策略模型根据分数调整自己的参数。生成更好的文本后,再送给奖励模型打分,如此循环。

1.3 奖励模型的训练数据

奖励模型不是凭空训练的。它需要大量的成对比较数据。什么意思呢?就是给标注员看两个回答,让他选哪个更好。

举个例子:

问题:如何提高编程效率?

回答A:多练习,多看书,多写代码。
回答B:建议采用番茄工作法,每25分钟专注编码,休息5分钟。
同时使用代码片段管理工具,减少重复劳动。

标注员选择:B > A(B比A好)

我个人习惯,在收集这类数据时,一定要保证标注员之间有足够的一致性。我曾经遇到过,同一个问题,不同标注员给出的偏好完全相反。后来我们加了标注指南和校准环节,情况才好转。

实战小技巧:

收集比较数据时,尽量让两个回答的质量差距明显一些。差距太小的对比对,标注员很难判断,数据噪声会很大。我一般会要求标注员在「明显更好」时才做选择,如果觉得差不多,就标记为「持平」。

1.4 奖励模型的输出形式

奖励模型的输出通常是一个标量分数。但具体怎么用这个分数,不同项目有不同做法。

输出形式 说明 常见场景
单值分数 一个浮点数,如 2.35 PPO 训练中最常用
对数概率 对偏好概率取对数 Bradley-Terry 模型
分段分数 多个维度的分数,如安全性、有用性 需要细粒度控制的场景

你可能会问,为什么不用分类模型?因为分类模型丢失了排序信息。奖励模型的核心能力是比较,而不是分类。它要知道A比B好多少,这个「多少」对策略模型的梯度更新至关重要。

注意:

奖励模型的分数范围没有固定标准。有的项目输出范围是 [-1, 1],有的是 [0, 5],还有的是无界实数。我个人建议,尽量让分数范围稳定在一个区间内,比如 [-5, 5]。分数范围波动太大,会导致策略模型训练不稳定。我在一个项目中就吃过这个亏,奖励分数从 -10 到 +50 乱跳,PPO 训练直接崩了。

1.5 为什么需要奖励模型?

直接上强化学习不行吗?为什么非要中间插一个奖励模型?

原因很简单:强化学习需要密集的奖励信号。但在文本生成任务中,只有最终生成的完整回答才能被人类评价。中间每个 token 生成得好不好,人类没法实时打分。

奖励模型解决了这个「稀疏奖励」问题。它可以在每个时间步都给出一个分数,让策略模型知道「这一步走对了还是走偏了」。

我记得刚开始做 RLHF 时,试过只用人类反馈做强化学习。结果训练速度慢得像蜗牛爬,而且人类标注员累得够呛。后来换成奖励模型,训练效率提升了至少 10 倍。

好了,这一章的内容就到这里。奖励模型是整个 RLHF 流程的基石,理解它的本质和角色,后面学起来会轻松很多。