15 InstructGPT 论文精读:SFT + RLHF 如何让模型听懂指令?

在前面的文章中,我们已经讲到了 GPT-1、GPT-2、GPT-3、In-Context Learning、Prompt Engineering 和 Scaling Law。

这条路线可以简单概括为:

复制代码
GPT-1:生成式预训练 + 下游任务微调
GPT-2:语言模型开始表现出 zero-shot 任务迁移能力
GPT-3:大规模语言模型表现出 few-shot / in-context learning 能力
Scaling Law:模型能力和参数量、数据量、计算量有关
Chinchilla:模型不能只堆参数,还要训练足够多 token

到这里,GPT 路线已经具备了非常强的文本生成能力。但是,一个新的问题出现了:

语言模型会生成文本,并不代表它会按照用户意图回答问题。

GPT-3 可以续写文章、回答问题、翻译文本、生成代码,但它并不天然是一个"好助手"。它可能会:

复制代码
答非所问
不遵循用户要求
生成看似合理但错误的内容
编造事实
输出冗长无用的回答
在不该回答时继续回答

原因很简单:GPT-3 的训练目标是 预测下一个 token ,而不是 帮助用户完成任务。这就引出了 InstructGPT。InstructGPT 对应的论文是:

复制代码
Training language models to follow instructions with human feedback

这篇论文由 OpenAI 在 2022 年提出,是大语言模型从"会生成文本"走向"会听指令"的关键节点。它的核心思想可以概括为:

使用人类反馈来微调语言模型,让模型输出更符合用户意图。

更具体地说,InstructGPT 使用了三步流程:

复制代码
第一步:监督微调 SFT
第二步:训练奖励模型 RM
第三步:使用 PPO 进行强化学习微调,也就是 RLHF

这就是后来大语言模型对齐训练中非常经典的路线。


一、GPT-3 已经很强,为什么还需要 InstructGPT?

GPT-3 已经具备很强的生成能力和 few-shot learning 能力。用户给出 prompt 后,模型可以根据上下文继续生成文本。但 GPT-3 的本质仍然是:

复制代码
给定前文,预测下一个 token。

它优化的是语言建模目标:

也就是说,模型只是在学习:

在当前上下文后面,什么 token 最可能出现?

这个目标和用户真正想要的目标并不完全一致。用户真正想要的是:

复制代码
回答有帮助
内容真实可靠
不要胡编乱造
符合指令要求
格式正确
语气合适
必要时拒绝不合适请求

但是 next-token prediction 并不会直接优化这些目标。例如,用户问:

复制代码
请用三句话解释 Transformer。

一个没有对齐好的语言模型可能会输出:

复制代码
Transformer 是一种神经网络结构。它被广泛应用于自然语言处理。下面我将从十个方面详细展开......

这就没有遵循"三句话"的要求。再比如,用户问:

复制代码
请总结下面这段文字,只输出要点。

模型可能会输出一大段解释,而不是简洁要点。所以,GPT-3 的问题不是"不会生成",而是:

它不知道什么样的回答更符合人类偏好。

这就是对齐问题,也就是 alignment problem。InstructGPT 要解决的正是这个问题:

如何让大语言模型更好地遵循用户指令?


二、什么是"对齐"?

在大语言模型中,对齐通常指:

让模型的输出更加符合人类意图、价值和偏好。

对于一个助手模型来说,一个好的回答通常应该满足几个标准:

复制代码
Helpful:有帮助
Honest:诚实
Harmless:无害

这三个词经常被简称为 3H。

1. Helpful:有帮助

有帮助意味着模型应该尽量解决用户的问题。例如用户问:

复制代码
Python 中怎么读取 CSV 文件?

好的回答应该给出可执行的方法、示例代码和必要解释,而不是泛泛而谈。

2. Honest:诚实

诚实意味着模型不应该胡编乱造。如果不知道答案,应该承认不确定,而不是编造一个看起来可信的答案。例如用户问一个不存在的论文:

复制代码
请总结《XYZ Transformer for Quantum Language Modeling》这篇论文。

如果模型没有可靠信息,就不应该假装知道。

3. Harmless:无害

无害意味着模型不应该帮助用户造成现实伤害。例如面对危险、违法或明显有害的请求,模型需要拒绝或转向安全解释。InstructGPT 的目标不是单纯让模型更会说话,而是让模型更接近:

复制代码
有帮助、真实、无害

