什么使对话代理程序有用?
What makes chatbot useful?
ChatGPT背后的技术:RLHF、IFT、CoT、红队测试等
本文已翻译成简体中文。
几周前,ChatGPT应运而生,引发了公众对一系列晦涩缩写的讨论:RLHF、SFT、IFT、CoT等,这些都是ChatGPT成功的原因。这些晦涩的缩写是什么,为什么它们如此重要?我们调查了所有关于这些主题的重要论文,对这些研究进行分类,总结已经取得的成果,并分享现在仍需展示的内容。
让我们首先看一下基于语言模型的对话代理的现状。ChatGPT并不是第一个,事实上,许多组织在OpenAI之前就已经发布了他们的语言模型对话代理,包括Meta的BlenderBot、Google的LaMDA、DeepMind的Sparrow和Anthropic的Assistant(这个代理的继续开发也被称为Claude,没有完全归属)。一些团队还宣布了他们构建开源聊天机器人的计划,并公开分享了路线图(LAION的Open Assistant);其他团队肯定也在这样做,只是还没有宣布。
下表比较了这些基于AI的聊天机器人的公共访问、训练数据、模型架构和评估方向的细节。由于ChatGPT没有文档,所以我们分享了InstructGPT的细节,它是OpenAI的一个指令微调模型,被认为是ChatGPT的基础。
我们观察到,尽管在训练数据、模型和微调方面存在许多差异,但也存在一些共同点。所有上述聊天机器人的一个共同目标是指令跟随,即遵循用户指定的指令。例如,指示ChatGPT进行微调后写一首诗。
从预测文本到遵循指令
通常,基础模型的语言建模目标对于模型以有益的方式遵循用户的指导来说是不够的。模型创建者使用指令微调(IFT),在非常多样化的任务集合上,对基础模型进行指令书面指导的微调,除了情感、文本分类、摘要等经典自然语言处理任务。这些指令演示由三个主要组成部分组成:指令、输入和输出。输入是可选的,有些任务只需要指令,例如ChatGPT中的开放式生成。当存在输入和输出时,它们形成一个实例。对于给定的指令,可以有多个输入和输出实例。下面是一些示例(摘自[Wang等人,’22])。
IFT的数据通常是一组人工编写的指令和使用语言模型引导生成的指令实例。对于引导生成,通过从人工编写和模型生成的示例中选择样本,提示LM(如上图所示),以few-shot方式进行微调,生成新的指令、输入和输出。在每一轮中,模型会被提示使用来自人工编写和模型生成的样本。人类和模型对创建数据集的贡献程度是一个连续的范围;请参见下图。
在一端是纯模型生成的IFT数据集,例如非自然指令(Honovich等人,’22),另一端是大型社区努力的手工制作指令,如超自然指令(Wang等人,’22)。在这两者之间,还有使用一小组高质量种子数据集进行引导生成的工作,例如自我指导(Wang等人,22)。为了获得IFT数据集,还可以将现有的高质量众包NLP数据集(包括提示)视为使用统一模式或多样化模板的指令。这一系列工作包括T0(Sanh等人,’22)、自然指令数据集(Mishra等人,’22)、FLAN LM(Wei等人,’22)和OPT-IML(Iyer等人,’22)。
安全遵循指令
然而,经过指令微调的语言模型不一定总是会生成******有帮助******和******安全******的响应。这种行为的示例包括始终给出不帮助的回答,如“对不起,我不理解。”,或对敏感话题上用户输入生成不安全的回应。为了缓解这种行为,模型开发者使用监督微调(SFT),在高质量的人工注释数据上对基础语言模型进行微调,以提高有益性和无害性。例如,见下表,摘自Sparrow论文(附录F)。
SFT 和 IFT 之间的联系非常密切。指令微调可以看作是有监督微调的子集。在最近的文献中,SFT 阶段通常被用于安全主题,而不是指令特定的主题,这是在 IFT 之后进行的。在未来,这种分类和划分应该发展成更清晰的用例和方法论。
Google 的 LaMDA 也是在基于一组规则(附录 A)的安全注释的对话数据集上进行微调的。这些规则通常是由模型创建者预先定义和开发的,并涵盖了包括伤害、歧视、错误信息等广泛的主题。
对模型进行微调
另一方面,Open AI 的 InstructGPT、DeepMind 的 Sparrow 和 Anthropic 的 Constitutional AI 在一种称为从人类反馈中进行强化学习(RLHF)的设置中使用了人类偏好的人工注释。在 RLHF 中,一组模型响应根据人类反馈进行排序(例如,选择一个优于另一个的文本片段)。接下来,一个偏好模型在这些注释的响应上进行训练,以返回 RL 优化器的标量奖励。最后,通过强化学习训练对话代理模拟偏好模型。有关更多详细信息,请参阅我们之前关于 RLHF 的博客文章。
思维链(CoT)提示(Wei et al., ’22)是一种特殊情况的指令演示,它通过引导对话代理的逐步推理生成输出。使用 CoT 进行微调的模型使用带有逐步推理的人工注释的指令数据集。它是著名提示“**************************让我们逐步思考**************************”的起源。下面的示例摘自 Chung 等人的’22年论文。橙色突出显示指令,粉色显示输入和输出,蓝色是 CoT 推理。
经过 CoT 微调的模型在涉及常识、算术和符号推理的任务上表现得更好,如 Chung 等人的’22年论文中所述。
通过 CoT 进行微调还显示出在无害性方面非常有效(有时比 RLHF 做得更好),而不会使模型回避,并为敏感提示生成“对不起,我无法回答这个问题”的 Bai 等人的’22年论文中所示。请参阅他们论文的附录 D 获取更多示例。
要点:
- 与预训练数据相比,在指令微调(数量级为几百个)中只需要极小部分数据。
- 有监督微调使用人类注释使模型输出更安全和有用。
- 通过 CoT 进行微调可以提高在需要逐步思考的任务上的模型性能,并使其在敏感话题上更不回避。
对话代理的下一步
本博客总结了许多关于使对话代理有用的现有工作。但仍有许多未探索的问题。我们在这里列出其中一些。
- 在从人类反馈中学习中,RL 的重要性有多大?我们能否通过在 IFT 或 SFT 中训练高质量数据来获得 RLHF 的性能?
- SFT+ RLHF(如 Sparrow)与仅使用 SFT(如 LaMDA)相比在安全性方面有何区别?
- 在拥有 IFT、SFT、CoT 和 RLHF 的情况下,需要多少预训练?有哪些权衡?人们应该使用哪些最佳基础模型(无论是公开可用还是不可用)?
- 本文中引用的许多模型都经过精心设计的红队测试,工程师专门搜索故障模式,并根据揭示的问题影响未来的训练(提示和方法)。我们如何系统地记录这些方法的效果并进行复现?
PS:如果您发现本博客中有任何遗漏或错误的信息,请告诉我们。
****************引用****************
Rajani et al., "What Makes a Dialog Agent Useful?", Hugging Face Blog, 2023.
BibTeX 引用:
@article{rajani2023ift,
author = {Rajani, Nazneen and Lambert, Nathan and Sanh, Victor and Wolf, Thomas},
title = {What Makes a Dialog Agent Useful?},
journal = {Hugging Face Blog},
year = {2023},
note = {https://huggingface.co/blog/dialog-agents},
}