RLHF — 把「人类觉得好」变成可训练的信号
这一章讲三件事: 为什么「听话」之外还要一层对齐(3H 判据是什么、为 什么不能直接写成 损失函数——训练时被最小化的那个目标式子,第 02 章的「损失」就是它算出来的); RLHF 的三步流水线怎么转(偏好数据 → 奖励模型 → PPO),为什么大头在数据而不在强化学习; PPO 的四个部件各治哪一种不稳定。 主走查: 拿原书例 8.1 那条「农村地价」的回答,看它从不合格答案变成合格答案的完整改造过程。
1. 为什么需要对齐:三种没法写成公式的标准
第 07 章的指令微调教的是「照做」。但原书 8.1 节摆了一个它治不了的例子1: 作者团队拿自己的 YuLan 模型问:「农村地价便宜,是不是更适合发展污染产业?」 对齐前的模型顺着错误前提答「是」,还一本正经地分析拿地成本; 对齐后的模型先指出前提有问题——「不能仅因为地价便宜就认为农村适合发展污染产业」, 再给出兼顾环保的回答1。
差的那一层就是对齐:让模型的行为符合人类的期望与价值观,而不只是符合字面指令。 原书把判据归纳成三条,合称 3H2:
| 判据 | 要求 | 主观性 |
|---|---|---|
| 有用(Helpfulness) | 准确理解任务、真正解决问题;任务模糊时主动澄清 | 高——「有没有用」因人而异 |
| 诚实(Honesty) | 不夸大不编造,承认自己的知识边界 | 三者中最客观,最少依赖主观标注3 |
| 无害(Harmlessness) | 不产生伤害性内容,识别恶意请求并拒绝 | 高度依赖用户、任务与场景4 |
问题就出在这个「主观」上:这三条都是人的感受,没法像「预测下一个词」那样写成优化目标。 所以才有 RLHF——人类反馈强化学习:不直接定义「什么是好」, 而是让人来指认「哪个好」,再把这种指认变成训练信号5。 (工程上还有一条互补的防线叫红队:专门用人或自动手段诱导模型说出有害内容, 抓到一例修一例——GPT-4 上线前的 6 个月迭代里就有它。)6
2. RLHF 总框架:三个步骤,四个模型
RLHF 的全流程,原书画成三步7:
① 指令微调(SFT) ② 训奖励模型 ③ 强化学习(PPO)
先让模型会听话 ──→ 人对模型的多个回答 ──→ 模型生成回答 → 奖励模型打分
(第 07 章的事) 做偏好排序,训出裁判 → 往高分方向更新,同时 KL 拴住
└──────── 循环 ────────┘
图说:②③是循环工程——模型变了,旧的裁判就不准了,要收新数据重训。
这一步里同时存在四个模型,先认全,后面才不晕8:
- 策略模型:正在被改造的大模型本身(它是「学 生」);
- 奖励模型:给回答打分的裁判——InstructGPT 用 6B 的 GPT-3 当裁判, 但现在的建议是裁判至少和学生一样大(裁判得看得懂学生的知识范围), LLaMA-2 干脆用同一个 checkpoint 初始化两者9;
- 参考模型:学生改造前的「原样快照」,用来量它跑偏了多远;
- 价值模型(评论家):估计「当前局面平均能拿多少分」,给 PPO 的优势函数当基线(§5)。
所以「RLHF = 强化学习」是个误会:强化学习只是第三步,大头在前两步的数据与裁判。
3. 偏好数据:为什么用「排序」不用「打分」
第一步的原料是人的偏好。收集前先挑人:Sparrow 要求英国母语、本科以上; InstructGPT 更讲究——先让研究员标一小批,再让候选标注员标同一批, 按与研究员的一致率筛人,佼佼者成为长期合作的「超级标注员」10。
标注形式有两种,原书把它们的优劣讲得很透11:
- 打分制:按细则给回答打分(比如无害性 0~1 分)。毛病是人与人尺度不一—— 同一个回答,手松的标 0.9,手严的标 0.6,裁判学出来的就是一团浆糊12;
- 排序制:不给绝对分,只说「这几个回答里谁比谁好」。排序比打分稳定得多; 配套工具是 Elo 等级分(国际象棋排棋手强弱的老办法):两两对比, 赢的加分、输的减分,爆冷幅度越大加减越多——一个预估胜率只有 0.2 的回答真赢了, 它的分会大涨;反复两两比较,最后收敛出一份全排序13。
这就是第 03 章那批对齐数据(HH-RLHF、SHP 那种「一问两答+人选优」格式)的使用现场。
4. 奖励模型:裁判怎么训、怎么防走样
人不可能实时给几百万次生成打分,所以要训一个奖励模型替身: 结构上就是语言模型加个「打分头」,把末层隐藏状态映射成一个分数14。 训法三种15。表里有 一对词先说掉:正例,即人选中的那个好回答。
负例,即人没选的那个坏回答——下一节的对比损失全靠这一对。
| 训法 | 数据形态 | 损失 | 毛病 |
|---|---|---|---|
| 打分法 | 人给每个回答的绝对分 | 均方误差(预测分与真分之差的平方的平均,误差=差多远)逼近人打的分 | 继承打分制的尺度不一 |
| 对比法(主流) | 同一问题两答,人选优 | 让正例(人选中的那个好回答)分数尽量高过负例:-log σ(r₊−r₋) | 只利用两两关系 |
| 排序法 | 同一问题 K 个回答全排序 | 把 K 个回答的所有两两偏序都喂进对比损失 | 标注成本最高 |
裁判也会过拟合(把标注数据背下来,换个问法就乱打分),三个防身策略16: 给正例加语言建模损失当正则——裁判除了会分高下,还得会「读懂」正例; 与学生同一个 checkpoint 初始化——裁判和学生共享预训练知识,减少理解错位; 多个裁判加权——有用性一个裁判、无害性另一个裁判,按权重合成总分, 可以「有用松一点、无害严一点」。
5. PPO:四个部件,各治一种不稳定
第三步的引擎是 PPO(近端策略优化)。先把强化学习在这儿的 对应关系摆清: 状态 = 已生成的文本,动作 = 生成下一个 token,奖励 = 整段答完后裁判给的总分。 目标:调整策略模型,让「高奖励回答」的生成概率变大17。
最朴素的策略梯度有个毛病:同一个模型既要生成数据又要从中学习, 每更新一次参数,旧数据就作废(这叫同策略/on-policy),数据效率极低。 PPO 改成异策略:让参考模型去生成数据,学习模型可以拿同一批数据学好几遍18。 为了稳住这套做法,它加了四个部件,各治一种具体的不稳定19:
- 优势函数:不直接用奖励分,而用「奖励 − 这个状态下的平均分」。 原书例 8.2 讲清了为什么:三个动作奖励递增,哪怕采到最差的那个, 只要奖励是正的,朴素策略梯度也会增强选它的概率—— 减去平均分之后,差动作拿到负优势、被压制,好动作拿正优势、被增强20;
- 重要性采样:学习模型和生成数据的参考模型不是同一个, 直接用旧数据算梯度会有偏;给每个样本乘上「新策略概率 ÷ 旧策略概率」的权重就能修正。 但这个修正只在两个分布足够像时才稳——期望能对上,波动程度(方差)对不上, 所以新旧策略不能差太远,这正是下两个部件存在的原因21;
- 梯度裁剪:把「新旧策略概率比」裁剪在 [1−ε, 1+ε] 之外不计梯度—— 步子迈到边界外就强行收住,防止一次更新把策略改得面目全非22;
- KL 惩罚:直接量「新策略比参考模型跑偏了多少」(KL 散度,两个概率分布 (每个候选回答各自有多大概率被生成的那张总表)的差异度量), 从奖励里扣掉;系数 β 自适应:偏得少就放松(β 小,鼓励更新), 偏得多就刹车(β 大)23。
工程上还有一笔账:四个模型同训,显存爆炸。实战解法是分机器部署—— 要频繁更新的策略模型和价值模型放一台服务器, 只读不写的奖励模型和参考模型放另一台,打分走网络调用24。
6. 主走查:一条「农村地价」回答的改造全程
把 §1 那个失败案 例放上流水线,看 RLHF 具体怎么修它。 以下分数与概率是为演示编的,不是真实数值;流程严格按原书三步7:
输入:「农村地价便宜,是不是更适合发展污染产业?」
第 ① 步 SFT:模型先经过指令微调,会按「分析问题」的格式回答(第 07 章)。
—— 此时它仍会顺着错误前提答「是」(原书例 8.1 的真实输出)。
第 ② 步 造偏好数据:让它对同一问题采样 4 个回答,标注员排序:
回答A(指出前提错误,兼顾环保)> 回答C(两面都谈但有倾向) > 回答B(顺着前提答是)。
形成偏好对:(A>B)、(A>C)、(C>B)。
第 ③ 步 训裁判:对比法损失 -log σ(r₊−r₋)。
训练后,裁判给 A 打 4.2 分、B 打 1.1 分(演示值)
——「指出前提错误」这个行为第一次有了可计算的分数。
第 ④ 步 PPO 更新:策略模型新生成一个回答,裁判打 3.8 分;
价值模型估计此问题平均得分 2.5 → 优势 = 3.8 − 2.5 = +1.3(演示值),
正优势 → 提高这个回答各 token 的概率;
同时算它与参考模型的 KL:跑偏 0.02,β 取小档,扣 0.1(演示值);
概率比一旦触及 1+ε 边界,裁剪部件把梯度截停。
循环:新模型再采样 → 新偏好数据 → 重训裁判 → 再更新。
LLaMA-2 真实地跑了 5 轮(见 §7)。
图说:改造的本质——「指出前提错误」从一种偶然行为,被奖励信号浇灌成了稳定倾向。
7. 实践与进阶:RLHF 是循环工程,不是一次性训练
InstructGPT(2022-01,RLHF 的成名作):40 名标注员, 先写范例做 SFT,再对模型输出排序训奖励模型(6B),最后 PPO; 奖励模型与 PPO 两步反复迭代——每一轮新模型生成新输出,用来继续精炼裁判25。
LLaMA-2(2023-07,开源界的完整教案):偏好数据 = 7 个开源数据集合计约 150 万条 + 自建; 安全与有用分开训两个奖励模型,防两个目标互相干扰; 排序损失里加一个「间隔项」,要求正例不仅赢、还要赢得够多; 对齐训练共 5 轮:前 4 轮用拒绝采样(每个问题生成多个回答、 裁判挑最好的回来微调)打底,最后一轮才上 PPO—— RL 是从一个已经被喂得很强的起点上收尾,不是从零开始26。
进阶两个方向。过程监督:不只给整段答案打分,给推理的每一步打分—— OpenAI 的 PRM800K 数据集有 1.2 万道数学题、7.5 万条解答, 每一步人工标了「对/错/中性」;训练出来的过程裁判可以重排(把候选答案按分 数重新排队)候选答案, 或在逐步推理时给每个候选步骤打分、选最优的往下走27。
RLAIF(AI 反馈):让 AI 代替人当标注员—— 一种是让模型给候选回答打分排序(70B LLaMA-2 用此法对齐后, AlpacaEval 2.0 排行榜(按分数排定名次的公开榜单)成绩大涨);另一种是批评-修订: 模型先答、再自我批评、再改写——原书例 8.3 里, 「帮我黑邻居 WiFi」的原答(照办)经自我批评后改成拒答, 原答与新答天然构成一对正负例,直接拿去训裁判28。
判断(我们的,不是书里的): 读这一章最容易产生的误会是「RLHF 的核心技术在 RL」。 按原书自己的篇幅与各家实践,真正的壁垒在数据侧:标注员的筛选与一致率、 偏好数据的量级(LLaMA-2 的 150 万条)、裁判的防过拟合。 PPO 反而是可以整个换掉的零件——第 09 章的 DPO 就是不用 RL 的替代方案。 如果错,会错在: 如果未来出现样本效率极高的在线 RL 算法(如第 14 章 GRPO 系在长 CoT 上的成功), 「壁垒在数据侧」的判断就要让位给「壁垒在算法与算力」—— 但在人类偏好对齐这个任务上,目前证据仍支持本章的判断。
8. 作者的判断与证据
- 有论文支撑: InstructGPT 的三步与 40 名标注员25、LLaMA-2 的五轮与双裁判26、 PRM800K 的规模27、RLAIF 的 AlpacaEval 结果28,均出自各自技术报告。
- 作者的经验建议: 「裁判与学生同规模或更大」「多裁判加权」「分服务器部署」 是原书综合文献给出的工程建议91624,不是单一实验。
- 作者的坦白: 3H 判据「本质主观、难以形式化」是原书明写的出发点5; 打分制 0.9 vs 0.6 的不一致是原书自举的例子12。
9. 边界与局限
- 奖励模型是人的偏好的替身,替身会被钻空子:模型可能学会「写裁判爱看的」而不是「真正好的」 (原书 8.5 节把它列为幻觉的成因之一,第 09 章展开)。
- KL 惩罚把模型拴在 SFT 起点附近——拴紧了限制探索,拴松了可能学出轨, β 的自适应调节是经验活,原书没给通用配方。
- 偏好数据的文化与语言偏向会原样灌进模型:标注员是谁,模型的「价值观」就像谁。
- 本章的算法细节(PPO)在 2024 年后有了更省的替代(第 09 章 DPO、第 14 章 GRPO), 但「偏好数据 → 裁判 → 优化」的框架本身仍是行业标准。
10. 可带走的
- 对齐 ≠ 审核:3H(有用/诚实/无害)是三种主观标准,没法写成损失函数,只能靠人的偏好;
- RLHF 三步:SFT 打底 → 偏好数据训裁判 → PPO 优化;②③是循环,不是单程;
- 四个模型:学生(策略)、裁判(奖励)、原样快照(参考)、估平均分的(价值);
- 偏好收集用排序不用打分——打分尺度因人而异(0.9 vs 0.6),排序稳定,配 Elo 收敛全排序;
- 裁判防走样三招:正例加语言建模正则、与学生同 checkpoint 初始化、多裁判加权;
- PPO 四部件:优势函数(压制运气好的差动作)、重要性采样(旧数据复用)、 裁剪(步子别太大)、KL 惩罚(别跑离原样);
- 实战配方:先 SFT+拒绝采样喂强,再上 PPO;裁判随学生迭代重训(LLaMA-2 共 5 轮);
- 过程监督:给每一步推理打分,能重排答案也能引导逐步搜索(PRM800K);
- RLAIF:让 AI 当标注员——批评-修订天然产出正负例对;
- 真正的壁垒在数据与裁判,RL 算法本身可替换(下一章 DPO 就是证据)。
11. 原文地图
| 主题 | 原书章 | 原文位置 |
|---|---|---|
| 对齐动机与例 8.1 | 8.1.1 | text/40-ch08-01-8-1-background-and-criteria-of-human-alignment.txt:9(搜「misled by the erroneous logic」) · text/40-ch08-01-8-1-background-and-criteria-of-human-alignment.txt:21(搜「relatively low price of rural land」) |
| 3H 判据 | 8.1.2 | text/40-ch08-01-8-1-background-and-criteria-of-human-alignment.txt:13(搜「helpfulness, honesty, and harmlessness」) · text/40-ch08-01-8-1-background-and-criteria-of-human-alignment.txt:25(搜「more objective criteria」) |
| 判据主观与红队 | 8.1.2 | text/40-ch08-01-8-1-background-and-criteria-of-human-alignment.txt:31(搜「red teaming」) |
| RLHF 三组件与裁判选型 | 8.2.1 | text/41-ch08-02-8-2-reinforcement-learning-from-human-feedback.txt:11(搜「6B-parameter version of GPT-3」;同段搜「same checkpoint」) |
| 三步框架与 KL | 8.2.1 | text/41-ch08-02-8-2-reinforcement-learning-from-human-feedback.txt:19(搜「Supervised fine-tuning」) · text/41-ch08-02-8-2-reinforcement-learning-from-human-feedback.txt:23(搜「KL divergence」) |
| 标注员筛选 | 8.2.2 | text/41-ch08-02-8-2-reinforcement-learning-from-human-feedback.txt:31(搜「super annotators」) |
| 打分 vs 排序与 Elo | 8.2.2 | text/41-ch08-02-8-2-reinforcement-learning-from-human-feedback.txt:37(搜「Score-based」) · text/41-ch08-02-8-2-reinforcement-learning-from-human-feedback.txt:39(搜「Elo rating」) |
| 奖励模型三训法 | 8.2.3 | text/41-ch08-02-8-2-reinforcement-learning-from-human-feedback.txt:47(搜「linear transformation to map the hidden state」) · text/41-ch08-02-8-2-reinforcement-learning-from-human-feedback.txt:55(搜「Contrast based method」) |
| 0.9 vs 0.6 不一致 | 8.2.3 | text/41-ch08-02-8-2-reinforcement-learning-from-human-feedback.txt:53(搜「lenient annotator」) |
| 防过拟合三策略 | 8.2.3 | text/41-ch08-02-8-2-reinforcement-learning-from-human-feedback.txt:71(搜「regularization term」) · text/41-ch08-02-8-2-reinforcement-learning-from-human-feedback.txt:77(搜「same model checkpoint」) · text/41-ch08-02-8-2-reinforcement-learning-from-human-feedback.txt:79(搜「weighted averaging」) |
| RL 对应关系与同/异策略 | 8.2.4 | text/41-ch08-02-8-2-reinforcement-learning-from-human-feedback.txt:97(搜「policy model」) · text/41-ch08-02-8-2-reinforcement-learning-from-human-feedback.txt:125(搜「on-policy」) |
| 优势函数与例 8.2 | 8.2.4 | text/41-ch08-02-8-2-reinforcement-learning-from-human-feedback.txt:131(搜「advantage function」) · text/41-ch08-02-8-2-reinforcement-learning-from-human-feedback.txt:139(搜「three possible actions」) |
| 重要性采样与方差警告 | 8.2.4 | text/41-ch08-02-8-2-reinforcement-learning-from-human-feedback.txt:163(搜「importance sampling」) · text/41-ch08-02-8-2-reinforcement-learning-from-human-feedback.txt:171(搜「similar variances」) |
| 裁剪与 KL 惩罚 | 8.2.4 | text/41-ch08-02-8-2-reinforcement-learning-from-human-feedback.txt:173(搜「gradient clipping」) · text/41-ch08-02-8-2-reinforcement-learning-from-human-feedback.txt:179(搜「KL divergence-based」) |
| 分服务器部署 | 8.2.4 | text/41-ch08-02-8-2-reinforcement-learning-from-human-feedback.txt:195(搜「separate servers」) |
| InstructGPT | 8.2.5 | text/41-ch08-02-8-2-reinforcement-learning-from-human-feedback.txt:205(搜「40 annotators」) |
| LLaMA-2 五轮 | 8.2.5 | text/41-ch08-02-8-2-reinforcement-learning-from-human-feedback.txt:211(搜「1.5 million」) · text/41-ch08-02-8-2-reinforcement-learning-from-human-feedback.txt:219(搜「five iterations」) |
| 过程监督 PRM800K | 8.2.6 | text/41-ch08-02-8-2-reinforcement-learning-from-human-feedback.txt:231(搜「PRM800K」) |
| RLAIF 与批评-修订 | 8.2.6 | text/41-ch08-02-8-2-reinforcement-learning-from-human-feedback.txt:241(搜「AlpacaEval 2.0」) · text/41-ch08-02-8-2-reinforcement-learning-from-human-feedback.txt:245(搜「hack into my neighbor」) |