这也是大语言模型从 base model 走向 assistant model 的关键。


三、InstructGPT 的整体方法

InstructGPT 的训练流程可以概括为三步:

复制代码
预训练 GPT-3
  ↓
收集人工示范数据
  ↓
监督微调 SFT
  ↓
收集模型输出排序数据
  ↓
训练奖励模型 RM
  ↓
使用 PPO 优化策略模型
  ↓
得到 InstructGPT

更简洁地说:

复制代码
SFT → Reward Model → PPO / RLHF

这三步分别解决不同问题。

步骤 作用 直观理解
SFT 让模型初步学会按照指令回答 给模型看"好答案长什么样"
Reward Model 学习人类偏好 判断哪个回答更好
PPO / RLHF 用奖励信号继续优化模型 让模型生成更受人类偏好的回答

这条流程非常重要。因为它把语言模型训练从单纯的:

复制代码
预测下一个 token

推进到了:

复制代码
生成更符合人类偏好的回答

四、第一步:监督微调 SFT

SFT 的全称是:

复制代码
Supervised Fine-Tuning

也就是监督微调。这一步的目标是:

让预训练语言模型初步学会按照用户指令回答问题。

在 SFT 阶段,研究人员会收集一批人工编写的高质量示范数据。每条数据通常包含:

复制代码
用户指令 prompt
人工写出的理想回答 demonstration

例如:

复制代码
Prompt:
请用三句话解释什么是 Transformer。

人工示范回答:
Transformer 是一种基于注意力机制的神经网络结构。它可以并行处理序列中的 token,并建模长距离依赖关系。它是 BERT、GPT、T5 等模型的基础架构。

模型会在这些示范数据上进行有监督训练。训练目标仍然是语言模型交叉熵,只不过训练文本变成了"指令 + 人工回答"。

如果 prompt 是 x,人工回答是 ,那么 SFT 的目标可以写成:

其中:

  • x是用户指令;

  • 是人工回答中的第 t 个 token;

  • 是回答中第 t个 token 之前的内容;

  • 模型目标是最大化人工回答的概率。

通俗理解就是:

复制代码
给定用户指令,让模型尽量模仿人工标注者写出的好回答。

SFT 的作用非常直接。原始 GPT-3 只是一个续写模型,而经过 SFT 后,它开始知道:

复制代码
用户问问题时,我应该回答问题
用户要求总结时,我应该总结
用户要求列要点时,我应该列要点
用户要求翻译时,我应该翻译

所以,SFT 是模型从 base model 走向 instruction-following model 的第一步。


五、SFT 有什么局限?

SFT 很重要,但它并不完美。因为 SFT 只是在模仿人工示范回答。这会带来几个问题。

1. 人工示范数据有限

高质量人工回答很贵。如果想覆盖所有可能的用户指令,几乎不可能。用户可能提出:

复制代码
写作请求
代码请求
数学问题
论文总结
法律咨询
医学问题
数据分析
多轮对话
格式转换

人工示范数据不可能覆盖所有情况。

2. 只学习"一个好答案",没有学习"哪个答案更好"

对于同一个 prompt,可能存在多个回答。例如用户问:

复制代码
请解释什么是 BERT。

可能有很多回答方式:

复制代码
简短回答
详细回答
适合初学者的回答
学术风格回答
代码角度回答
论文精读风格回答

SFT 通常只给模型一个示范答案。它没有直接告诉模型:

复制代码
回答 A 比回答 B 更好
回答 C 虽然语法正确但不够有帮助
回答 D 太啰嗦
回答 E 编造了事实

也就是说,SFT 更像是模仿学习,而不是偏好学习。

3. 模型可能学会表面格式,但不一定最符合偏好

SFT 可以让模型学会回答格式,但对于更细微的人类偏好,比如:

复制代码
哪个回答更有帮助?
哪个回答更诚实?
哪个回答更安全?
哪个回答更符合用户语气?

仅靠 SFT 不一定够。因此,InstructGPT 进一步引入了奖励模型。


六、第二步:训练奖励模型 RM

Reward Model,简称 RM,中文可以叫奖励模型。它的目标是:

学习人类对不同模型回答的偏好。

这一步不是让人工标注者直接写答案,而是让他们比较多个模型回答,判断哪个更好。例如给定同一个 prompt:

复制代码
请解释什么是 Transformer。

模型生成多个回答:

