跳转到内容

输入关键词开始搜索

    资料摘要:InstructGPT

    资料摘要更新 2026-07-19置信度 high待阅读原始来源 ↗#深度#基础#长青#大模型#对齐

    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 初始化(所有模型大小统一)
    预训练数据比例 RL episode 数

    目标函数(Equation 2):

    L(ϕ)=E(x,y)DπRL ⁣[rθ(x,y)βlogπRL(yx)πSFT(yx)]+γExDpretrain ⁣[logπRL(x)]\mathcal{L}(\phi)=\mathbb{E}{(x,y)\sim D{\pi_{\mathrm{RL}}}}!\left[r_\theta(x,y)-\beta\log\frac{\pi_{\mathrm{RL}}(y\mid x)}{\pi_{\mathrm{SFT}}(y\mid x)}\right]+\gamma,\mathbb{E}{x\sim D{\mathrm{pretrain}}}!\left[\log\pi_{\mathrm{RL}}(x)\right]

    • 第一项: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
    1. 标注员偏差:约 40 人、主要是英语母语者、年龄和教育背景偏窄,不具广泛代表性
    2. 单次标注:为节省成本,大多数比较仅 1 人标注,无法衡量标注员间分歧
    3. 对齐矛盾:训练时优先 helpfulness,评估时优先 truthfulness+harmlessness,两者可能冲突
    4. 价值判断:对齐“人类偏好”本质上是将少数标注员的价值观嵌入模型
    5. 仍然犯错:InstructGPT 仍会犯简单错误,RLHF 不能完全消除问题
    6. 语言覆盖:>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 人