【论文精读】InstructGPT:从 GPT-3 到 ChatGPT,中间到底发生了什么?
本文介绍了InstructGPT如何通过人类反馈微调语言模型,使其输出更符合用户意图。核心方法分为三步:首先用人工标注的高质量答案对GPT-3进行监督微调(SFT);然后训练奖励模型(RM),通过人类对多个回答的排序学习偏好;最后使用近端策略优化(PPO)算法,让语言模型根据RM的分数不断优化输出。这种SFT+RM+PPO的范式解决了GPT-3仅追求文本续写而忽视用户真实需求的问题,使模型能更好地
论文:Training language models to follow instructions with human feedback
作者:Long Ouyang et al.
关键词:InstructGPT、RLHF、SFT、Reward Model、PPO、Alignment、大模型对齐
推荐阅读顺序:Transformer → BERT → GPT-3 → InstructGPT
前言
在看完 GPT-3 论文之后,一个非常自然的问题是:
GPT-3 已经这么强了,为什么它还不是 ChatGPT?
GPT-3 证明了大模型在参数规模足够大之后,可以通过 prompt 和 few-shot examples 完成很多任务。但是 GPT-3 的核心训练目标依然是:
给定前文,预测下一个 token。
也就是说,GPT-3 本质上还是一个强大的“文本续写器”。
但真实用户想要的并不是一个单纯会续写文本的模型,而是一个能够:
- 听懂指令;
- 按要求完成任务;
- 尽量不胡说;
- 回答有帮助;
- 在危险请求上懂得拒绝;
- 输出风格符合用户需求;
的助手模型。
这就是 InstructGPT 这篇论文要解决的问题。
如果说 GPT-3 代表了大模型的 能力涌现,那么 InstructGPT 代表的是大模型开始走向 人类偏好对齐。
一、这篇论文解决了什么问题?
论文开头有一个非常重要的观点:
Making language models bigger does not inherently make them better at following a user’s intent.
翻译过来就是:
让语言模型变得更大,并不会天然让它更好地遵循用户意图。
这句话非常关键。
GPT-3 的参数量很大,语言能力很强,但它并不一定“听话”。
比如用户输入:
请用小学生能听懂的话解释什么是强化学习。
普通 GPT-3 可能会生成一个看起来很专业的解释,但不一定适合小学生理解。
因为 GPT-3 的目标不是“帮助用户理解强化学习”,而是“生成一个在语料分布中合理的下一个文本”。
这就产生了一个核心矛盾:
语言建模目标 ≠ 用户真实意图
GPT-3 学到的是互联网文本分布,而用户想要的是符合当前需求的答案。
因此,InstructGPT 的核心目标就是:
让语言模型的输出更符合人类真实偏好和用户指令。
二、InstructGPT 的核心方法:SFT + RM + PPO
这篇论文最核心的训练流程可以概括成三步:
Step 1:SFT
人类写示范答案,模型模仿人类答案
Step 2:Reward Model
人类给多个模型回答排序,训练奖励模型
Step 3:PPO / RLHF
模型生成回答,奖励模型打分,PPO 根据分数优化语言模型
也可以用一句话理解:
SFT:老师示范怎么答
RM:训练一个自动裁判
PPO:学生根据裁判打分不断改进
这三步组成了 InstructGPT 的核心训练范式。
三、什么是 SFT?
SFT 全称是:
Supervised Fine-Tuning
中文叫:
有监督微调
Supervised 表示有监督,Fine-Tuning 表示微调。
所以 SFT 的意思就是:
用人工标注的高质量答案,对 GPT-3 继续做监督学习训练。
它的数据形式是:
输入 x:用户 prompt
输出 y:人类标注员写的理想回答
例如:
Prompt:
请用小学生能听懂的话解释什么是强化学习。
Human demonstration:
强化学习就像训练小狗。如果小狗做对了动作,我们就奖励它;如果做错了,就不给奖励。慢慢地,小狗就知道什么行为是好的。
SFT 的训练目标是让模型在看到 prompt 后,更大概率生成类似人类示范的回答。
可以写成:
maximize log P(y | x)
也就是:
给定用户指令 x,让模型尽可能生成高质量答案 y。
SFT 的作用是让模型初步学会:
用户给我一个指令时,我应该认真完成这个指令,而不是随便续写。
但是,SFT 也有一个问题:
人类写标准答案成本很高,而且一个 prompt 的好答案往往不止一个。
比如用户问:
解释一下 Transformer。
好的回答可以从 self-attention 讲,也可以从 encoder-decoder 讲,也可以用生活类比讲。
这些答案都可能是好的,很难只指定一个唯一标准答案。
于是就有了第二步:奖励模型。
四、什么是 Reward Model?
Reward Model,简称 RM,中文叫:
奖励模型
它不是用来直接回答用户的,而是用来给回答打分的。
它的输入是:
prompt + response
它的输出是:
一个标量奖励分数
例如:
Prompt:
请用简单语言解释 BERT 的 MLM。
回答 A:
BERT 是一种语言模型。
RM 分数:2.1
回答 B:
MLM 是 Masked Language Modeling,训练时会随机遮住一些 token,让模型根据左右上下文预测被遮住的 token。
RM 分数:8.4
奖励模型要学会的是:
什么样的回答更符合人类偏好。
五、奖励模型如何训练?
训练奖励模型不是让人类给每个回答打具体分数,而是让人类做排序。
比如同一个 prompt:
请用小学生能听懂的话解释强化学习。
模型生成四个回答:
A:强化学习是一种机器学习方法。
B:强化学习就像训练小狗,做对了给奖励,做错了不给奖励。
C:强化学习是马尔可夫决策过程中的策略优化问题。
D:强化学习就是让机器自己变聪明。
人类标注员可能排序为:
B > A > D > C
因为用户要求“小学生能听懂”,所以 B 最符合要求。
这个排序会被拆成多个偏好对:
B 优于 A
B 优于 D
B 优于 C
A 优于 D
A 优于 C
D 优于 C
奖励模型要学习:
r(prompt, B) > r(prompt, A)
r(prompt, A) > r(prompt, D)
r(prompt, D) > r(prompt, C)
也就是说:
人类更喜欢的回答,奖励模型应该给更高分。
六、RM Loss 详解
论文中的奖励模型 loss 大致是:
L(θ)=−E[logσ(rθ(x,yw)−rθ(x,yl))] L(θ) = - E [ log σ( rθ(x, yw) - rθ(x, yl) ) ] L(θ)=−E[logσ(rθ(x,yw)−rθ(x,yl))]
其中:
x:prompt
yw:winner,人类更喜欢的回答
yl:loser,人类不那么喜欢的回答
rθ(x, y):奖励模型给回答 y 的分数
σ:sigmoid 函数
log:取对数
E:对所有训练样本求平均
这个公式看起来复杂,但核心非常简单:
让 winner 的分数高于 loser。
6.1 sigmoid 是干什么的?
sigmoid 函数是:
σ(z)=1/(1+e−z) σ(z) = 1 / (1 + e^{-z}) σ(z)=1/(1+e−z)
它的作用是:
把任意实数变成 0 到 1 之间的概率。
在 RM loss 中,sigmoid 的输入是:
rθ(x, yw) - rθ(x, yl)
也就是:
好回答分数 - 差回答分数
如果奖励模型认为好回答分数更高:
r(yw) = 8
r(yl) = 2
r(yw) - r(yl) = 6
那么:
σ(6) ≈ 0.997
表示模型非常确信:
yw 比 yl 好
如果奖励模型打反了:
r(yw) = 3
r(yl) = 5
r(yw) - r(yl) = -2
那么:
σ(-2) ≈ 0.119
表示模型认为 winner 胜出的概率很低,这显然和人类排序冲突。
所以 sigmoid 的作用是:
把两个回答的分数差,转成 winner 胜过 loser 的概率。
6.2 为什么要加 log?
因为训练目标本质上是最大似然。
人类已经告诉我们:
yw 应该优于 yl
所以模型应该让这个事件的概率尽可能大:
P(yw > yl) = σ(r(yw) - r(yl))
我们希望最大化:
log P(yw > yl)
但深度学习里通常写成最小化 loss,所以加负号:
- log σ(r(yw) - r(yl))
log 的另一个直觉作用是:
对自信但错误的判断惩罚很大。
比如:
P = 0.9
-log(P) ≈ 0.105
loss 很小。
如果:
P = 0.01
-log(P) ≈ 4.605
loss 很大。
也就是说,如果奖励模型非常自信地把人类喜欢的回答判成差回答,就会受到很大惩罚。
6.3 外面的 E 是什么?
E 是 expectation,期望。
在这里可以直接理解为:
对所有训练样本求平均
实际训练时,就是对一个 batch 里的偏好对计算平均 loss。
比如 batch 中有 64 条偏好对:
loss = 64 条样本 loss 的平均值
然后反向传播更新奖励模型参数。
所以 RM loss 本质上是:
pairwise ranking loss,成对排序损失。
它不是让奖励模型学习绝对分数,而是让它学习:
两个回答之间,人类更喜欢哪一个。
七、排序之后要做什么?
排序之后不是直接拿第一名回答继续训练语言模型,而是先训练奖励模型。
完整流程是:
人类排序
↓
拆成偏好对
↓
训练 Reward Model
↓
Reward Model 学会自动给回答打分
↓
PPO 阶段用 Reward Model 指导语言模型优化
为什么不直接拿第一名做 SFT?
因为排序信息比单个第一名更丰富。
比如:
B > A > D > C
如果只拿 B 做训练,A、D、C 之间的相对质量信息就丢失了。
但训练奖励模型时,可以学到:
B 比 A 好
A 比 D 好
D 比 C 好
这样奖励模型能更细致地学习人类偏好。
八、什么是 PPO?
PPO 全称是:
Proximal Policy Optimization
中文叫:
近端策略优化
它是一种强化学习算法。
在 InstructGPT 中,PPO 的作用是:
根据奖励模型给出的分数,继续优化语言模型,让它更倾向于生成高分回答。
到了 PPO 阶段,系统里有两个重要模型:
1. 当前语言模型,也就是要被优化的 policy
2. 奖励模型,也就是自动裁判
训练流程是:
给语言模型一个 prompt
↓
语言模型生成回答
↓
奖励模型给回答打分
↓
PPO 根据分数更新语言模型参数
九、已经知道奖励分数了,然后怎么更新参数?
这是 RLHF 最关键的问题。
普通监督学习中,我们有标准答案,可以直接算交叉熵 loss。
但在 PPO 中,没有标准答案,只有奖励分数。
语言模型生成文本是一个逐 token 采样过程:
prompt
↓
生成 token1
↓
生成 token2
↓
生成 token3
↓
……
↓
得到完整回答
↓
Reward Model 给完整回答打分
PPO 要做的事情是:
如果这个回答得分高,就提高生成这些 token 的概率;
如果这个回答得分低,就降低生成这些 token 的概率。
语言模型可以看成一个策略:
πθ(token | 当前上下文)
也就是:
在当前上下文下,选择下一个 token 的概率分布。
如果某个回答最终得分很高,说明这条生成路径比较好,那么 PPO 就会提高这条路径中 token 的概率。
如果某个回答最终得分很低,说明这条生成路径不好,那么 PPO 就会降低这些 token 的概率。
更精确一点,PPO 会使用 advantage:
Advantage = 实际奖励 - 预期奖励
如果 advantage > 0:
这个回答比预期好,提高生成概率。
如果 advantage < 0:
这个回答比预期差,降低生成概率。
所以 PPO 的直觉是:
高分回答:以后多这么答
低分回答:以后少这么答
十、为什么不用普通 policy gradient,而要用 PPO?
因为普通 policy gradient 的更新可能太猛。
语言模型很大,如果一次更新过大,可能会出现:
模型突然偏离原来的语言能力
生成变得模板化
为了骗奖励模型而输出奇怪内容
事实能力下降
回答风格崩坏
所以 PPO 的核心思想是:
每次只允许模型小步更新,不要一步改太多。
PPO 里会计算一个概率比值:
ratio = 新策略生成某个 token 的概率 / 旧策略生成某个 token 的概率
如果 ratio 很大,说明新模型把这个 token 的概率提高太多。
如果 ratio 很小,说明新模型把这个 token 的概率降低太多。
PPO 会对这个 ratio 做 clipping,也就是限制它不要离 1 太远。
直观来说:
如果回答好:
可以提高它的概率,但别提高太猛。
如果回答差:
可以降低它的概率,但别降低太猛。
这就是 PPO 中 Proximal 的含义:
更新要接近旧策略,不要突然跳太远。
十一、什么是 KL penalty?
PPO 训练还有一个非常重要的约束:
KL penalty
它的作用是:
防止当前 PPO 模型偏离 SFT 参考模型太远。
最终奖励可以理解为:
final reward = RM score - β × KL penalty
也就是说:
奖励模型觉得回答好,加分;
但如果当前模型偏离原 SFT 模型太远,扣分。
为什么要这样做?
因为奖励模型不是完美的人类,只是人类偏好的近似器。
如果没有 KL penalty,语言模型可能学会钻奖励模型的漏洞。
比如奖励模型偏好:
结构清晰
语气自信
回答详细
分点明确
模型可能学成:
不管用户问什么,都输出又长又模板化的分点回答。
这可能骗过奖励模型,但真实用户不一定喜欢。
KL penalty 就是在提醒模型:
你可以变得更符合人类偏好,
但不要为了讨好奖励模型,把自己训歪。
11.1 KL penalty 如何发挥作用?
假设一个回答:
RM score = 9
KL penalty = 5
β = 1
最终奖励:
final reward = 9 - 5 = 4
另一个回答:
RM score = 8
KL penalty = 1
β = 1
最终奖励:
final reward = 8 - 1 = 7
虽然第一个回答 RM 分数更高,但它偏离 SFT 太远,所以最终奖励反而更低。
这样 PPO 就会倾向第二种回答。
所以 KL penalty 的实际效果是:
不只看奖励模型喜不喜欢,
还看模型有没有偏离原来的语言能力太远。
十二、PPO、KL penalty 和 PPO clip 的区别
这几个概念容易混在一起,可以这样区分:
| 机制 | 作用 |
|---|---|
| Reward Model | 判断回答好不好 |
| PPO | 根据奖励更新语言模型 |
| PPO clip | 防止单次参数更新太大 |
| KL penalty | 防止整体模型行为偏离 SFT 太远 |
简单记:
PPO clip:每一步别走太大。
KL penalty:整体别走太偏。
十三、PPO-ptx 是什么?
论文中还有一个重要模型叫:
PPO-ptx
它的意思是:
PPO + pretraining mix
也就是在 PPO 训练时,额外混入一部分预训练语言建模目标。
为什么要这样做?
因为 RLHF 虽然可以让模型更听话,但也可能损伤模型原本的通用能力。
这被称为:
alignment tax,对齐税。
也就是说:
为了让模型更符合人类偏好,可能牺牲一部分原本在 NLP benchmark 上的能力。
PPO-ptx 的作用是:
既要模型更符合人类偏好,
又要尽量保留原始 GPT-3 的通用语言能力。
十四、实验结果:InstructGPT 到底有没有用?
这篇论文最震撼的实验结论是:
1.3B 参数的 InstructGPT,在人类偏好评估中,输出比 175B GPT-3 更受欢迎。
这说明什么?
说明模型效果不只取决于参数量。
GPT-3 虽然大,但它的目标仍然是 next token prediction。
InstructGPT 虽然小很多,但它通过人类示范、人类排序和 PPO 优化,训练目标更接近真实用户需求。
所以在真实用户 prompt 上,人类更喜欢 InstructGPT 的回答。
这带来一个非常重要的结论:
模型更大,不一定更好用;
训练目标更贴近用户需求,模型才更像助手。
十五、真实性和安全性结果
论文还评估了模型的真实性和毒性输出。
整体结论是:
InstructGPT 比 GPT-3 更真实一些,也更少生成有毒内容。
但这里要注意:
RLHF 不能彻底解决幻觉。
原因是 RLHF 优化的是人类偏好,不是真实世界事实本身。
如果模型底层知识错误,或者奖励模型没能识别事实错误,模型仍然可能胡说。
所以更准确地说:
RLHF 可以降低幻觉倾向,
但不能从根本上保证事实正确。
十六、InstructGPT 的局限性
InstructGPT 虽然非常重要,但它不是万能的。
主要局限有几个。
16.1 仍然会胡说
模型经过 RLHF 后更符合人类偏好,但不代表它获得了事实验证能力。
它仍然可能:
编造事实
犯简单错误
过度自信
给出看似合理但错误的解释
因为 RLHF 主要调整的是“怎么回答”,不是从根本上改变模型“知道什么”。
16.2 Labeler 偏好不等于所有用户偏好
奖励模型学习的是标注员的偏好。
但不同用户的偏好可能不同。
比如同一个问题:
解释一下 PPO。
不同人需要不同答案:
初学者:希望少公式,多类比。
研究生:希望有公式和推导。
工程师:希望有代码实现。
博客作者:希望结构清晰,适合整理成文章。
所以 InstructGPT 的对齐更像是“总体偏好对齐”,不是“完全个性化对齐”。
16.3 Reward Model 可能被过度优化
奖励模型只是人类偏好的近似器,不是真正的人类。
如果 PPO 过度优化 RM,模型可能学会:
讨好奖励模型,而不是真正提升用户体验。
比如模型可能变得:
过度分点
过度解释
过度谨慎
回答模板化
这就是 reward overoptimization 的风险。
16.4 遵循指令和安全之间存在冲突
InstructGPT 的目标是 follow user intent。
但用户意图不一定总是安全的。
如果用户要求模型生成危险内容,那么模型不能只追求“听话”,还要学会拒绝。
所以现代助手模型不仅要 helpful,还要 honest 和 harmless。
十七、和 GPT-3、FLAN、T0、WebGPT 的关系
可以把这几篇论文放在一条线上理解。
17.1 GPT-3
GPT-3 证明:
大规模自回归语言模型可以通过 prompt 展现 few-shot 能力。
关键词是:
scale
few-shot learning
next-token prediction
prompting
但 GPT-3 没有真正解决指令遵循和人类偏好对齐问题。
17.2 FLAN / T0
FLAN 和 T0 主要做的是 instruction tuning。
它们把很多 NLP 任务改写成自然语言指令,让模型学习:
根据指令完成任务。
它们更关注 zero-shot task generalization。
17.3 WebGPT
WebGPT 让模型使用浏览器搜索网页,并通过人类反馈提高开放问答的事实性。
它更关注:
搜索
引用
开放问答
事实性
17.4 InstructGPT
InstructGPT 更关注:
真实用户 prompt
人类示范
人类排序
奖励模型
PPO
人类偏好对齐
所以它可以看作从 GPT-3 走向 ChatGPT 的关键桥梁。
十八、这篇论文真正的创新点
我认为 InstructGPT 的创新点不在模型结构,而在训练范式。
它没有提出新的 Transformer 架构,也没有单纯堆更大的参数量。
它真正重要的地方在于:
把人类偏好引入大语言模型训练流程。
具体来说,它提出了一套非常经典的流程:
预训练语言模型
↓
SFT 指令微调
↓
训练 Reward Model
↓
PPO 强化学习优化
↓
得到更符合人类偏好的助手模型
这套流程后来成为很多大模型对齐工作的基础。
十九、这篇论文对 ChatGPT 的意义
ChatGPT 类模型不是裸 GPT-3。
它背后至少包含:
大规模预训练
指令微调
人类反馈对齐
安全数据
对话数据
拒绝策略
系统工程优化
InstructGPT 这篇论文展示了其中非常关键的一环:
如何用人类反馈让 GPT-3 更像一个助手。
所以如果说 GPT-3 是大语言模型能力的代表,那么 InstructGPT 就是大语言模型助手化的代表。
它回答了一个关键问题:
模型已经会生成文本了,怎样让它更符合用户想要的行为?
答案就是:
SFT + Reward Model + PPO / RLHF
二十、总结
最后用几句话总结这篇论文。
InstructGPT 的核心问题是:
GPT-3 的 next-token prediction 目标和用户真实意图不一致。
为了解决这个问题,作者提出:
先用人类示范答案做 SFT,
再用人类排序训练 Reward Model,
最后用 PPO 根据奖励模型优化语言模型。
SFT 让模型初步学会听指令。
Reward Model 把人类偏好转成可计算的奖励分数。
PPO 让模型根据奖励分数继续优化。
KL penalty 防止模型为了讨好奖励模型而偏离 SFT 太远。
PPO-ptx 则进一步缓解对齐带来的通用能力退化。
这篇论文最重要的结论是:
模型好不好用,不只取决于参数量,还取决于训练目标是否贴近用户需求。
1.3B InstructGPT 能在人类偏好上超过 175B GPT-3,正说明了人类反馈对齐的价值。
当然,InstructGPT 也不是终点。
它仍然会胡说,仍然可能受到标注员偏好影响,奖励模型也可能被过度优化。
但它无疑是从 GPT-3 走向 ChatGPT 的关键一步。
个人理解
在我看来,InstructGPT 最值得学习的地方不是某个公式,而是它对“大模型训练目标”的重新思考。
GPT-3 让我们看到:
大规模预训练可以带来强大的能力。
InstructGPT 则进一步说明:
能力强不等于行为好。
一个模型可以很会生成文本,但不一定会按照用户想要的方式回答。
因此,大模型的发展不能只追求参数规模,还必须解决:
模型到底在优化什么?
模型输出到底服务于谁?
模型行为是否符合人类真实需求?
这也是为什么 RLHF、DPO、RLAIF、Constitutional AI 等对齐方法后来会成为大模型研究中的重要方向。
如果你已经读完 GPT-3,那么 InstructGPT 就是下一篇必须读的论文。
因为它补上了从“语言模型”到“AI 助手”之间最关键的一块拼图。
参考论文
- Long Ouyang et al., Training language models to follow instructions with human feedback, 2022.
- Brown et al., Language Models are Few-Shot Learners, 2020.
- Wei et al., Finetuned Language Models Are Zero-Shot Learners, 2021.
- Sanh et al., Multitask Prompted Training Enables Zero-Shot Task Generalization, 2021.
- Nakano et al., WebGPT: Browser-assisted question-answering with human feedback, 2021.
更多推荐


所有评论(0)