简介
在当前的大语言模型 (LLMs) 领域,我们正目睹两种极具吸引力的特质之间的一场“拔河比赛”。一方面,我们要的是有用且健谈的模型——它们能遵循开放式指令、创作诗歌,并像人类一样聊天。另一方面,我们要的是忠实且有据可依的模型——当给定特定文档或上下文时,它们能仅根据该信息回答问题,而不凭空捏造。
对于使用检索增强生成 (RAG) 或构建聊天机器人的学生和从业者来说,这是一个熟悉的痛点。你可能会微调一个模型让它更健谈,结果发现它开始对事实产生幻觉。反之,如果你严格训练它遵循提供的文档,它可能会失去理解细微指令的能力,或无法进行流畅的对话。
最近一篇题为 *“Dancing in Chains: Reconciling Instruction Following and Faithfulness in Language Models” (戴着镣铐起舞: 协调语言模型的指令遵循与忠实度) * 的研究论文调查了这一现象。作者提供了确凿的证据,证明在指令遵循 (“起舞”) 与忠实度 (上下文的“镣铐”) 之间存在根本性的权衡。

如上图 1 所示,大多数模型都会偏向其中一个极端。然而,研究人员也提出了一种名为 RESET (用于持续自指令微调的拒绝采样,Rejection Sampling for Continued Self-instruction Tuning) 的新颖解决方案,使模型能够逼近“北极星”——即在创造力和准确性方面均表现出色。
在这篇文章中,我们将剖析为什么会存在这种权衡,用于证明它的方法论,以及 RESET 背后优雅的机制是如何协调这些相互冲突的目标的。
背景: 定义冲突
在深入实验之前,我们需要阐明这个故事中的两个“主角”。
1. 指令遵循 (Instruction Following)
这指的是 LLM 响应开放式用户提示词的能力。用于此目的的训练数据集包括 Alpaca、ShareGPT 或 Dolly 。 这些数据集教导模型成为一个有用的助手。目标是满足用户的意图,无论是“写一首关于铁锈的诗”还是“像对五岁孩子一样解释量子物理”。成功的衡量标准通常是由更强的模型 (如 GPT-4) 进行评估,常被称为“LLM作为裁判 (LLM-as-a-Judge) ”。
2. 忠实度 (基于上下文的落地) (Faithfulness / Context-Dependent Grounding)
这是模型严格基于提供的上下文 (一组段落或文档) 回答问题的能力。这对 RAG 系统至关重要。如果你提供一份医学研究报告并提出问题,你不希望模型利用其预训练知识来回答;你希望它使用那份研究报告。这里的数据集包括 Natural Questions (NQ)、MS MARCO 或 CNN/DailyMail 。 成功的衡量标准是依据性 (groundedness) ——答案是来自文本,还是凭空捏造的?
作者怀疑这两个目标的分布差异如此之大,以至于在训练过程中可能会相互损害。
证据: 两条流水线的故事
为了证明这种权衡是真实的而非仅仅是轶事,研究人员建立了一个“两阶段微调范式”。他们基本上是强迫模型专精于一种技能,然后试图教它们另一种技能,观察原有技能的退化情况。

如图 2 所示,实验涉及两条不同的流水线:
- 上下文依赖 \(\rightarrow\) 指令遵循: 首先训练模型保持忠实,然后微调它变得健谈。
- 指令遵循 \(\rightarrow\) 上下文依赖: 取一个健谈的模型 (如 Vicuna) ,微调它变得忠实。
让我们看看这些实验的结果。
流水线 1: 聊天训练会损害忠实度吗?
在第一个实验中,研究人员采用了 LLaMA-7B 模型,并在上下文依赖数据集 (如问答和摘要) 上对其进行微调,直到它高度忠实。然后,他们在指令数据集 (如 Alpaca) 上对其进行进一步微调。
结果非常鲜明。

