资料摘要:InstructGPT
OpenAI 提出 RLHF(Reinforcement Learning from Human Feedback)方法的开创性论文,证明了用人类反馈微调可以让 1.3B 模型在指令遵循上超越 175B 的 GPT-3。 InstructGPT - Training language models to follow instructions with human feedback
核心要点
- 问题:更大的语言模型并不会天然更好地遵循用户意图,反而可能产生不真实、有害或无用的输出
- 方法:分三步 —— SFT(监督微调)+ RM(奖励模型训练)+ PPO(强化学习优化)
- 结果:1.3B 的 InstructGPT 在人类评估中优于 175B 的 GPT-3,真实性提升、有害输出减少、公开 NLP 基准性能几乎无损
- 影响:这篇论文是 ChatGPT 和后续所有 RLHF 对齐工作的理论基石
详细笔记
背景与动机
语言模型通常通过预测下一个 token 训练,目标函数与”遵循用户意图”并不一致。更大的模型可能更擅长生成流畅文本,但不一定更有用、更真实、更无害。
三步方法
Step 1 — Supervised Fine-Tuning (SFT)
收集标注员书写的 prompt 和对应的高质量回答,对 GPT-3 进行监督微调。
- 训练 16 个 epoch,使用余弦学习率衰减,残差 dropout = 0.2
- 第 1 个 epoch 后验证集 loss 就过拟合了,但继续训练反而提升 RM 得分和人类偏好评分
- 最终模型选择基于验证集上的 RM 得分
SFT / RLHF 初始化模型训练细节(Appendix C.1, C.3):
| 超参数 | 1.3B | 6B | 175B |
|---|---|---|---|
| 学习率 | 5e-6 | 1.04e-5 | 2.45e-6 |
| Batch size | 32 | 32 | 8 |
| 预训练 mix 比例 | 10% | 10% | 10% |
| Epochs(RLHF 初始化) | 2 | 2 | 2 |
- 学习率通过 log-linear sweep 选取(1.3B/6B 比 5 个值,175B 比 3 个值),选演示集和预训练集上 loss 都低的
- RLHF 初始化使用 2 epoch SFT + 10% pretraining mix(实验表明这对 PPO 有帮助)
Step 2 — Reward Model (RM) Training
对同一个 prompt 生成多个回答,让标注员排序,训练奖励模型预测人类偏好(Appendix C.2)。
- 从 SFT 模型移除最后的 unembedding 层,改为输出标量奖励
- 只使用 6B RM(175B RM 训练不稳定,不适合作为 RL 中的 value function;6B RM 在各种 LR 下都稳定)
- LR = 9e-6,cosine 衰减到初始值 10%,batch size = 64(prompt 数),仅训练 1 个 epoch
- 每个 prompt 生成 K=4 到 K=9 个回答,产生 C(K,2) 个比较对。每个 batch 最多 64 × C(K,2) ≤ 2,304 个比较对
- 比较对按 prompt 分组为单个 batch element(若随机打散则单 epoch 即过拟合)
- 交叉熵损失:
loss(θ) = -1/C(K,2) · E[log σ(rθ(x, y_w) - rθ(x, y_l))] - RM 实际从在 9 个公开 NLP 数据集(ARC, BoolQ, CoQA, DROP, MultiNLI, OpenBookQA, QuAC, RACE, Winogrande)上微调过的 6B GPT-3 初始化(主要是历史原因),从 GPT-3 或 SFT 初始化结果类似
- LR 不敏感:±50% 变化结果相近;但对 epoch 数敏感,多 epoch 迅速过拟合
- 训练后将标注员演示数据均值奖励归一化为 0(因为 RM loss 对奖励平移不变)
Step 3 — PPO Reinforcement Learning
用 RM 作为奖励信号,通过 PPO 算法进一步优化 SFT 模型。
- 环境为 bandit 环境:随机给出 prompt,模型生成回答,RM 打分即结束
- 添加 per-token KL 散度惩罚项(参考 SFT 模型),防止策略偏离太远、过拟合 RM
- PPO-ptx 变体:在 PPO 更新中混入预训练数据(pretraining mix),减少公开 NLP 基准上的性能退化
- 实验中 PPO-ptx 和纯 PPO 在人类偏好上差异不大,但 PPO-ptx 在公开基准上表现更好
PPO 超参数表(Appendix C.4):
| 超参数 | 值 |
|---|---|
| KL 惩罚系数 β | 0.02 |
| 预训练混合系数 γ | 27.8(PPO-ptx),0(纯 PPO) |
| 训练 episode 数 | 256k(去重后 ~31k prompt) |
| Batch size | 512(随机分 8 个 minibatch,单 inner epoch) |
| Minibatch size | 64 |
| PPO clip ratio | 0.2 |
| 采样温度(rollout) | 1 |
| GAE discount γ | 0(无折扣) |
| 权重 EMA 衰减率 | 0.992 |
| 学习率 warmup | 前 10 iteration,从峰值 1/10 开始,constant LR |
| Value function LR | 9e-6(1.3B/6B 策略),5e-6(175B 策略) |
| 价值函数 | 6B RM 初始化(所有模型大小统一) |
| 预训练数据比例 | 8× RL episode 数 |
目标函数(Equation 2):
objective(φ) = E(x,y)~D_πRL [rθ(x,y) − β·log(πRL/πSFT)] + γ·E_x~D_pretrain [log(πRL(x))]
- 第一项:RM 奖励 + KL 惩罚
- 第二项:预训练 log-likelihood(PPO-ptx 专属,纯 PPO 时 γ=0)
- 梯度累积:每个 minibatch 先算 PPO 梯度,再算预训练梯度,两者累加
计算开销对比:
- 175B SFT:4.9 petaflops/s-days
- 175B PPO-ptx:60 petaflops/s-days
- GPT-3 预训练:3,640 petaflops/s-days
- 对齐总成本仅约预训练的 1.6%
数据集详情
三阶段数据量(Table 6):
| 阶段 | 来源 | 训练集 | 验证集 |
|---|---|---|---|
| SFT | 标注员书写 | 11,295 | 1,550 |
| SFT | API 用户 | 1,430 | 103 |
| RM | 标注员书写 | 6,623 | 3,488 |
| RM | API 用户 | 26,584 | 14,399 |
| PPO | API 用户 | 31,144 | 16,185 |
- SFT ~13k 总计,RM ~33k 总计,PPO ~31k 总计
- RM 阶段每个 prompt 标注员对 K=4~9 个回答排序,实际比较对数量是 prompt 数的量级倍数
- API 提示类别分布(RM 训练集,Table 1):Generation 45.6% / Open QA 12.4% / Brainstorming 11.2% / Chat 8.4% / Rewrite 6.6% / Summarization 4.2% / Classification 3.5% / Other 3.5% / Closed QA 2.6% / Extract 1.9%
- 来源:OpenAI API Playground 用户提交给早期 InstructGPT 的 prompt(Playground 使用时会弹窗告知数据可能用于训练)
- 标注员自写 prompt:3 类 —— plain(自由发挥)、few-shot(给示例)、user-based(模拟 API 申请中的用户需求)
- 划分:按 user ID 划分 train/val/test,防止数据泄漏;基于长公共前缀去重;每用户 ≤200 条
- 训练集过滤 PII;>96% 英语
标注员信息:
- 约 40 名承包商(Upwork + ScaleAI)
- 筛选测试包含 4 项:敏感言论标注一致性、排序与研究员一致性、敏感 prompt 演示写作(1-7 Likert)、自我评估识别敏感内容的群体范围
- 软门槛:敏感言论标注一致性和排序一致性 ≥75%,演示写作 ≥6/7
- 训练期间优先 helpfulness(帮助性),最终评估时优先 truthfulness + harmlessness
- 预留了一组未参与训练的独立标注员(同一供应商但未做筛选测试),用于泛化评估
标注员间一致性(Section 3.4):
- 训练标注员互相一致性:72.6 ± 1.5%
- 预留(held-out)标注员互相一致性:77.3 ± 1.3%
- 对比:Stiennon et al. (2020) 研究员互相一致性 73 ± 4%
- 预留标注员对 InstructGPT 的偏好率与训练标注员相同,表明模型未过拟合到特定标注员
RM 跨标注员泛化(5-fold 交叉验证,Appendix E.2):
- 将标注员分 5 组,每组 3 个不同 seed 训练 6B RM
- 组内准确率(预测训练标注员偏好):72.4 ± 0.4%
- 组间准确率(预测未见过标注员偏好):69.6 ± 0.9%
- 表明 RM 对未见过标注员有泛化能力,虽然有小幅下降
标注员人口统计(该群体显然不具广泛代表性):
- 东南亚裔 52.6%,白人 31.6%,拉丁裔 15.8%,非裔 10.5%,东亚裔 5.3%
- 18-34 岁 73.7%
- 本科 52.6%,硕士 36.8%
- 主要英语使用者
消融实验关键发现
预训练混合 vs KL 惩罚(Figure 33, 34, Appendix E.6):
- 仅靠增大 KL 系数无法恢复性能退化:β 从 0.02 增大到 2.0(100 倍),SQuADv2 和 DROP 退化仍无法完全修复
- 预训练混合(γ ≥ 20)可以完全恢复退化,且验证奖励下降很小
- 结论:预训练数据分布对保持模型能力至关重要,仅约束策略偏离不够
KL 系数调优(Figure 36, Appendix E.7):
- β = 0(无 KL)或 β = 2(KL 过大)都会导致性能差
- 最优范围:0.01 ~ 0.02(默认 β = 0.02)
学习率扫描(Figure 38, Appendix E.9):
- 1.3B/6B:log-linear 扫描 2.55e-6 到 2.55e-5
- 无预训练混合时:LR > 8.05e-6 发散的模型分叉
- 有预训练混合时:对 LR 变化明显不那么敏感
- 175B:仅测试了 2.55e-6 和 3.74e-6,基于 Likert score 选择
Batch size / Minibatch size(Appendix E.11):
- 测试 64/128/256/512/1024,512 最优(基于人类评估)
- Minibatch:32 略优于 64,但最终选用 64(GPU 利用率更好)
预训练数据比例(Appendix E.11):
- 比例 4:预训练 log-likelihood 持续上升(梯度估计质量差)
- 比例 32:更好的 Likert score,但训练时间数倍增加
- 比例 8:速度与质量的最佳平衡点(训练时间加倍)
训练时长(Figure 35, Appendix E.11):
- 1.3B 模型训练 512k episode 不优于 256k,初始时超过 GPT-3 基线但后续退化略低于基线
PPO 初始化模型(Figure 37, Appendix E.8):
- 测试 SFT 1 epoch / 2 epoch,搭配 0% / 10% / 50% pretraining mix
- 10% pretraining mix 显著优于其他配置
- PPO 性能对具体选择不敏感(除 10% mix 外)
关键实验结果
人类偏好(API prompt 分布):
- 175B InstructGPT vs GPT-3:85 ± 3% 偏好 InstructGPT
- 175B InstructGPT vs few-shot GPT-3:71 ± 4% 偏好 InstructGPT
- 1.3B PPO-ptx 已显著优于 175B SFT 基线和 GPT-3 基线
- 改进幅度:GPT-3 < GPT-3 (prompted) < SFT < PPO ≈ PPO-ptx
具体改进维度(vs GPT-3):
- 更适合客服助手场景
- 更好地遵循显式约束(如”用两段以内回答”)
- 更少完全忽略指令
- 封闭域任务中虚构事实(hallucination)更少
公开 NLP 基准:
- TruthfulQA:显著优于 GPT-3
- RealToxicityPrompts:有害输出显著减少
- MMLU、HellaSwag、SQuADv2、DROP、翻译、摘要:性能退化极小
- PPO-ptx 变体在这些基准上优于纯 PPO
局限性
- 标注员偏差:约 40 人、主要是英语母语者、年龄和教育背景偏窄,不具广泛代表性
- 单次标注:为节省成本,大多数比较仅 1 人标注,无法衡量标注员间分歧
- 对齐矛盾:训练时优先 helpfulness,评估时优先 truthfulness+harmlessness,两者可能冲突
- 价值判断:对齐”人类偏好”本质上是将少数标注员的价值观嵌入模型
- 仍然犯错:InstructGPT 仍会犯简单错误,RLHF 不能完全消除问题
- 语言覆盖:>96% 英语,其他语言和编程任务表现未经充分评估
引用与数据
- 模型规模:1.3B、6B、175B 参数(GPT-3 架构)
- RM 仅使用 6B(175B RM 训练不稳定)
- PPO 算法:基于 Schulman et al. 2017
- 前序工作:Christiano et al. 2017(RLHF 起源)、Stiennon et al. 2020(摘要 RLHF)
- 标注员:约 40 人