RLHF :深入解析奖励模型 (Reward Model)
从 ChatGPT 到 Claude,再到各种开源大模型,它们惊艳表现的背后,除了不断增长的参数规模,还有一个至关重要的技术——基于人类反馈的强化学习 (RLHF) 。
RLHF 是一套复杂的流程,它旨在让大语言模型(LLM)的输出更符合人类的偏好、价值观,使其变得“有用且无害”。而在这套流程中,奖励模型 (Reward Model, RM) 扮演着“人类偏好代理人”的关键角色。它就像一个指南针,为强化学习阶段的 LLM 指明了优化的方向。
本文将深入探讨奖励模型 (RM):从它在 RLHF 中的位置开始,解析其模型结构,并详细举例说明其核心训练算法——Pairwise Ranking Loss。
一、 RLHF 的“三步走”战略
要理解 RM,首先要明白它在整个 RLHF 流程中的位置。RLHF 通常分为三个阶段:
-
阶段 1: SFT (监督微调)
- 目标: 让预训练的 LLM 学会模仿人类的回答方式。
- 做法: 收集少量高质量的“标注者示范数据”((prompt, response) 对),在预训练模型的基础上进行监督微调(Supervised Fine-Tuning)。
- 产出: SFT 模型。这个模型已经能按指令回答问题,但其回答的质量、安全性和有用性还不稳定。
-
阶段 2: 训练奖励模型 (RM)
- 目标: 训练一个模型,使其能够模拟人类的偏好,为任何 (prompt, response) 对打分。
- 做法: 拿一个 SFT 模型,对同一个 prompt 生成 个不同的回答。人类标注者对这 个回答进行排序(从最好到最差)。RM 的任务不是预测一个绝对分数,而是学习这个“排序”。
- 产出: RM 模型。这是我们本文的主角。
-
阶段 3: PPO (强化学习)
- 目标: 使用 RM 作为“奖励函数”,通过强化学习(如 PPO 算法)来优化 SFT 模型,使其生成的回答能获得更高的 RM 分数。
- 做法: SFT 模型(此时称为策略模型)生成回答,RM 为这个回答打分(奖励)。PPO 算法根据这个奖励来更新策略模型的参数,使其更倾向于生成高分回答。
- 产出: 最终的、经过“对齐”的 RLHF 模型。
二、 奖励模型 (RM) 的“庐山真面目”:模型结构
一个常见的误解是:奖励模型是一个全新的、神秘的模型。
事实是:奖励模型 (RM) 通常与 SFT 模型使用相同(或相近)的 Transformer 架构。 它们的主要区别不在于“骨架”,而在于“头部”——即模型的最后一层如何输出结果。
1. 输入:Prompt 和 Response 的拼接
RM 的任务是判断一个 response 对于一个 prompt 来说有多好。因此,它需要同时接收 和 作为输入。
-
输入序列: RM 会将 prompt 和 response 拼接成一个单独的文本序列,并用特殊的分隔符(如
[SEP])隔开,最后加上一个结束符(如[EOS])。[Prompt 文本] [SEP] [Response 文本] [EOS]
2. 模型主体:Transformer 编码器
这个拼接后的序列被转换成 Token ID,然后输入到 Transformer 模型中。模型通过自注意力机制和前馈网络,充分理解 prompt 和 response 之间的语义关联。
3. 输出:从“预测词”到“预测分”
这是 RM 与 SFT/LLM 最大的不同:
-
SFT/LLM 的头部 (LM Head):
- 目标是预测下一个词。
- 它的头部是一个巨大的线性层,将最后一个 Token 的隐藏状态(Hidden State)映射到整个词汇表(例如 50000 维)的 Logits,用于计算下一个词的概率。
-
RM 的头部 (Regression Head):
-
目标是输出一个标量(一个数字)来代表“质量得分”。
-
它会进行池化 (Pooling) :只取最后一个 Token(即
[EOS])的隐藏状态 (例如 4096 维),因为这个向量被认为编码了整个序列的语义。 -
然后,它使用一个回归头(通常是一个简单的线性层)将这个高维向量 映射为一个标量。
-
这个最终输出的标量 ,就是 RM 对 对的奖励分数。
三、 RM 如何训练?Pairwise Ranking Loss 详解
我们已经知道,RM 的训练数据是人类的“排序”,而不是“打分”。因为让人类在两个回答中选一个更好的(“我更喜欢 A 而不是 B”)远比给一个回答打绝对分数(“这个回答是 7.5 分”)要容易和准确。
RM 的训练目标是:模型给 (赢家)的分数 应该高于 (输家)的分数。
1. 损失函数公式
为了实现这个目标,RM 使用了 Pairwise Ranking Loss(成对排序损失),其公式如下:
我们来拆解这个公式:
- :我们要最小化的总损失, 是 RM 的所有参数。
- :从 个排序好的响应中,可以抽出的“赢家-输家”配对总数。
- :一个数据点,包含 Prompt 、更受偏好的响应 (winner) 和较差的响应 (loser)。
- 和 :RM 对赢家和输家(在 的上下文中)的打分。
- :核心部分。我们希望这个差值尽可能大(为正)。
- :Sigmoid 函数 ()。它将(-∞, +∞)的差值压缩到 (0, 1) 之间,可以被理解为“RM 认为 优于 的概率”。
- :对数似然。我们希望 趋近于 1(即 RM 100% 确定 ),而 。
- :取负号。因为我们要最大化对数似然 (使其接近 0),所以我们要最小化它的相反数(使其从一个较大的负值接近 0)。
2. Pairwise Ranking Loss 计算举例
假设我们有 1 个 Prompt ,收集了 个响应,人类排序为 。
步骤 1:找出所有偏好对
总共有 个偏好对 :
(), (), (), (), (), ()
步骤 2:获取当前 RM 的打分
我们将这 4 个 (prompt, response) 对输入 RM,假设(在一个训练批次中)模型 给出了以下分数:
- <-- 注意!RM 搞错了!
分析: 人类偏好 ,但 RM 却给出了 的分数。我们期望损失函数能够“惩罚”这个错误。
步骤 3:计算每个偏好对的 Loss
我们计算 :
| 偏好对 (w, l) | 对应的人类偏好 | RM 分数 rw,rl | 差值 (rw−rl) | σ(差值) (概率) | log(σ) (单对损失) |
|---|---|---|---|---|---|
| () | (2.5, 1.9) | ||||
| () | (2.5, 2.1) | ||||
| () | (2.5, -1.0) | ||||
| () | (1.9, 2.1) | ||||
| () | (1.9, -1.0) | ||||
| () | (2.1, -1.0) |
观察:
- 对于 () 这一对,由于 RM 搞错了,差值为负(-0.2)。
- ,这个概率小于 0.5,代表 RM 认为 (即 ) 赢的概率更高。
- ,这是一个很大的负数,因此它贡献了最大的“惩罚”(Loss)。
- 对于 () 这种 RM 预测正确的对,差值很大 (3.5), 接近 0,贡献的 Loss 很小。
步骤 4:计算最终的 Loss
-
求和 (Sum):
-
取平均 (Divide by 6):
-
取负 (Negate):
这个 就是这个 batch 的最终损失值。在反向传播时,这个损失会促使模型参数 进行更新,目标是拉高 的分数并压低 的分数,使 的差值变大,直到 Loss 趋近于 0。
总结
奖励模型 (RM) 是 RLHF 流程中承上启下的关键。它通过一个巧妙的 Pairwise Ranking Loss,将人类模糊、相对的“偏好排序”数据,转化为了一个可以被优化的、输出标量分数的神经网络。
这个 RM 的质量,直接决定了 PPO 阶段强化学习的天花板。一个能准确理解人类偏好的 RM,是训练出“有用且无害”的 AI 助手的真正指南。