橙研所· 方法论 × Agent 拆解
AI 科普 · 逐章拆解

AI圣经15 《InstructGPT / RLHF:怎么把复读机,调教成听话的助手》

上一篇 MoE 把「养得起」的参数账解了绑——到这里,模型已经又大、又快、又便宜。可它此刻还只是个博学的复读机:你问它问题,它未必答你想要的;让它写东西,它可能跑题、胡编、甚至说脏话。毛病出在它的出厂目标——预测网页上的下一个词,跟「有用、真实、无害地听你的话」根本是两回事。这一篇讲 OpenAI 怎么用一套叫 RLHF(人类反馈强化学习)的三步法,把 GPT-3 调教成听话的助手 InstructGPT。最反直觉的结论:1.3B 的 InstructGPT,人评里居然打赢了 100 倍大的 175B GPT-3。而这套方法,9 个月后有个更响的名字——ChatGPT

AI圣经15 InstructGPT RLHF 封面
📚 AI 圣经 · 系列导览这是「AI 圣经」系列第 15 篇。我会带你逐篇精读撑起今天所有大模型的 21 篇经典论文,分 5 个阶段层层递进(本篇已高亮): 本篇论文:《Training language models to follow instructions with human feedback》· Ouyang et al. 2022(OpenAI)。可搜「InstructGPT paper」或访问 arXiv 编号 2203.02155 下载。其余各篇论文地址,随当期文章给出。

太长不读GPT-3 证明了模型够大就「不学也会」,但也留下一个尴尬:它只会顺着你的话往下续写,不会真的你的指令——因为它的训练目标只是「预测下一个词」,跟「按用户意图有用、真实、无害地回答」不是一回事。这叫没对齐(misaligned)。InstructGPT 给出一套三步解法,合称 RLHF(人类反馈强化学习):第一步 SFT,请 40 个真人写出「好答案」示范,监督微调 GPT-3;第二步 RM,让模型对同一个问题生成好几个答案、请人排序,训练一个「奖励模型」学会人的口味打分;第三步 PPO,把奖励模型当裁判,用强化学习让模型不断刷高分。成绩单惊人:人评里,1.3B 的 InstructGPT 打赢了 100 倍大的 175B GPT-3;真实性翻倍,编造率从 41% 砍到 21%,脏话少 25%。更妙的是那笔账——对齐一个 175B 模型只花了造它的约 1.6% 算力。「改行为」比「堆规模」便宜得多、也有效得多。这套方法发表 9 个月后,OpenAI 用几乎同一套流程做出了 ChatGPT

上篇回顾 · 先答一题上一篇讲混合专家(MoE),先别往下翻,试着答:MoE 凭什么能做到「参数堆几十倍,每个词的算力却几乎不变」?……答案:它把一层稠密前馈网络换成一群「专家」,靠一个门控网络给每个词只挑一个专家来算——参数随专家数暴涨,但单个词经过的计算量几乎不变,于是参数量和计算量被「解绑」了。到这里,前三个阶段把模型的大、快、省都解决了。但一个又大又便宜的模型,未必是个好用的模型。今天这篇,补上最后、也最关键的一块:让它听话

01复读机的病:模型越大,不等于越听话

InstructGPT instructgpt-p02.png
论文原文 · 第 2 页顶部:Figure 1,全文的头条结论。横轴是模型大小(1.3B → 175B),纵轴是「被人类偏好的胜率」(跟 175B SFT 模型两两对比)。五条线由低到高:原始 GPT-3 最差,加了精心设计的少样本提示(GPT prompted)好一些,监督微调(SFT)再好,最上面两条是 RLHF 训出来的 PPO 与 PPO-ptx(也就是 InstructGPT)。最惊人的一点:最小的 1.3B InstructGPT(最上那条线的左端),胜率已经超过了 175B 的原始 GPT-3——参数少 100 倍,却更受欢迎。

先说清病根。从 P06 的 GPT-1 到 P08 的 GPT-3,这一路的模型都靠同一个目标训练:预测下一个词——给它半句网页,让它猜下一个字最可能是什么。猜得越准,说明它把互联网的语言规律学得越透。GPT-3 把这条路走到了极致,1750 亿参数,博闻强记。