在图 3 中,请看 Faithfulness with Abstractive Datasets (抽象生成型数据集的忠实度) 的柱状图。蓝色柱代表指令微调前的模型 (0.82) ,橙色柱显示了微调后的表现 (0.55) 。忠实度出现了巨大的 33% 下降 。
虽然模型在遵循指令方面变得更好了 (指令遵循得分从 0.30 跃升至 0.74) ,但它失去了在上下文中保持依据的能力。它开始编造内容,这可能是因为指令微调数据集通常鼓励创造性生成,而不是严格遵守源文本。
仅仅是长度问题吗?
一个常见的反驳观点是,经过指令微调的模型只是写出了更长的答案,而更长的答案更难保持忠实。研究人员通过比较生成回复是短还是长时的忠实度得分来调查这一点。

图 5 显示,即使是较短的回复 (蓝线) ,随着训练的进行,忠实度也会显著下降。质量的下降不仅仅是冗长的副作用;模型从根本上“忘记”了如何保持忠实。
流水线 2: 忠实度训练会损害聊天能力吗?
在反向实验中,研究人员采用了 Vicuna-7B (一个已经针对聊天进行过微调的模型) ,并在上下文依赖任务上对其进行训练。

如图 6 (在图像组中标记为图 9) 所示,权衡再次出现。虽然忠实度提高了,但指令遵循得分 (第三组柱状图) 从 0.79 暴跌至 0.49。
通过强迫模型严格遵守上下文,它变得僵化了。它失去了有效回答开放式用户查询所需的“人情味”。
“相似长度”对照组
同样,人们可能会问: “模型是不是只是变得太简短了?”研究人员对此进行了控制,通过筛选训练前后回复长度保持相似的例子来进行对比。

图 7 证实,即使回复长度相似,指令遵循的质量也显著下降 (在筛选设置下从 0.82 降至 0.64) 。模型仅仅是变差了,不再是一个有用的助手。
解决方案: RESET
所以,我们面临一个问题。如果你为 A 训练,你就会失去 B。如果你为 B 训练,你就会失去 A。
标准的行业解决方案是多任务学习 (MTL) ——将两种数据集混合在一起,同时训练模型。虽然研究人员发现 MTL 有所帮助 (如“北极星”图 1 所示) ,但它仍然不是最优的。它起到的作用是妥协,而不是协同。
为了做得更好,作者提出了 RESET : Rejection Sampling for Continued Self-instruction Tuning (用于持续自指令微调的拒绝采样) 。
RESET 背后的直觉很简单: 与其仅仅给模型喂原始数据,不如让模型尝试自己回答问题,自己批改作业 (使用外部裁判) ,然后仅在它答对的问题上重新训练。这创建了一个高质量、经过筛选的数据集,与两个目标都保持一致。
RESET 如何工作
RESET 过程是一个循环,由四个主要步骤组成,如下图所示:

第 1 步: 初始 MTL 训练
首先,在指令和上下文依赖数据集的混合体上训练一个基础模型 (如 Vicuna) 。这赋予了模型在两个领域的基本能力。
第 2 步: 采样生成
取训练数据的一个子集,让模型生成答案。关键是,通过改变解码策略 (例如,改变 temperature 以获得随机性或 top-k 采样) ,为同一个提示词生成多个答案。这创造了一个多样化的潜在回复池——有的富有创造力,有的像机器人,有的忠实,有的产生幻觉。
第 3 步: 外部评判与加权评分
这是质量控制步骤。使用外部评估器 (如用于指令遵循的 GPT-4,和用于忠实度的 NLI 模型) 对每一个生成的回复进行评分。
作者使用一个特定的公式来对这些生成结果进行排名:
\[ { \mathrm { s c o r e } } = s _ { \mathrm { t a s k } } + 2 . 0 * \left( \mathbb { I } _ { \mathrm { i n s t r } } * s _ { \mathrm { i n s t r } } + \mathbb { I } _ { \mathrm { f a i t h } } * s _ { \mathrm { f a i t h } } \right) \]
在这个方程中:
- \(s_{task}\): 基本任务表现 (例如 ROUGE 分数) 。
- \(s_{instr}\): 指令遵循分数 (它有多有用/健谈) 。
- \(s_{faith}\): 忠实度分数 (它有多么有据可依) 。
- 指示函数 \(\mathbb{I}\) 确保我们根据数据集类型 (指令 vs 上下文) 对分数进行加权。
对指令和忠实度的重加权 (\(2.0\)) 确保了选出的最佳回复不仅仅是准确的——它有效地平衡了我们试图解决的具体冲突。
第 4 步: 持续微调
最后,为每个提示词选择单一的最佳回复 (Top-1) 。将这些“获胜”的回复编译成一个新的、更小的、高质量的数据集。在这个经过筛选的数据上对模型进行最后一次微调。
实验与结果: 它有效吗?
研究人员将 RESET 与标准基线进行了比较,包括原版 Vicuna 和标准多任务学习 (MTL) 。

