对话代理的用武之地?
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 的详细信息,InstructGPT 是 OpenAI 的一个指令微调模型,被认为是 ChatGPT 的基础。
LaMDA | BlenderBot 3 | Sparrow | ChatGPT/ InstructGPT | 助手 | |
---|---|---|---|---|---|
组织 | Meta | DeepMind | OpenAI | Anthropic | |
访问 | 封闭 | 开放 | 封闭 | 受限 | 封闭 |
大小 | 137B | 175B | 70B | 175B | 52B |
预训练 基础模型 |
未知 | OPT | Chinchilla | GPT-3.5 | 未知 |
预训练语料库大小(# token) | 2.81T | 180B | 1.4T | 未知 | 400B |
模型可以 访问网络 |
✔ | ✔ | ✔ | ✖️ | ✖️ |
监督 微调 |
✔ | ✔ | ✔ | ✔ | ✔ |
微调 数据量 |
质量:6.4K 安全:8K 接地:4K IR:49K |
20 个 NLP 数据集,范围从 1.8 万到 120 万 | 未知 | 12.7K(对于 InstructGPT,ChatGPT 可能更多) | 150K + LM 生成数据 |
RLHF | ✖️ | ✖️ | ✔ | ✔ | ✔ |
手工编写的安全规则 | ✔ | ✖️ | ✔ | ✖️ | ✔ |
评估标准 | 1. 质量(合理性、特异性、趣味性) 2. 安全性(包括偏见) 3. 接地性 |
1. 质量(吸引力、知识运用) 2. 安全性(毒性、偏见) |
1. 对齐(有帮助、无害、正确) 2. 证据(来自网络) 3. 违规行为 4. 偏见和刻板印象 5. 可信赖性 |
1. 对齐(有帮助、无害、真实性) 2. 偏见 |
1. 对齐(有帮助、无害、诚实) 2. 偏见 |
用于数据标注的众包平台 | 美国供应商 | 亚马逊 MTurk | 未知 | Upwork 和 Scale AI | Surge AI、亚马逊 MTurk 和 Upwork |
我们观察到,尽管训练数据、模型和微调存在许多差异,但也有一些共同点。所有上述聊天机器人的共同目标是指令遵循,即遵循用户指定的指令。例如,指示 ChatGPT 撰写一首关于微调的诗歌。
从预测文本到遵循指令:
通常,基础模型的语言建模目标不足以让模型以有用的方式学习遵循用户的指示。模型创建者使用指令微调 (IFT),这涉及在非常多样化的任务(除了情感、文本分类、摘要等经典 NLP 任务)上,基于书面指令的演示来微调基础模型。这些指令演示由三个主要组件组成:指令、输入和输出。输入是可选的,有些任务只需要指令,例如上面 ChatGPT 示例中的开放式生成。如果存在输入和输出,它们就构成了一个实例。对于给定的指令,可以有多个输入和输出实例。请参阅下文示例(摘自 [Wang et et al., '22])。
IFT 的数据通常是人工编写的指令和使用语言模型引导的指令实例的集合。对于引导,LM 在少样本设置中,通过示例进行提示(如上图所示),并被指示生成新的指令、输入和输出。在每一轮中,模型都会被提示从人工编写和模型生成的样本中选择的样本。人工和模型对数据集创建的贡献程度是一个光谱;见下图。
一端是纯模型生成的 IFT 数据集,例如 Unnatural Instructions(Honovich 等人,'22),另一端是人工制作指令的大规模社区工作,如 Super-natural instructions(Wang 等人,'22)。介于两者之间的是使用少量高质量种子数据集然后进行引导的工作,例如 Self-instruct(Wang 等人,'22)。另一种整理 IFT 数据集的方法是获取现有的高质量众包 NLP 数据集,包括提示,并使用统一的模式或多样化的模板将其转换为指令。这方面的工作包括 T0(Sanh 等人,'22)、Natural instructions 数据集(Mishra 等人,'22)、FLAN LM(Wei 等人,'22)和 OPT-IML(Iyer 等人,'22)。
安全地遵循指令
然而,经过指令微调的语言模型可能并非总是生成有帮助和安全的响应。这类行为的例子包括通过总是给出无用的响应(例如“抱歉,我不明白。”)或对敏感主题的用户输入生成不安全的响应来逃避。为了减轻这种行为,模型开发者使用监督微调(SFT),在高质量的人工标注数据上对基础语言模型进行微调,以提高其帮助性和无害性。例如,请参见下表,该表取自 Sparrow 论文(附录 F)。
SFT 和 IFT 密切相关。指令微调可以看作是监督微调的一个子集。在最近的文献中,SFT 阶段通常用于安全主题,而不是在 IFT 之后进行的指令特定主题。未来,这种分类和划界应该会发展出更清晰的用例和方法。
Google 的 LaMDA 也根据一组规则(附录 A)对带安全标注的对话数据集进行了微调。这些规则通常由模型创建者预先定义和开发,涵盖广泛的主题,包括危害、歧视和错误信息。
模型微调
另一方面,OpenAI 的 InstructGPT、DeepMind 的 Sparrow 和 Anthropic 的 Constitutional AI 在一种称为人类反馈强化学习(RLHF)的设置中,使用人类偏好标注。在 RLHF 中,模型响应集根据人类反馈进行排序(例如,选择一个优于另一个的文本片段)。接下来,在一个偏好模型上训练这些标注的响应,以返回 RL 优化器的标量奖励。最后,对话代理通过强化学习训练以模拟偏好模型。有关 RLHF 的更多详细信息,请参阅我们之前的博客文章。
思维链 (CoT) 提示 (Wei et al., '22) 是一种特殊的指令演示,它通过从对话代理中引出逐步推理来生成输出。用 CoT 微调的模型使用带有逐步推理的人工标注的指令数据集。它就是著名提示语让我们一步步思考的起源。下面的示例摘自 Chung et al., '22。橙色突出显示指令,粉红色显示输入和输出,蓝色是 CoT 推理。
经 CoT 微调的模型在涉及常识、算术和符号推理的任务中表现出更好的性能,如 Chung 等人,'22 所示。
CoT 微调也被证明对无害性非常有效(有时甚至优于 RLHF),并且在面对敏感提示时模型不会回避并生成“抱歉,我无法回答这个问题”,如 Bai 等人,'22 所示。更多示例请参见他们的论文附录 D。
要点:
- 与预训练数据相比,指令微调只需要极少的数据(数百个量级)。
- 监督微调使用人工标注使模型输出更安全和有用。
- CoT 微调提高了模型在需要逐步思考的任务上的性能,并使其在敏感话题上不那么回避。
对话代理的下一步
本博客总结了许多关于如何使对话代理有用的现有工作。但仍有许多未解决的问题有待探索。我们在此列举其中一些。
- 强化学习在从人类反馈中学习方面有多重要?我们能否通过在 IFT 或 SFT 中使用更高质量的数据进行训练来获得 RLHF 的性能?
- Sparrow 中的 SFT+RLHF 与 LaMDA 中仅使用 SFT 进行安全性比较如何?
- 鉴于我们拥有 IFT、SFT、CoT 和 RLHF,预训练的必要性如何?权衡是什么?人们应该使用哪些最好的基础模型(包括公开可用的和非公开的)?
- 本文中引用的许多模型都经过了精心设计,采用了红队方法,工程师专门寻找故障模式并根据发现的问题影响未来的训练(提示和方法)。我们如何系统地记录这些方法的效果并重现它们?
PS:如果您发现本博客中的任何信息有缺失或不正确,请告知我们。
引用
Rajani et al., "对话代理的用武之地?", 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},
}