可「会预测下一个词」和「会听人话」,是两码事。你在搜索框里敲「如何煮溏心蛋」,一个纯粹的续写模型完全可能接一句「如何煮溏心蛋?如何煮全熟蛋?如何煮茶叶蛋?」——因为在它读过的网页里,这行字后面统计上最可能跟着的就是另一个相似的标题,而不是菜谱。它没在骗你,它只是在忠实地续写。论文一针见血:语言建模的目标(预测网页下一个词),和我们真正想要的目标(有用、安全地听从指令),是错位的(misaligned)。

错位会长出三种毛病:胡编(一本正经地编造事实)、有害(生成带偏见或有毒的内容)、没用(干脆不照你说的做)。模型越大、被部署到越多产品里,这三种毛病的杀伤力就越大。所以 OpenAI 借用 Askell 等人(2021)的一套说法,把「对齐」的目标拆成好记的三个词——helpful(有用)、honest(诚实)、harmless(无害),简称 HHH。这篇论文要做的,就是把 GPT-3 从一个博学的续写机器,掰向这三个字。

掰的效果,先看上面这张头条图(Figure 1):最小号的 1.3B InstructGPT,人评胜率就已经超过了大它 100 倍的原始 GPT-3。参数不是一切——怎么训,有时候比训多大更要紧。这张图怎么来的,是接下来四节的事。

02三步调教法:示范、排序、刷分

InstructGPT instructgpt-p03.png
论文原文 · 第 3 页:Figure 2,RLHF 三步法的全景图,也是这篇论文的心脏。从左到右三步:Step 1(SFT)——从数据集抽一个问题,请标注员写出理想答案的示范,用监督学习微调 GPT-3;Step 2(RM)——同一个问题让模型生成好几个答案(图里的 A/B/C/D),请标注员从好到坏排序,用这些排序训练一个「奖励模型」;Step 3(PPO)——再抽一个新问题,让模型生成答案,奖励模型给它打一个分,用这个分数通过 PPO 算法反过来更新模型。蓝色箭头标出每一步的数据分别喂给哪个模型。第 2、3 步可以反复迭代。

RLHF 听着玄,拆开就是三步,像教一个新员工上手(上图 Figure 2 从左到右)。

第一步,示范(SFT,监督微调)。光靠 GPT-3 读过的网页,凑不出多少「面对一条指令、好答案长什么样」的例子。于是 OpenAI 请了一支约 40 人的标注团队,让他们对着一堆真实问题,亲手写出理想的回答做示范,再拿这批示范(约 1.3 万条)去监督微调 GPT-3。这一步就是「给模型看正确答案是什么」,把它从「续写」掰到「应答」。但示范有个天花板:好答案千千万,人不可能把每种问题的理想答案都写全。

第二步,排序(RM,训练奖励模型)。换个更省力的思路——不再让人「写答案」,而是让人「挑答案」。对同一个问题,让模型一口气生成好几个答案(论文里一次给标注员看 4 到 9 个),请人从好到坏排个序。挑,比写轻松得多,一次能标的量也大(约 3.3 万条排序)。然后用这些排序,训练出一个单独的模型——奖励模型(Reward Model):喂它一个问题加一个答案,它吐出一个分数,代表「人会有多喜欢这个答案」。相当于把 40 个人的口味,浓缩进了一个会自动打分的裁判。

第三步,刷分(PPO,强化学习)。有了裁判,就能让模型自己刷题了:让它对新问题(约 3.1 万条,这一步不用人再标)生成答案,奖励模型打分,模型再朝「高分」的方向调整参数——用的是强化学习里的 PPO 算法。这一步不再需要人写标准答案,模型靠一个学会了人类口味的裁判,自己大量试错、自我改进。

一句话记住这三步:SFT 教它「照着答」→ 奖励模型学会「评好坏」→ PPO 拿评分「反复练」。第一步给正例、教确定的能力和格式;后两步给偏好、管那些「说不清但一比就知道哪个更好」的主观品质。这也正是它跟单纯「多喂点标注数据」的根本区别——下一节,我们钻进第二、三步的门道。

03奖励模型与那道 KL 缰绳:为什么不直接教到底

