- 阶段一 · 地基:P01《Attention Is All You Need》 · P02 Bahdanau Attention · P03 seq2seq · P04 word2vec
- 阶段二 · 预训练范式:P05 BERT · P06 GPT-1 · P07 GPT-2 · P08 GPT-3 · P09 T5
- 阶段三 · 规模与效率:P10 Scaling Laws · P11 Chinchilla · P12 LoRA · P13 FlashAttention · P14 MoE
- 阶段四 · 对齐与推理:P15 InstructGPT(RLHF)· 本篇 · P16 思维链 CoT · P17 DPO · P18 Constitutional AI
- 阶段五 · 检索与 Agent:P19 RAG · P20 ReAct · P21 Toolformer
太长不读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复读机的病:模型越大,不等于越听话
先说清病根。从 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三步调教法:示范、排序、刷分
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 缰绳:为什么不直接教到底
一个自然的疑问:既然第一步能让人写示范、监督微调,那把示范写多一点、一路 SFT 教到底不就行了,何必绕后面两步?
因为「好答案」这件事,没有唯一标准,也写不完。同一个问题,得体的答法有无数种,让人穷举着写示范,既慢又盖不全。而奖励模型干的事,是把「人更喜欢哪个」这种主观、模糊、说不清的偏好,压缩成一个可以被反复优化的分数(标量奖励)。有了这个分数,模型就能像刷题一样,自己生成、自己被打分、自己改进,而不必等人一条条示范。这是 RLHF 真正的杠杆:把「评价」自动化了。
几个工程细节,藏着这套方法的老练:
- 裁判故意用小模型。奖励模型只用 60 亿参数(6B),不用最大的 175B——论文发现 175B 当裁判时训练不稳,而且小裁判省下大量算力。它从 SFT 模型改造而来(去掉最后输出词的那层,换成输出一个分数)。
- 排序怎么变成分数。裁判的训练目标很直白:对于人排序里「更好的那个」答案,它给的分要高于「更差的那个」——本质是学一个「两两谁更受偏好」的判别器。标注员之间对「哪个更好」的一致率约 72.6%:不算完美,但足够训出一个有用的裁判。
- 给刷分套一道缰绳。让模型一味追高分,会出事——它可能发现某种钻空子的怪话能骗到裁判高分,于是越练越跑偏(论文叫 over-optimization,过度优化;也就是后来常说的「奖励作弊」)。解法见上图那行目标函数(公式 2):在「奖励分」之外,减去一项 KL 惩罚——只要新模型的输出偏离原始 SFT 模型太远,就扣分。这道缰绳把模型拴在「还是人话」的范围里刷分,不许它为了骗分跑到姥姥家。
公式里还有第三项(带系数 γ 的那项),是把预训练的老目标也混回来一点。这是为了对付一个副作用——「对齐税」,我们放到第 5 节专门算这笔账。先记住这一节的主角:一个学会了人类口味的裁判,加一道防止跑偏的缰绳。
041.3B 打赢 175B:小 100 倍,却更受欢迎
放榜。核心结论第 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 三个字分别兑现了多少:
- 更诚实。在专门考「会不会一本正经说假话」的 TruthfulQA 上,InstructGPT 给出真实且有用回答的比例约为 GPT-3 的两倍;在摘要、闭卷问答这类「答案不该超出原文」的任务里,它编造信息(幻觉)的比例从 41% 降到 21%,砍掉近一半。
- 更无害(有限度)。当被要求「礼貌、得体地回答」时,InstructGPT 生成的有毒内容比 GPT-3 少约 25%。但论文很诚实:在衡量偏见的数据集(Winogender、CrowS-Pairs)上,它并没有比 GPT-3 更好——对齐不是万能药。
- 更有用。它更常真的去执行你的指令、更能遵守明确约束(比如「两段话以内」),也更像个称职的助手。
还有一个反常识的对照(上图 Figure 5):既然要教模型「听指令」,为什么不直接拿现成的公开指令数据集(FLAN、T0,都是把上百个 NLP 任务配上指令)去微调?论文试了,结果这些模型还打不过自己的 SFT 基线;正面 PK,InstructGPT 以 73.4% 对 26.8% / 29.8% 完胜。原因很朴素:公开数据集里分类、问答这类「好自动打分」的任务占大头,可真实用户 57% 的需求是开放式生成和头脑风暴——公开榜单,压根不「像」人们真实的用法。这一句,也顺带给整个「刷 NLP 榜」的时代提了个醒。
05对齐税与那笔便宜账:改行为,比堆规模划算
对齐不是白拿的,有代价。论文老实报账:模型经过 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
按系列惯例,讲讲它后来的命运。先说论文自己晒的翻车现场(上图 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-3 到 ChatGPT 之间,那道最关键的门。可它虽然听话了,遇到需要一步步推演的难题(还记得它连「炮弹打南瓜」都答不利索)却仍会翻车。下一篇 P16《思维链 CoT》,讲另一个四两拨千斤的发现:只要让模型「把推理过程一步步写出来」,它解难题的能力就会突然解锁——对齐教它听话,思维链教它会想。
✎读完自测:先别往下翻,试着答
主动回忆一遍才记得住。三问,想好再看答案:
- 1. GPT-3 已经很强了,为什么说它「没对齐」?病根在哪?
- 2. RLHF 三步里,为什么要单独训一个「奖励模型」,不直接用人写的示范一路教到底?
- 3. 1.3B 的 InstructGPT 打赢 175B 的 GPT-3,这件事最颠覆的启示是什么?
答案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 助手,是「有用」更重要,还是「无害」更重要?这两者打架时,你希望它站哪边?评论区聊聊。