随着 ChatGPT 的出现以及随之而来的广泛讨论,RLHF、SFT、IFT、CoT 等晦涩的缩略词出现在公众面前,这都归功于 ChatGPT 的成功。这些晦涩的缩略词是什么?为什么它们如此重要?本文作者查阅了所有关于这些主题的重要论文,进行了分类总结。
ChatGPT 并不是第一个基于语言模型(LM)的对话智能体,事实上,许多机构在 OpenAI 之前发布过语言模型对话智能体,包括 Meta BlenderBot、Google LaMDA、DeepMind 的 Sparrow 和 Anthropic Assistant。一些机构也宣布建立开源聊天机器人的计划,并公开了路线图(如 LAION 的 Open-Assistant)。肯定还有其它机构在做同样的工作,只是没有宣布。
下表根据上面提到的 AI 聊天机器人是否可公开访问、训练数据、模型架构和评估的详细信息,对它们进行了比较。ChatGPT 没有相关数据,这里使用的是 InstructGPT 的资料,它是 OpenAI 的一个微调模型,被认为是 ChatGPT 的基础。
尽管在训练数据、模型和微调方面存在许多差异,但这些聊天机器人也存在一些共性 —— 指令遵循(instruction following),即根据用户的指令,给出响应。例如让 ChatGPT 写一首关于微调的诗。
从预测文本到遵循指令
通常而言,基础语言建模的目标不足以让模型高效地遵循用户的指示。模型创建者还使用指令微调(Instruction Fine-Tuning,IFT),它可以在多样化任务上对基本模型进行微调,还能应用在情感分析、文本分类、摘要等经典 NLP 任务。
IFT 主要由三个部分组成:指令、输入和输出。输入是可选的,有些任务只需要指令,如上面的 ChatGPT 示例。输入和输出构成实例(instance)。给定的指令可以有多个输入和输出。相关示例如下([Wang et al., ‘22])。
IFT 的数据通常使用人类的指令和语言模型 bootstrapped 的指令集合。对于 bootstraping,LM 会在零样本的情况下根据 prompt,生成新的指令、输入和输出。在每一轮中,模型都会得到从人类编写和生成模型中选择的样本的 prompt。人类和模型贡献数据集的情况可以用频谱表示,如下图所示。
一种是纯模型生成的 IFT 数据集如 Unnatural Instructions,另一种是集社区努力、手动创建的指令如 Super natural Instructions。位于这两者之间,选用高质量种子数据集然后进行 bootstrap 如 Self-instruct。为 IFT 收集数据集的另一种方法是将现有高质量众包 NLP 数据集用于各种任务(包括 prompting),并使用统一的模式或不同的模板将这些数据集作为指令,相关工作包括 T0、Natural instructions 数据集、FLAN LM 和 OPT-IML。
安全遵循指令
LM 使用微调后的指令,可能并不总是生成有用安全的响应。这种行为的示例包括无效回应(托词),总是给出诸如「对不起,我不明白」之类的无效回答,或者对用户关于敏感话题的输入做出不安全的回应。
为了解决这种问题,模型开发人员使用监督式微调(Supervised Fine-tuning, SFT),在高质量的人类标记数据上微调基础语言模型,以实现有效和安全的响应。
SFT 和 IFT 紧密相连。指令调优可以看作是监督式微调的子集。在最近的文献中,SFT 阶段通常用于安全主题,而不是在 IFT 之后进行的指令特定主题。未来这种分类和描述会有更清晰的用例和方法。
模型微调
另一方面,OpenAI 的 InstructGPT、DeepMind 的 Sparrow 和 Anthropic 的 ConstitutionalAI 均使用从人类反馈中强化学习(reinforcement learning from human feedback, RLHF)的技术。在 RLHF 中,模型响应基于人类反馈(如选择一个更好的答案)进行排序,然后用这些带注释的响应训练模型,以返回 RL 优化器的 scalar 奖励,最后通过强化学习训练对话智能体来模拟偏好模型。
思维链(Chain-of-thought, CoT)是指令演示的特殊情况,通过从对话智能体中引出逐步推理生成输出。用 CoT 进行微调的模型使用带有逐步推理的人类注释的指令数据集。如下示例所示,橙色标记代表指令,粉色标记代表输入和输出,蓝色标记代表 CoT 推理。
用 CoT 来微调的模型在涉及常识、算术和符号推理的任务上表现得更好。CoT 进行微调也显示出对实现无害性非常有效(有时比 RLHF 做得更好),并且模型不会回避并产生「对不起,我无法回答这个问题」等回复。
要点总结
本文要点总结如下:
1、 与预训练数据相比,只需要非常小的一部分数据来对指令进行微调。
2、 监督式微调使用人工标注使模型输出更安全和更有帮助。
3、 CoT 微调提高模型在逐步思考任务上的性能,并减少了它们在敏感话题上的无效响应或回避不答。
最后,作者对未来对话智能体的发展给出了自己的一些思考。
1、 RL 在从人类反馈中学习有多重要?可以通过 IFT 或 SFT 中的高质量数据训练获得与 RLHF 一样的性能吗?
2、 与在 LaMDA 中使用 SFT 相比,在 Sparrow 中使用 SFT+RLHF 的安全性如何?
3、 IFT、SFT、CoT 和 RLHF,需要怎样程度的预训练?tradeoff 是什么?应该使用的最好的基础模型是什么?
4、 文中介绍的许多模型都是经过精心设计,工程师们专门收集导致失败的模式,并根据已处理的问题改善未来的训练(prompts 和方法)。要如何系统地记录这些方法的效果并重现它们?
原文链接:https://huggingface.co/blog/dialog-agents