表 4 展示了主要发现:
- MTL 缩小了差距但仍有改进空间:
w/ MTL一行显示了不错的分数,作为一个强有力的基线。 - RESET 获胜:
w/ MTL+RESET一行始终优于标准 MTL。例如,在抽象生成型数据集 (总体) 上,忠实度从 0.80 (MTL) 跃升至 0.85 (RESET)。 - 少即是多 (RESET-S): 作者引入了一个“增强版”称为
RESET-S。在这里,他们采样了更多的生成结果,但更积极地筛选最终数据集,只保留绝对最好的例子。这导致数据集比标准 RESET 数据集小三倍 。 尽管数据量更少,RESET-S却取得了最高分 (例如,在抽象生成型数据集上达到 0.92 的忠实度) 。这证明在协调这些目标时,数据质量远比数量重要。
定性观察
数字固然好,但在实践中这看起来像什么?让我们看一个例子,模型被要求描述一只小鸭子。

在表 8 中,注意这种演变:
- Vicuna Zero-Shot: 非常具有描述性 (“毛茸茸的、柔软的生物……嘎嘎叫和摇摇摆摆”) 。聊天能力很好,但对于特定限制来说可能太啰嗦了。
- Context-Dependent Tuning (上下文依赖微调) : “小鸭子是一只年轻的鸭子……”非常枯燥,像百科全书。它失去了魅力。
- RESET-S: “小鸭子是一种小巧、毛茸茸且可爱的鸟,经常被看到在池塘或湖泊中游泳。”
RESET 模型设法做到了简洁和忠实 (它没有编造特征) ,同时保留了用户对聊天机器人所期望的“人情味”语调 (“可爱”、“毛茸茸”) 。
结论与启示
“Dancing in Chains”这篇论文揭示了现代 AI 开发中的一个关键摩擦点。我们通常假设给模型喂更多不同类型的数据会让它在各方面都变得更好。然而,这项研究表明, 指令遵循和忠实度实际上是相互竞争的目标。
- 为创造力而训练可能会诱发幻觉。
- 为严格的落地而训练可能会诱发机器般的僵化。
提出的 RESET 方法提供了一条前进的道路。通过利用模型自身生成多样化选项的能力并使用严格的拒绝采样,我们可以策划出一个融合了两个世界优点的训练集。
对于学生和开发者来说,最重要的启示是少即是多的概念。你并不一定需要海量的数据集来修复对齐问题。一个经过高度筛选的小型数据集——其中每个例子都完美平衡了实用性和忠实度——可以胜过一个巨大的、嘈杂的数据集。
随着我们继续构建集成 RAG 与对话角色的系统,像 RESET 这样的技术可能会成为标准实践,以确保我们的 AI 助手能够在不挣脱真理镣铐的前提下优美地起舞。
](https://deep-paper.org/en/paper/2407.21417/images/cover.png)