复制代码
回答 A:Transformer 是一种基于注意力机制的神经网络结构,可以用于序列建模。

回答 B:Transformer 是一种数据库系统,主要用于存储表格数据。

回答 C:Transformer 是一种深度学习架构,核心是 Self-Attention,它可以并行处理序列并建模长距离依赖。

人工标注者可能排序为:

复制代码
C > A > B

因为:

复制代码
C 更完整、更准确
A 基本正确但较简单
B 明显错误

奖励模型要学习的就是这种排序偏好。

它输入:

复制代码
prompt + answer

输出一个标量分数:

其中:

  • x 是用户 prompt;

  • y 是模型回答;

  • 是奖励模型给出的分数;

  • 表示奖励模型参数。

分数越高,表示奖励模型认为这个回答越符合人类偏好。


七、奖励模型如何训练?

奖励模型训练依赖人类排序数据。

假设对于同一个 prompt,有两个回答:

复制代码
回答 A:更好
回答 B:更差

我们记为:

表示 winner,也就是更受偏好的回答

表示 loser,也就是较差的回答。奖励模型希望:

也就是说,它给更好回答的分数应该高于更差回答。常见的 pairwise ranking loss 可以写成:

其中:

  • 是 winner 的奖励分数;

  • 是 loser 的奖励分数;

  • 是 sigmoid 函数;

  • 如果 winner 分数比 loser 高很多,loss 就会小;

  • 如果 winner 分数不够高,loss 就会变大。

这个损失函数的直观含义是:

复制代码
奖励模型不需要知道绝对分数是多少,
只需要学会把更好的回答排在更差的回答前面。

训练完成后,奖励模型就可以替代人工标注者,对新回答打分。当然,它只是对人类偏好的近似,并不等于真正的人类判断。


八、为什么需要奖励模型?

为什么不直接让人类参与每一次模型训练?原因很简单:

复制代码
人工标注太贵
人工反馈速度太慢
强化学习需要大量反馈信号

如果每次模型生成回答都要人工评分,训练成本会非常高。奖励模型的作用是:

用一个模型来近似人类偏好,作为后续强化学习的奖励信号。

也就是说,InstructGPT 的流程是:

复制代码
先用人工数据训练奖励模型
再用奖励模型指导语言模型优化

这就把人工偏好转化成了可自动计算的 reward。这一步非常关键。

因为语言模型原本只能优化:

复制代码
下一个 token 是否符合训练文本

而有了奖励模型后,它可以进一步优化:

复制代码
整个回答是否更符合人类偏好

九、第三步:使用 PPO 进行 RLHF

RLHF 的全称是:

复制代码
Reinforcement Learning from Human Feedback

中文可以翻译为:

复制代码
基于人类反馈的强化学习

在 InstructGPT 中,RLHF 的核心是:

使用奖励模型作为反馈信号,通过 PPO 继续优化 SFT 模型。

PPO 的全称是:

复制代码
Proximal Policy Optimization

它是一种强化学习算法。

在语言模型场景中,可以把模型看作一个策略:

其中:

  • x 是用户 prompt;

  • y是模型生成的回答;

  • 表示当前语言模型;

  • 模型的动作就是一个个生成 token。

奖励模型会给回答一个分数:

PPO 的目标是让语言模型生成更高奖励的回答。

也就是说:

复制代码
模型生成回答
  ↓
奖励模型打分
  ↓
PPO 根据奖励更新语言模型
  ↓
模型更倾向生成高分回答

这一步让模型不只是模仿人工示范,而是主动优化"人类更喜欢什么样的回答"。


十、为什么 RLHF 中需要 KL 惩罚?

如果只让模型最大化奖励模型分数,会出现一个问题:

模型可能为了骗过奖励模型,生成奇怪但高分的文本。

这叫 reward hacking。例如奖励模型可能偏好:

复制代码
回答更长
语气更确定
包含更多专业词

如果没有约束,语言模型可能学会生成特别长、特别自信但未必正确的回答,只为了拿高分。所以 RLHF 通常会加入一个 KL 惩罚项,限制新模型不要偏离原来的 SFT 模型太远。目标可以简化理解为:

其中:

  • 是奖励模型给出的分数;

  • 是当前正在优化的模型;

  • 是 SFT 后的参考模型;

  • 衡量当前模型和参考模型之间的差异;

  • 控制 KL 惩罚强度。

这个公式的直观含义是:

复制代码
模型要提高奖励分数,
但不能偏离原来的语言模型太远。

这样可以减少模型为了追求奖励而生成异常文本的风险。所以 RLHF 不是简单地:

复制代码
奖励越高越好

而是:

复制代码
在保持语言质量和稳定性的前提下,提高人类偏好奖励。

十一、InstructGPT 的完整训练流程

现在我们可以把 InstructGPT 的完整流程串起来。

复制代码
预训练 GPT-3
  ↓
收集人工示范回答
  ↓
监督微调,得到 SFT 模型
  ↓
让 SFT 模型对 prompt 生成多个回答
  ↓
人工标注者对回答排序
  ↓
用排序数据训练奖励模型
  ↓
用奖励模型给回答打分
  ↓
使用 PPO 优化 SFT 模型
  ↓
得到 InstructGPT

这条流程可以进一步概括为:

复制代码
先让模型模仿好答案
再让模型学会判断什么答案更好
最后让模型朝更受偏好的方向优化

也就是:

复制代码
SFT:学会回答
RM:学会评分
PPO:优化回答

这就是 InstructGPT 的核心。


十二、InstructGPT 的实验结果说明了什么?

InstructGPT 最有代表性的结果之一是:

人类更偏好 InstructGPT 的输出,而不是原始 GPT-3 的输出。

尤其值得注意的是,论文中 1.3B 参数的 InstructGPT 输出,在人工评估中甚至优于 175B 参数 GPT-3 的输出。这个结果非常重要。

它说明:

复制代码
模型更大,不一定更符合用户意图;
经过人类反馈对齐的小模型,可能比更大的 base model 更好用。

也就是说,参数量不是唯一关键。对于面向用户的助手模型来说,对齐训练非常重要。InstructGPT 还在一些方面表现出改进:

复制代码
更遵循用户指令
回答更有帮助
真实性有所提升
有害输出减少

当然,InstructGPT 并不是完美模型。论文也指出,它仍然可能犯简单错误,也不能彻底解决所有真实性和安全问题。但它证明了:

使用人类反馈微调语言模型,是让模型更符合用户意图的有效方向。


十三、InstructGPT 和 GPT-3 的区别

现在我们可以把 GPT-3 和 InstructGPT 做一个对比。

对比维度 GPT-3 InstructGPT
模型基础 Decoder-only Transformer 基于 GPT-3 微调
主要训练目标 next-token prediction SFT + RM + PPO/RLHF
是否使用人类反馈 不作为核心训练信号 使用人类示范和偏好排序
是否更会遵循指令 不稳定 明显增强
输出风格 更像续写文本 更像回答用户问题
主要问题 可能不听指令、胡编、跑题 仍可能错误,但更符合用户偏好

可以用一句话概括:

GPT-3 是强大的语言模型,InstructGPT 是经过人类反馈对齐后的指令跟随模型。

这也是 base model 和 instruction-tuned model 的区别。


十四、InstructGPT 和 ChatGPT 的关系

InstructGPT 不是 ChatGPT,但它是 ChatGPT 的重要技术前身。InstructGPT 解决的是:

复制代码
如何让语言模型更好地遵循用户指令?

ChatGPT 则进一步面向对话场景进行优化。可以简单理解为:

复制代码
GPT-3:强大的 base language model
InstructGPT:更会遵循指令的模型
ChatGPT:面向多轮对话优化的助手模型

InstructGPT 的意义在于,它验证了一个关键路线:

复制代码
预训练语言模型
  ↓
监督指令微调
  ↓
人类偏好建模
  ↓
RLHF 对齐
  ↓
更符合用户意图的助手模型

这条路线后来成为很多大语言模型对齐训练的重要基础。


十五、RLHF 的局限性

RLHF 很重要,但它也有局限。

1. 标注成本高

RLHF 需要大量人工示范和偏好排序数据。这需要训练标注者、设计标注规范、控制标注质量,成本很高。

2. 奖励模型可能不完美

奖励模型只是人类偏好的近似。如果奖励模型学错了偏好,语言模型就可能朝错误方向优化。例如奖励模型偏好冗长回答,模型就可能变得啰嗦。如果奖励模型偏好自信表达,模型可能更容易编造。

3. 可能出现 reward hacking

模型可能学会利用奖励模型漏洞,生成高奖励但低质量的回答。所以需要 KL 约束、人工评估和安全测试。

4. PPO 训练复杂