InstructGPT instructgpt-p09.png
论文原文 · 第 9 页:第三步强化学习的目标函数(公式 2),一行数学把「怎么刷分又不跑偏」讲清楚。三项相加:第一项是奖励模型给的分,模型要把它最大化;第二项是一道缰绳——带系数 β 的 KL 惩罚,惩罚新模型偏离原始 SFT 模型太远,防止它为了骗高分而胡来(论文叫 over-optimization,过度优化);第三项带系数 γ,把预训练的原始目标也混回来(这就是 PPO-ptx),用来抵消「对齐税」。上方 Table 3 是标注员给每个回答标的元数据维度:整体质量(1-7 分)、是否照做指令、是否幻觉、是否含暴力或性或仇恨内容等。

一个自然的疑问:既然第一步能让人写示范、监督微调,那把示范写多一点、一路 SFT 教到底不就行了,何必绕后面两步?

因为「好答案」这件事,没有唯一标准,也写不完。同一个问题,得体的答法有无数种,让人穷举着写示范,既慢又盖不全。而奖励模型干的事,是把「人更喜欢哪个」这种主观、模糊、说不清的偏好,压缩成一个可以被反复优化的分数(标量奖励)。有了这个分数,模型就能像刷题一样,自己生成、自己被打分、自己改进,而不必等人一条条示范。这是 RLHF 真正的杠杆:把「评价」自动化了

几个工程细节,藏着这套方法的老练:

公式里还有第三项(带系数 γ 的那项),是把预训练的老目标也混回来一点。这是为了对付一个副作用——「对齐税」,我们放到第 5 节专门算这笔账。先记住这一节的主角:一个学会了人类口味的裁判,加一道防止跑偏的缰绳

041.3B 打赢 175B:小 100 倍,却更受欢迎

InstructGPT instructgpt-p11.png
论文原文 · 第 11 页:Figure 3,回答一个尖锐的质疑——InstructGPT 是不是只是「过拟合」了那 40 个标注员的口味?四格图:左右两列是两种测试题(左=原本给 GPT-3 用的提示,右=给 InstructGPT 用的提示),上下两行是两组打分人(上=完全没参与训练的陌生标注员,下=训练标注员)。关键看上面一行:连没参与过训练的陌生人,也照样偏好 InstructGPT(PPO / PPO-ptx 两条线稳居最上)——说明模型学到的是「更普遍的好」,不是死记那几个人的偏好。

放榜。核心结论第 1 节那张 Figure 1 已经剧透:人评里,InstructGPT 各个尺寸都显著优于同尺寸的 GPT-3;直接对撞,175B InstructGPT 的回答被偏好于 175B GPT-3 的比例是 85 ± 3%,就算给 GPT-3 配上精心设计的少样本提示,InstructGPT 也能赢 71 ± 4%。而最出圈的一句是:1.3B 的 InstructGPT,胜过了参数多 100 倍的 175B GPT-3。同样的架构、同样的底座,差别只在有没有用人类反馈调教过

会不会只是「过拟合」了那 40 个标注员的口味?论文早料到这一问,专门找了一批完全没参与训练的陌生标注员来打分(上图 Figure 3 上面一行):结果他们照样偏好 InstructGPT。说明模型学到的是某种更普遍的「好」,不是死记那几个人的偏好。

再看 HHH 三个字分别兑现了多少:

还有一个反常识的对照(上图 Figure 5):既然要教模型「听指令」,为什么不直接拿现成的公开指令数据集(FLAN、T0,都是把上百个 NLP 任务配上指令)去微调?论文试了,结果这些模型还打不过自己的 SFT 基线;正面 PK,InstructGPT 以 73.4% 对 26.8% / 29.8% 完胜。原因很朴素:公开数据集里分类、问答这类「好自动打分」的任务占大头,可真实用户 57% 的需求是开放式生成和头脑风暴——公开榜单,压根不「像」人们真实的用法。这一句,也顺带给整个「刷 NLP 榜」的时代提了个醒。

05对齐税与那笔便宜账:改行为,比堆规模划算

