让模型把一封长邮件总结成三句话,可以有三种教法:给它看一份好摘要;让它比较两份摘要;让它自己写,再根据反馈修改。这大致对应经典 RLHF 的三个阶段。

下面的图可以逐步看,也可以直接往下读。这一页讲的是常见的 PPO-style 流程,其他后训练(post-training)方法不一定保留所有阶段。

图解 RLHF 一步一步:三个阶段,四个模型

这张交互图需要启用 JavaScript。

先示范,再比较,最后自己试

SFT:先看别人怎么做。 训练数据里是一封邮件和一份合适的三句摘要,模型学习在这样的输入下生成那样的输出。这个起点越能给出有用回答,后续越容易采到值得强化的样本;如果连偶尔成功都很难,RL 往往也会缺少信号。

奖励(reward)模型:学会比较回答。 接下来给同一封邮件配两份摘要:一份保留了截止日期,另一份读着流畅却漏了这个信息。标注者选前者。收集这样的比较后,训练一个模型去预测哪份更受偏好,而不是要求人给每句话定一个绝对分数。

RL:让模型生成新的回答。 Actor 自己写摘要,奖励模型给分,再据此更新策略。这里多了一次主动尝试:不只是模仿已有摘要,也会评价当前模型新写出来的摘要。

奖励模型怎样从“前者更好”学到分数?

常见做法是 Bradley–Terry 偏好模型。令 $y_w$ 为被选中的回答、$y_l$ 为另一份,训练损失为:

$$ \mathcal L(\phi)=-\mathbb E_{(x,y_w,y_l)}\log\sigma\big(r_\phi(x,y_w)-r_\phi(x,y_l)\big). $$

它希望被选中的回答分数更高。直接进入损失的是分差:两份答案各加 10 分,训练目标不变。因此单个分数不是固定单位的“满意度”;跨问题、领域或版本比较时,还要检查尺度和校准(calibration)。

第三阶段,谁在做什么?

摘要由 Actor 写。Reward Model 评价写出来的结果;Critic 估计从某个前缀接着写,通常还能拿多少回报;Reference 保留原来的参照行为。

模型 常见起点 这一阶段是否更新 作用
Actor SFT 模型 是 生成回答,也是最终要改进的模型
Critic 预训练(pre-training)骨干加 value head,也可从奖励模型初始化 是 估计状态价值,帮助构造 advantage
Reward Model 上一阶段训练的模型 通常冻结 给完整回答打分
Reference SFT 模型的副本 通常冻结 提供 KL 的参照

在这个设置下,主要更新 Actor 和 Critic。Actor 和 Reference 可以从相同权重出发,之后 Actor 继续训练,Reference 留在原处。

这张表列的是角色,不是显存预算。共享骨干、缓存、分片(sharding)和卸载会改变实际需要放多少权重。流程出处可读 InstructGPT;几个角色还没分清,可以继续看 Reference 与 Critic。

本页术语 5
后训练 post-training
预训练之后为特定任务和行为做的所有训练
奖励 reward
RL 里指导策略更新的标量信号
校准 calibration
模型给出的置信度是否等于真实正确率
预训练 pre-training
先用大量数据学习通用表示和能力,再适配具体任务
分片 sharding
把参数、梯度或优化器状态切开分给多张卡,每张只存其中一份