用人类反馈微调大模型,InstructGPT 让 GPT-3 脱胎换骨
本文展示了一种通过利用人类反馈进行微调,使大语言模型在广泛任务中契合用户意图的方法。我们从一组标注员编写的提示以及通过OpenAI API提交的提示开始,收集了一个数据集,其中包含标注员展示的期望模型行为,利用这些数据通过监督学习对GPT-3进行微调。接着,我们收集模型输出的排名数据集,使用人类反馈强化学习对这个经过监督学习训练的模型进一步微调。我们将最终得到的模型称为InstructGPT。在针对提示分布进行的人工评估中,13亿参数的InstructGPT模型输出比1750亿参数的GPT-3更受青睐,尽管前者参数数量少了100倍。
高级方法论
训练的三个步骤图示
我们从一个预训练语言模型、一组期望模型产生契合输出的提示分布,以及一组经过训练的人类标注员开始。然后执行以下三个步骤:
- 步骤1:收集示范数据,并训练监督策略:标注员在输入提示分布上展示期望的行为。然后,我们使用监督学习在这些数据上对预训练的GPT-3模型进行微调。
- 步骤2:收集对比数据,并训练奖励模型:我们收集模型输出之间的对比数据集,标注员在其中指出对于给定输入更喜欢哪个输出。接着训练一个奖励模型来预测人类偏爱的输出。
- 步骤3:使用近端策略优化(PPO)算法根据奖励模型优化策略:我们将奖励模型(RM)的输出作为标量奖励。使用PPO算法对监督策略进行微调以优化这个奖励。
步骤2和步骤3可以不断迭代;基于当前最优策略收集更多对比数据,用于训练新的奖励模型,进而训练新的策略。
数据集
我们的提示数据集主要由提交到OpenAI API的文本提示组成,特别是那些在Playground界面上使用早期版本InstructGPT模型(通过在部分示范数据上进行监督学习训练得到)生成的提示。
为了训练最初的InstructGPT模型,我们让标注员自己编写提示。这是因为我们需要一个初始的类似指令的提示来源来启动这个过程,而这类提示在API上通常不会提交给常规的GPT-3模型。我们让标注员编写三种类型的提示:
- 普通提示:我们只是要求标注员想出任意任务,同时确保任务具有足够的多样性。
- 少样本提示:我们要求标注员想出一条指令,以及该指令对应的多个查询/响应对。
- 基于用户的提示:在OpenAI API的候补名单申请中有许多使用案例。我们要求标注员根据这些使用案例想出提示。
API提示数据集的用例类别分布
我们的训练任务来自两个来源:(1)标注员编写的提示数据集;(2)提交到API上早期InstructGPT模型的提示数据集。
对于每个自然语言提示,任务通常直接通过自然语言指令指定,但也可能通过少样本示例或隐式延续间接指定。
模型
我们从GPT-3预训练语言模型开始。这些模型在广泛的互联网数据分布上进行训练,能够适应各种下游任务,但行为表现难以精确刻画。从这些模型出发,我们使用三种不同的技术训练模型:监督微调(SFT)、奖励建模(RM)和强化学习(RL)。
- 监督微调(SFT):GPT-3模型通过使用标注员的示范数据进行监督学习来微调。尽管在验证集上存在过拟合,但更多轮次的训练仍能提升性能。
- 奖励建模(RM):该技术涉及训练一个模型,基于提示和响应生成标量奖励。为节省计算资源,作者使用60亿参数的奖励模型而非1750亿参数的模型。RM模型在两个模型输出的对比数据集上进行训练,使用交叉熵损失。为加快对比数据收集,标注员对4到9个响应进行排序,为每个提示生成多个对比。将所有对比作为单个批次元素进行训练,提高了计算效率并防止过拟合。
RM训练后,使用偏差对奖励模型进行归一化,使标注员的示范获得平均分为0的分数。进行这种归一化是为了解决奖励偏移问题。
奖励模型的损失函数
- 强化学习(RL):在强化学习阶段,SFT模型在多臂老虎机环境中使用近端策略优化(PPO)进一步微调。环境提供一个随机提示并期望得到一个响应,这个响应由奖励模型进行评估。为了减轻奖励模型的过度优化,会添加来自SFT模型的每个token的KL散度惩罚项。价值函数由RM初始化。
RL训练中的最大化目标函数
PPO模型与SFT模型和GPT-3基线进行比较。带有少样本前缀以开启指令跟随模式的GPT-3也参与比较。此外,InstructGPT还与在包含多种NLP任务和自然语言指令的FLAN和T0数据集上微调1750亿参数GPT-3的结果进行比较。为每个数据集选择在验证集上表现最佳的检查点。
结果
API分布上的结果
在不同模型规模下,标注员明显更偏爱InstructGPT的输出而非GPT-3的输出。使用少样本提示、监督学习和对比数据训练方法可以提升GPT-3的性能,但InstructGPT仍然更胜一筹。与GPT-3相比,InstructGPT模型被认为更合适、更可靠且更易于控制。未参与训练的标注员的偏好与训练标注员的偏好一致,这表明InstructGPT模型不会过度拟合特定偏好。研究中使用的奖励模型能够准确预测标注员的偏好。像FLAN和T0这样的公开NLP数据集无法反映大语言模型在实际应用中的使用情况。InstructGPT比这些数据集上微调的GPT-3模型表现更好,这凸显了在训练大语言模型时,多样化和开放式生成任务的必要性。
公开NLP数据集上的结果
- 真实性:InstructGPT的PPO模型在生成真实且信息丰富的输出方面,相比GPT-3有虽小但显著的提升,即便没有明确指示模型要说真话,这种提升依然存在。不过,13亿参数的PPO-ptx模型比相同规模的GPT-3模型表现稍差。在封闭领域任务中,InstructGPT的PPO模型比GPT-3更少出现幻觉(编造信息)的情况。
- 毒性:当提供礼貌提示时,InstructGPT模型在生成低毒性输出方面比GPT-3有所改进。然而,在没有礼貌提示的情况下,这种优势消失,InstructGPT的表现与GPT-3类似。当明确要求生成有毒输出时,InstructGPT模型比GPT-3更具毒性。这些发现得到了人工评估的支持。
- 偏差:InstructGPT模型在偏差方面并未比GPT-3表现更好。当PPO-ptx模型被要求表现得礼貌时,它的熵更低且偏差更高。偏差模式并不清晰,这表明被指示的模型对其输出更有把握,无论是否表现出刻板行为。
通过添加预训练更新来修改基于人类反馈的强化学习(RLHF)微调过程,有助于缓解性能下降,甚至在某些数据集上超越GPT-3。然而,在其他数据集上解决性能下降问题仍需更多工作。此外,研究发现,混入预训练更新在减少性能下降方面比增加KL系数更有效。将KL模型从PPO初始化改为GPT-3会产生类似结果。
定性结果
InstructGPT模型有潜力很好地泛化到微调分布之外的指令。InstructGPT可以遵循非英语语言的指令,并且能够执行代码总结和问答等任务,即便这些任务在训练数据中只占一小部分。虽然1750亿参数的PPO-ptx模型在回答与代码相关的问题以及遵循其他语言的指令方面表现出色,但它经常用英语生成回复,而不管指令语言是什么。相比之下,GPT-3可以执行这些任务,但需要更具体的提示,并且在这些领域很少能准确遵循指令。
然而,InstructGPT仍然存在一些局限性。它有时会犯简单错误,比如假设错误的前提为真,或者对有明确单一答案的问题给出多个答案。当指令包含多个明确约束或具有挑战性的提示(如用指定数量的句子写摘要)时,模型也会遇到困难。这些问题可以通过对抗性数据收集来缓解。
论文
Training language models to follow instructions with human feedback
## 推荐阅读
1. DeepSeek-R1的顿悟时刻是如何出现的? 背后的数学原理
2. 微调 DeepSeek LLM:使用监督微调(SFT)与 Hugging Face 数据
3. 使用 DeepSeek-R1 等推理模型将 RAG 转换为 RAT
4. DeepSeek R1:了解GRPO和多阶段训练
5. 深度探索:DeepSeek-R1 如何从零开始训练
6. DeepSeek 发布 Janus Pro 7B 多模态模型,免费又强大!
本文由mdnice多平台发布
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。