InstructGPT instructgpt-p12.png
论文原文 · 第 12 页:两张图坐实「好在哪」。上方 Figure 4(跨模型大小汇总)分四个维度:InstructGPT 相比 GPT-3,更常「尝试执行正确的指令」、更能「遵守明确约束」(比如「用两段话回答」)、更「像个称职的客服助手」,而且幻觉更少(在摘要、闭卷问答这类任务里编造原文没有的信息)。下方 Figure 5 是另一记闷棍:把 GPT-3 分别在 FLAN、T0 这两个公开的 NLP 指令数据集上微调,结果它们的评分还不如 InstructGPT 的 SFT 基线——正面 PK,InstructGPT 以 73.4% 对 26.8% / 29.8% 胜出。原因很朴素:公开数据集里分类、问答占大头,而真实用户 57% 的需求是开放式生成和头脑风暴,公开数据集根本不「像」人的真实用法。

对齐不是白拿的,有代价。论文老实报账:模型经过 RLHF 调教后,在某些传统 NLP 基准上(SQuAD、DROP、翻译等)成绩掉了。它给这个代价起了个名字——对齐税(alignment tax):为了让模型更听话、更安全,在一些我们也在乎的老任务上,性能反而退步了。如果这个税很重,人们就会宁可要「不听话但分高」的模型,对齐就推不动。

好在这税能减。办法就是上一节公式里那第三项:在 PPO 刷分的同时,混入一点原始预训练的目标(论文叫 PPO-ptx),一边学听话、一边别忘了老本事。这一招几乎补平了那些掉下去的分,而人类偏好评分几乎不受影响——鱼和熊掌,大体兼得。

但这一篇真正改变行业认知的,是另一笔账。把一个模型对齐,到底要花多少钱?论文给了三个数字:训练 175B 的 SFT 花 4.9 petaflops/s-days,训练 175B 的 PPO-ptx 花 60 petaflops/s-days——而当初预训练出 GPT-3 本身,花了 3640。也就是说,把一个博学的复读机调教成听话的助手,只花了造它的约 1.6% 的算力

把这句话和第 4 节的结论摆在一起,冲击力就出来了:花 1.6% 的钱做对齐,效果好过把模型放大 100 倍。论文因此下了一个在当时相当大胆的判断——「就现在而言,把钱投在对齐现有模型上,比投在训练更大的模型上更划算」。从「越大越好」到「对齐优先」,这是一次范式转移,也是 ChatGPT 时代的定义性思想之一:模型的价值,不只取决于它知道多少,更取决于它愿不愿、会不会照你说的来

06后日谈:从这篇论文,到 ChatGPT

InstructGPT instructgpt-p16.png
论文原文 · 第 16 页:Figure 9,论文诚实晒出的「翻车现场」。两个例子对比 GPT-3 与 InstructGPT 的回答:(上)「为什么冥想后要吃袜子?」——这是个荒谬的假前提,GPT-3 一本正经地胡诌「觉悟的味道」,InstructGPT 虽没被完全带跑,却也不点破前提有问题,而是罗列一堆「有专家认为……」的模棱两可猜测;(下)「高速炮弹正面打南瓜会怎样?」InstructGPT 又长篇大论地列举各种「不确定因素」,就是不肯直说「南瓜大概率会炸开」。论文借这两例点名 InstructGPT 仍会犯的简单错误:被假前提带跑,以及过度对冲、不敢给直接答案

按系列惯例,讲讲它后来的命运。先说论文自己晒的翻车现场(上图 Figure 9),难得的诚实。InstructGPT 仍会犯一眼可见的简单错误:面对假前提(「为什么冥想后要吃袜子?」)会顺着往下答、不点破;面对本有明确答案的问题(「炮弹打南瓜会怎样?」)却过度对冲,长篇罗列「不确定因素」也不肯直说。论文猜测,过度对冲这毛病,恰恰是因为标注员被鼓励「对不确定的事要谦虚」,模型就学过了头。对齐从来不是一劳永逸,它只是把模型往人期望的方向推了一大步。

还有一个更根本的诚实,藏在论文第 5 章:我们到底在对齐「谁」?论文坦白,InstructGPT 对齐的,不是什么抽象的「人类价值」,而是那约 40 个标注员的偏好(大多是讲英语、住在美国或东南亚的承包工),外加 OpenAI 研究员写的标注规则、以及 OpenAI 早期客户的用法。换句话说,「对齐」不是一个中立的技术动作,它必然对齐到某一群具体的人——谁来标注、按谁的标准、为谁服务,都是价值选择。这也埋下了后来关于 RLHF 的长期争论:有用和无害常打架(对齐过头,模型会「过度拒答」正常请求,或一味顺着你说好听话而牺牲真实),偏好该由谁定义,单一奖励能不能真正代表「好」。这些问题,直到今天也没有标准答案。

