对话代理有用的因素是什么?技术分析
TL;DR
现代对话代理通过对预训练的基础语言模型应用一系列微调技术,将其从简单的文本预测转变为指令遵循。实用性的主要驱动因素包括用于任务多样性的指令微调 (IFT)、用于安全性和有用性的监督微调 (SFT)、用于偏好对齐的来自人类反馈的强化学习 (RLHF),以及用于复杂推理的链式思考 (CoT)。
对话代理的比较格局
虽然 ChatGPT 让这些技术广为人知,但多个组织已经使用不同的训练数据和对齐方法开发了类似的对话代理。
| 模型 | 组织 | 规模 | 预训练基础 | 网页访问 | RLHF |
|---|---|---|---|---|---|
| LaMDA | 137B | Unknown | Yes | No | |
| BlenderBot 3 | Meta | 175B | OPT | Yes | No |
| Sparrow | DeepMind | 70B | Chinchilla | Yes | Yes |
| ChatGPT/InstructGPT | OpenAI | 175B | GPT-3.5 | No | Yes |
| Assistant | Anthropic | 52B | Unknown | No | Yes |
这些模型的共同目标是指令遵循,这使得代理能够执行用户指定的任务,例如写诗或摘要文本。
指令微调 (IFT)
指令微调将基础模型的目标从预测下一个 token 转变为遵循特定指令。该过程涉及在包含三部分的示例上微调模型:指令、可选输入和输出。
IFT 的数据来源
IFT 数据集通过人类和模型贡献的不同方式创建:
- Purely Model-Generated: 数据集如 Unnatural Instructions 完全由语言模型生成。
- Bootstrapped: Self-instruct 使用少量高质量种子数据生成新的指令和输出。
- Hand-Crafted: Super-natural instructions 依赖大规模社区努力提供的人类编写数据。
- Template-Based: 项目如 T0、FLAN LM 和 Natural Instructions 将现有 NLP 数据集转换为统一的指令模式。
安全性与对齐技术
为了防止模型回避或生成不安全内容,开发者采用特定的对齐策略。
监督微调 (SFT)
SFT 在高质量、人工标注的数据上微调基础模型,重点关注有用性和无害性。虽然 IFT 是 SFT 的子集,但在初始指令微调之后,SFT 阶段常被专门用于安全性主题。
来自人类反馈的强化学习 (RLHF)
InstructGPT、Sparrow 和 Anthropic 的 Constitutional AI 使用 RLHF 通过三步过程将模型与人类偏好对齐:
- 人类标注者对多个模型回复进行排序。
- 基于这些排序训练偏好模型,以提供标量奖励。
- 通过强化学习训练对话代理,以最大化该奖励。
使用链式思考 (CoT) 改进推理
链式思考提示和微调能够让代理进行逐步推理。通过在包含人类标注推理过程的数据集上训练,模型在以下方面表现出显著提升:
- 常识推理
- 算术
- 符号推理
此外,CoT 微调在某些情况下比 RLHF 更有效地提升无害性,减少在处理敏感提示时出现的回避回复(例如 “I cannot respond to this question”)。
关键技术要点
- Data Efficiency: 指令微调只需极少量的训练数据(通常只有几百条样本),远低于预训练所需的数据量。
- Safety via SFT: SFT 中的人类标注对于确保模型输出安全且有用至关重要。
- Reasoning via CoT: CoT 微调是实现复杂思考任务的关键,并能降低模型在敏感话题上的回避行为。
对话代理开发中的未解问题
该领域仍面临若干未决挑战:
- RL Necessity: 尚不清楚是否仅使用更高质量的 IFT 或 SFT 数据就能达到 RLHF 的性能。
- SFT vs. RLHF: 需要进一步比较仅使用 SFT 的安全性(如 LaMDA)与 SFT+RLHF 的效果(如 Sparrow)。
- Pre-training Trade-offs: 结合高级微调技术时,所需的最佳预训练量尚未确定。
- Red-Teaming Reproducibility: 目前缺乏系统化的方法来记录和复现红队测试(寻找失败模式以影响后续训练)的效果。