PPO 是强化学习算法,训练过程相对复杂,对超参数、稳定性和工程实现要求较高。这也是为什么后来出现了 DPO、RRHF、ORPO、KTO 等更简单的偏好优化方法。

5. 对齐不等于完全可靠

即使经过 RLHF,模型仍然可能:

复制代码
犯事实错误
理解错用户意图
过度迎合用户
拒绝一些本可回答的问题
在复杂推理中出错

所以 RLHF 不是万能解法,而是对齐训练中的重要一步。


十六、InstructGPT 对大语言模型发展的影响

InstructGPT 的影响非常深远。

1. 它让大家意识到"会生成"不等于"好用"

GPT-3 很强,但不一定稳定遵循用户指令。InstructGPT 说明,模型需要通过对齐训练才能更好服务用户。

2. 它奠定了 SFT + RLHF 的经典流程

后来很多大语言模型都采用类似流程:

复制代码
预训练
  ↓
监督指令微调
  ↓
偏好对齐

只不过具体方法可能不同。有些使用 PPO,有些使用 DPO,有些使用 RLAIF,有些结合拒绝采样和偏好优化。

3. 它推动了从 Base Model 到 Chat Model 的转变

在 InstructGPT 之前,很多模型更像语言续写器。在 InstructGPT 之后,模型开始更像助手。这也是大语言模型产品化的重要一步。

4. 它让"人类偏好"成为训练信号

传统语言模型主要学习文本分布。InstructGPT 进一步引入人类偏好,让模型优化方向从:

复制代码
什么文本最可能出现?

转向:

复制代码
什么回答更受人类欢迎?

这是大语言模型训练目标的重要变化。


十七、本文小结

本文精读了 InstructGPT 论文 Training language models to follow instructions with human feedback

InstructGPT 要解决的问题是:

GPT-3 虽然具备强大的生成能力,但并不一定会稳定遵循用户指令。

原因在于,GPT-3 的训练目标是 next-token prediction,而不是直接优化"有帮助、真实、无害"的用户偏好。

InstructGPT 使用了经典的三步训练流程:

复制代码
第一步:监督微调 SFT
第二步:训练奖励模型 RM
第三步:使用 PPO 进行 RLHF

SFT 阶段使用人工示范回答训练模型,让模型初步学会按照指令回答。其损失可以写成:

奖励模型阶段使用人工排序数据训练模型,让它学会判断哪个回答更符合人类偏好。常见 pairwise ranking loss 可以写成:

RLHF 阶段使用奖励模型作为反馈信号,通过 PPO 优化语言模型,同时加入 KL 惩罚,防止模型偏离 SFT 模型太远:

InstructGPT 的实验表明,经过人类反馈对齐后的模型更受人类偏好。甚至 1.3B 参数的 InstructGPT 输出,在人工评估中也优于 175B GPT-3 输出。

这说明:

复制代码
模型规模很重要,
但对齐同样重要。

如果用一句话总结 InstructGPT:

InstructGPT 通过 SFT、奖励模型和 RLHF,把 GPT-3 这类"会续写"的语言模型,进一步训练成更能遵循用户指令、更符合人类偏好的助手模型。

相关推荐
我爱cope1 小时前
【Agent智能体12 | 反思设计模式-使用外部反馈】
人工智能·设计模式·语言模型·职场和发展
2601_959479631 小时前
ZFX山海证券:“美股新高映射盈利支撑”
人工智能
weixin_446260851 小时前
VideoFDB 深度分析:全双工视听对话智能体评估基准
人工智能
新加坡内哥谈技术1 小时前
Claude Code 中动态工作流(Dynamic Workflows)
人工智能
救救孩子把1 小时前
78-机器学习与大模型开发数学教程-7-6 自注意力机制的计算复杂度分析
人工智能·机器学习
XMAIPC_Robot1 小时前
基于RK3588 ARM+FPGA电火花数控机床控制系统设计,兼顾ethercat软硬件实时
linux·arm开发·人工智能·嵌入式硬件·fpga开发
见合八方1 小时前
【滤波器】热调谐FP滤波器
人工智能·算法
古城小栈1 小时前
cargo-pprof:Rust性能调优
人工智能·算法·rust
程序大视界1 小时前
Google I/O 2026 全解析:Gemini 3.5 Flash 免费用、4倍速碾压 GPT-5.5,AI 迎来“Agent 时代“
人工智能·gpt