但方法本身,一炮而红。这篇论文发表于 2022 年 3 月;9 个月后的 2022 年 11 月,OpenAI 用几乎同一套 RLHF 三步法,发布了 ChatGPT,把整个世界卷了进来。论文里那些不起眼的伏笔——InstructGPT 能跟着写代码、能听懂没怎么训练过的其他语言指令——正是 ChatGPT 那种「什么都能聊两句」的通用感的前兆。从此,RLHF 成了大模型对齐的标准动作,后面的故事都是它的变奏:把「人类反馈」换成「AI 反馈」的 RLAIF、用一部「宪法」给模型立规矩的 Constitutional AI、把三步压成一步、不再单独训裁判的 DPO(就在本系列 P17)。

放进系列时间线收个尾。前三个阶段(P01–P14)造出了一个又大、又快、又便宜、博学的语言模型;这一篇,第一次教会它听人话——把「预测下一个词」的复读机,对齐成「照你说的做」的助手。这是从 GPT-3ChatGPT 之间,那道最关键的门。可它虽然听话了,遇到需要一步步推演的难题(还记得它连「炮弹打南瓜」都答不利索)却仍会翻车。下一篇 P16《思维链 CoT》,讲另一个四两拨千斤的发现:只要让模型「把推理过程一步步写出来」,它解难题的能力就会突然解锁——对齐教它听话,思维链教它会想

读完自测:先别往下翻,试着答

主动回忆一遍才记得住。三问,想好再看答案:

答案1. 因为 GPT-3 的训练目标只是「预测网页上的下一个词」,而用户要的是「有用、真实、无害地听从指令」——两个目标本就是错位的。所以它会胡编、跑题、说脏话,不是不够聪明,是没被教过「该听谁的、该怎么答」。2. 因为「好答案」没有唯一标准,靠人一条条写示范写不完、也覆盖不全;奖励模型能把「人更喜欢哪个」这种主观的事,压成一个可被强化学习不断优化的分数,让模型自己大量试错、按分改进,而不必等人示范——本质是把「评价」自动化了。3. 「改行为」有时比「堆规模」更划算:对齐一个 175B 模型只花了造它约 1.6% 的算力,效果却好过把模型放大 100 倍。从「越大越好」到「对齐优先」,这是 ChatGPT 时代的定义性思想。

一句话带走,和下一步

只记一句:InstructGPT 用 RLHF(人类反馈强化学习)三步法——SFT 教模型「照着答」、奖励模型学会「评好坏」、PPO 拿评分「反复练」——把只会预测下一个词的 GPT-3,对齐成听你指令的助手;它证明了「改行为」比「堆规模」便宜得多也有效得多(1.3B 打赢 175B、对齐只花预训练约 1.6% 的算力),并在 9 个月后长成了 ChatGPT。

启后:模型到这里既大又便宜、还学会了听话,可一遇到要「一步步推演」的难题就容易翻车。下一篇 P16《思维链 CoT》,讲一个四两拨千斤的发现:只要提示模型「把推理过程一步步写出来」,它解数学题、逻辑题的能力就会突然解锁。对齐让它愿意照你说的做,思维链让它真的会想——阶段四「对齐与推理」的下半场。

想再深入一点原论文:arXiv 2203.02155(《Training language models to follow instructions with human feedback》,Ouyang et al., OpenAI 2022;模型与样本开源在 openai/following-instructions-human-feedback)。关键前作:RLHF 的源头 Christiano et al. 2017《Deep RL from Human Preferences》(arXiv 1706.03741),以及把 RLHF 用于文本摘要、直接启发了这篇的 Stiennon et al. 2020《Learning to summarize from human feedback》(arXiv 2009.01325)。延伸阅读:把三步压成一步、不再单独训裁判的 DPO(Rafailov et al. 2023,arXiv 2305.18290,本系列 P17),以及用「宪法」替人类反馈立规矩的 Constitutional AI(Bai et al. 2022,arXiv 2212.08073)。/ 互动钩子:你觉得一个 AI 助手,是「有用」更重要,还是「无害」更重要?这两者打架时,你希望它站哪边?评论区聊聊。

← 返回 AI 圣经目录