InstructGPT 论文阅读笔记
这篇论文提出 InstructGPT:用人类示范数据做监督微调,再用人类偏好训练奖励模型,最后用 PPO 做强化学习微调,使 GPT-3 更符合用户指令和人类偏好。核心结论是:对齐训练比单纯扩大模型规模更直接有效,1.3B 参数的 InstructGPT 在人工偏好评估中甚至优于 175B 参数的 GPT-3。
1. 研究背景与问题
GPT-3 这类语言模型的预训练目标是预测下一个 token,而用户真正需要的是模型理解并执行指令,且输出有帮助、诚实、无害。两者并不一致,所以大模型即使能力强,也可能出现不听指令、编造事实、输出有害内容等问题。
论文把这个问题称为语言模型目标与用户意图不对齐。作者希望通过后训练把模型行为从“续写互联网文本”调整为“根据用户指令完成任务”。这里的对齐不是抽象地对齐所有人类价值,而是对齐到一组标注员、研究者和 API 使用场景中体现出的偏好。
2. 方法:RLHF 三阶段流程
论文方法可以概括为 SFT -> RM -> PPO。
2.1 监督微调 SFT
首先收集提示词,并让标注员写出理想回答。然后用这些 prompt-response 示例微调 GPT-3,得到监督微调模型 SFT。
数据来源主要是 OpenAI API 用户提交的 prompt,也包含少量标注员自己写的 prompt。论文中 SFT 训练集约 13k 条 prompt,主要是英文,任务类型包括生成、问答、对话、摘要、抽取等。
SFT 的作用是给模型一个初始的“指令跟随”行为分布。它比直接从预训练模型做 RL 稳定,也能让后续奖励模型看到更接近部署场景的输出。
2.2 奖励模型 RM
第二步是收集偏好数据:对同一个 prompt,从多个模型输出中采样若干回答,让标注员排序。论文中每个 prompt 通常有 K=4 到 K=9 个候选回答,排序结果会被转化成成对比较数据。
奖励模型输入 prompt 和回答,输出一个标量 reward。训练目标是让被人类偏好的回答得分高于不被偏好的回答。论文中的损失函数本质是 pairwise ranking loss:
loss(theta) = - E[log sigma(r_theta(x, y_w) - r_theta(x, y_l))]
其中y_w是偏好回答,y_l是较差回答。论文为了节省计算和稳定训练,主要使用 6B 参数的奖励模型,而不是 175B 奖励模型。
2.3 用 PPO 做强化学习微调
第三步把奖励模型当作环境奖励,用 PPO 优化 SFT 模型。对每个用户 prompt,策略模型生成回答,奖励模型给出 reward,然后 PPO 更新策略。
一个关键细节是 KL 惩罚:训练时会惩罚新策略偏离 SFT 策略太远,避免模型过度优化奖励模型,产生 reward hacking 或分布漂移。
论文还提出 PPO-ptx:在 PPO 更新中混入预训练分布上的语言模型损失,用于缓解 RLHF 对传统 NLP benchmark 的性能损伤。除非特别说明,论文中的 InstructGPT 指 PPO-ptx 模型。
3. 数据与标注
论文雇用了约 40 名标注员,通过筛选测试选择对敏感问题、潜在有害输出和不同群体偏好较敏感的人。训练和评估均依赖这些标注员。
三类数据分别是:
SFT 数据:约 13k 个训练 prompt,用于训练监督微调模型。
RM 数据:约 33k 个训练 prompt,用于训练奖励模型。
PPO 数据:约 31k 个训练 prompt,不含人工标签,作为 RLHF 阶段的输入。
验证集和测试集会避免和训练集来自同一用户,并过滤个人身份信息。论文还报告了标注一致性:训练标注员之间的一致率约 72.6%,held-out 标注员之间约 77.3%。
4. 实验设计
论文主要比较以下模型:
GPT-3:原始预训练模型。
GPT-3 prompted:通过 few-shot prompt 让 GPT-3 进入指令跟随模式。
SFT:用人工示范监督微调后的模型。
PPO:在奖励模型上用 PPO 训练后的模型。
PPO-ptx:PPO 训练时混入预训练目标的模型,即主要的 InstructGPT。
FLAN/T0 微调版本:用于比较基于公开 NLP 任务的 instruction tuning。
评估分为两类:
API 分布评估:使用真实 API prompt 的 held-out 测试集,由人类比较不同模型输出,主指标是 win rate 和 1-7 分 Likert 评分。
公共 NLP 数据集评估:包括 TruthfulQA、RealToxicityPrompts、Winogender、CrowS-Pairs,以及问答、阅读理解、翻译等传统任务。
5. 主要结果
5.1 人类更偏好 InstructGPT
在 API prompt 分布上,标注员显著更喜欢 InstructGPT 的输出。论文报告:175B InstructGPT 相比 175B GPT-3 的直接比较胜率为 85% ± 3%;相比 few-shot prompted GPT-3 的胜率为 71% ± 4%。
最有代表性的结果是:1.3B InstructGPT 的输出优于 175B GPT-3。这个结论说明,后训练对齐能让已有能力更容易被用户指令激发,效果并不只是来自参数规模。
5.2 更会遵守显式约束,幻觉更少
相较 GPT-3,InstructGPT 更常尝试完成正确指令,更能遵守显式约束,也更像一个合适的用户助手。在 closed-domain 任务中,InstructGPT 的幻觉率约 21%,GPT-3 约 41%。
5.3 真实性和毒性有所改善,但偏见改善有限
在 TruthfulQA 上,InstructGPT 比 GPT-3 更常生成真实且有信息量的答案。在 RealToxicityPrompts 上,如果提示模型输出安全、尊重的内容,InstructGPT 的毒性输出更少;但如果没有这类提示,优势会减弱或消失。
论文没有发现 InstructGPT 在 Winogender 和 CrowS-Pairs 等偏见评测上显著优于 GPT-3。这说明 RLHF 对“标注员能直接感知并反馈”的行为改善明显,但对更隐蔽、结构性的偏见问题不一定足够。
5.4 PPO-ptx 降低 alignment tax
单纯 PPO 会让模型在一些公开 NLP benchmark 上退化。PPO-ptx 通过混入预训练目标,减少了这种退化,同时基本不损害人类偏好评分。
这个点很重要:如果对齐训练显著损害通用能力,实际系统就不愿采用。PPO-ptx 说明可以在“更符合用户偏好”和“保持原有能力”之间做工程折中。
5.5 公开 NLP instruction 数据不等于真实用户分布
FLAN 和 T0 在公开任务上有价值,但在 OpenAI API prompt 分布上不如 InstructGPT。论文认为原因之一是 API 分布中约 57% 是开放式生成任务,而学术数据集更偏向分类、问答等容易自动评估的任务。
这说明 instruction tuning 的数据分布很关键。模型要在真实应用里好用,训练数据最好覆盖真实使用场景,而不只是公开 benchmark。
6. 论文要点
把 RLHF 系统化应用到通用指令跟随语言模型上,而不是单一任务如摘要。
证明少量高质量人类反馈可以显著改变大模型行为,且效果可能超过单纯扩大模型。
给出了 SFT -> RM -> PPO 的实用训练范式,后来成为 ChatGPT 类模型后训练的重要基础。
提出 PPO-ptx 来缓解对齐训练造成的 benchmark 退化。
强调真实用户 prompt 分布和公开 NLP benchmark 的差异,推动评估从学术任务走向部署场景。
7. 结论
这篇论文的核心价值不是提出一个复杂的新模型结构,而是重新定义了语言模型后训练的目标:不要只优化下一个 token,也不要只在公开任务上刷分,而要让模型输出更符合真实用户的意图和偏好。
SFT、RM、PPO 三阶段各有作用:SFT 让模型进入合理行为区域;RM 把主观偏好转成可优化信号;PPO 在这个信号上进一步搜索更受人类偏好的输出。这个流程把“人类觉得好”转化成了机器学习训练目标。
但这也带来一个根本问题:人类偏好不是稳定、统一、无偏的真理。标注员可能偏好更礼貌、更自信或更会迎合的回答,即使这些回答不一定更真实。因此 RLHF 更像是一种强大的行为塑形技术,而不是完整的安全或真理保证。
从后续大模型发展的角度看,InstructGPT 是从“预训练语言模型”走向“助手型模型”的关键节点。它说明模型可用性往往不只取决于预训练能力,还取决于后训练数据、反馈机制、评估分布和部署约束。
InstructGPT 证明了用人类反馈做后训练可以显著提升语言模型的可用性和指令跟随能力。它的影响在于给出了一个可落地的“助手模型”训练范式:真实用户数据、人工示范、人类偏好、奖励模型和 RL 优化共同塑造模型行为。
不过,论文也清楚表明 RLHF 不是终点。它能提升 helpfulness、一定程度提升 truthfulness 和 harmlessness,但仍无法彻底解决幻觉、偏见、滥用和“到底对齐到谁”的问题。