无监督训练的gpt3(GPT3——少样本示例推动下的通用语言模型雏形) 虽然具有强大的能力,但是在遵循用户意图/指令方面存在不足,如生成虚假、有毒或无用内容,依赖少样本提示等方法的引导。
这是因为其无监督训练目标与 “遵循用户指令并保障安全有益” 的目标不一致。也许无监督训练更多的是让语言模型具备了海量知识,但对于怎么遵循用户指令给出有益回答,语言模型还需要进一步学习。openai随后推出的 InstructGPT(Training language models to follow instructions with human fdeeedback) ,通过人类反馈微调(fine-tuning with human feedback) gpt3, 让语言模型做到这点。
方法
作者结合监督学习和人类反馈强化学习(RLHF)微调 GPT-3。
- 先收集标注员撰写的提示和 OpenAI API 提交的提示(注意:提示,任务描述,提示词等用语意思相近,文章根据原始论文的用语尽量还原,如gpt2的论文就没有用提示/提示词这种说法,InstructGPT论文逐渐统一用提示和提示词的说法,而不再用任务描述之类的语言),标注回复,形成示范数据集,用监督学习微调 GPT-3,得到SFT-GPT3;
- 接着收集不同模型输出的比较数据(对于每个输入,多个模型给出输出,标注员按照评估标准,标注出这些输出的排名),训练奖励模型RM;
- 最后以SFT-GPT3 为起点,用近端策略优化算法(PPO)基于奖励模型优化策略,得到InstructGPT”
下图给出了这三步的说明:
数据集
训练模型所使用的数据集有两个来源:
- openai 雇佣的标注人员(大约40人)会标注一部分数据,包括提示词(prompts)及答案
- openai的用户通过openai api/ openai 早期的实验网站提交的提示词
根据三种训练任务。这些数据集分为三类:
- 监督微调(SFT)数据集,带有标注者的标注,用于训练我们的 SFT 模型;
- 偏好模型(RM)数据集,带有标注者对模型输出的排序标注,用于训练我们的 RM 模型
- 近端策略优化(PPO)数据集,没有任何人工标注,用作基于人类反馈的强化学习(RLHF)微调的输入。SFT 数据集包含约 1.3 万个训练提示(来自 API 和标注者编写),RM 数据集有 3.3 万个训练提示(来自 API 和标注者编写),PPO 数据集有 3.1 万个训练提示(仅来自 API).
下表展示了数据集的分布和示例:
训练
1 SFT阶段
监督微调比较明了,模型GPT3和监督数据集前面都已说明,用经典语言模型建模+交叉熵损失优化,使模型拟合标注提示和答案。
2 RM模型训练
SFT训练好后,利用SFT得到的模型对同一个提示,给出多个回复,再由标注人员对回复给出排序标注,收集到RM训练所用数据集。
利用这个数据集训练RM模型,RM的输入是提示和回复,输出是奖励值(RM模型架构 接近GPT3架构,替换GPT3架构的输出层为投影层,RM模型接受提示和回复后输出标量而不是输入序列输出序列)。 给定一个提示x和两个回复 y w y_w yw和 y l y_l yl,输入到RM模型得到两个对应的奖励值。训练目标是使RM模型能够给标注人员觉得好的回复 y w y_w yw更高的奖励值。损失函数使用常见的成对损失函数。
优化目标为:
3 PPO 和 PPO-ptx强化学习
作者使用PPO和PPO-ptx算法,对SFT-GPT3进行微调,使新模型能够更容易输出 被奖励模型认为好的回复,也就是符合人类喜好/标注员喜好的输出。PPO-ptx算法的优化目标为:
第一项是利用奖励模型计算强化学习模型输出的奖励,使强化学习模型的输出最大化奖励模型的奖励值。第二项(超参 beta 控制的项)是衡量SFT-GPT3和强化学习模型的输出分布差异,使强化学习模型输出不至于偏离SFT-GPT3输出太远(强化学习会损害SFT-GPT3性能,第一项不能过度优化),第三项是衡量强化学习模型生成预训练数据集中文本的能力,使强化学习模型不要遗忘预训练阶段学到的知识。
PPO算法是PPO-ptx算法的简化,优化目标为上述公式去掉最后一项。
实验评估
得到 InstructGPT后,在不同的提示词下(左图:用户通过 API 提交给 GPT3 模型的提示词的结果;右图:通过 API 提交给 InstructGPT模型的提示词结果),作者比较了不同模型回复的对比结果,所有模型都会跟SFT-GPT的回复比较,然后由标注人员投票哪个回复更好。
标注人员明显更喜欢 InstructGPT的结果,InstructGPT的胜率高。
标注员还在几个更具体的维度上也对 InstructGPT 的输出给予了好评。遵循限制,指令遵循,幻觉,回复恰当。具体来说,与 GPT-3 相比,InstructGPT 的输出在客户助手场景中更合适,更常遵循指令中定义的明确限制(例如 “答案篇幅不超过两段”),更不容易完全不遵循正确的指令,并且在封闭领域的任务中编造事实(“产生幻觉”)的情况更少。这些结果表明,InstructGPT 模型比 GPT-3 更可靠,也更容易控制。
回复示例
作者还给出了gpt3和instrcutGPT的部分经过特意挑选的回复示例,通过观察这些示例,我们发现instrcutGPT确实完成了进化。
社会影响
通过SFT和人类反馈强化学习(RLHF)的方法,InstructGPT 显著提升了语言模型的安全性和实用性,减少了生成虚假、有毒或无用内容的可能性。这对于构建更值得信赖的 AI 系统至关重要。
然而,InstructGPT 的进步也带来了一些潜在的社会挑战。首先,模型的训练依赖人类标注员的偏好,而这些偏好可能受到公司价值观、文化、地域或个人主观性的影响,导致模型输出可能存在隐性偏见。
总结
通过监督微调(SFT)和基于人类反馈的强化学习(RLHF),GPT3得以进化为InstructGPT,显著提升了遵循用户意图和指令的能力,同时改善了输出内容的安全性和实用性。
这一工作开启了基于人类反馈微调的大模型新范式。
后续
- InstructGPT 的成功为 ChatGPT 的诞生奠定了关键技术基础。不到一年后, 2022 年 11 月 30 日ChatGPT 由 OpenAI 正式推出。
- InstructGPT 是 OpenAI 最后一篇公开的核心技术论文,之后 OpenAI 减少了核心技术论文的发表。