引言: AI 的“应声虫”问题
想象一下,你是一名正在参加历史考试的学生。你遇到了一道关于某个特定事件的题目,而你从未学过这个事件,对它一无所知。如果是选择题,你可能会猜一个。但在论述题中,如果你被迫写出一个答案,你可能会试图表现得很自信,编造出听起来合情合理但完全虚构的细节。
大型语言模型 (LLMs) 在训练过程中,特别是在对齐 (alignment) 阶段,面临着惊人相似的困境。我们将这些模型训练得乐于助人、无害且诚实。然而,最近的研究表明,我们微调这些模型的方式往往在无意中鼓励了它们产生幻觉。
当我们根据指令数据 (如问答对) 微调模型时,本质上是在告诉它: “当被问到这个问题时,要说那个答案。”但是,如果“那个答案”——即答案中的事实内容——实际上并没有存储在模型的内部记忆中 (也就是未在预训练期间获取) ,会发生什么呢?模型学会了答案的形式,却缺乏实质内容。它学会了在不理解底层事实的情况下模仿回答。它变成了一个“应声虫”,为了满足用户的提示而生成听起来合理但毫无意义的内容。
这种现象的根源在于知识不一致性 (Knowledge Inconsistency) 。
在这篇详细的解读中,我们将探讨研究论文《Knowledge Verification to Nip Hallucination in the Bud》,该论文提出了一种名为知识一致性对齐 (Knowledge Consistent Alignment, KCA) 的新颖框架。这种方法本质上是在模型从训练数据中学习之前,先给它做一个“突击测验”。如果模型不知道相关事实,KCA 就会改变教学方式,从而防止模型学会产生幻觉。
背景: 预训练与对齐之间的脱节
要理解为什么 KCA 是必要的,我们首先需要了解 LLM 是如何学习的。这个过程通常分为两个阶段:
- 预训练 (Pretraining) : 模型阅读互联网上的海量文本。这是它获取“内在知识”——世界事实、语法、推理能力等——的阶段。
- 对齐 (指令微调) : 模型在高质量的指令和回复对上进行微调。这教会了模型如何格式化答案并遵循用户的意图。
目前流行的理论 (“表面对齐假说”) 认为,对齐并不是教给模型新知识;它只是教模型如何提取和格式化它已经拥有的知识。
冲突所在
当对齐数据包含特定的、基础模型在预训练期间从未见过的外部知识时,问题就出现了。例如,如果你试图在一个关于全新技术 (如 2023 年发明的直接偏好优化 DPO) 的数据集上微调一个较旧的模型 (如 GPT-2) ,该模型内部并没有关于该技术的表征。
如果你强迫模型在这些数据上进行训练,你就制造了知识不一致性 。 你在要求模型与其内在知识相矛盾 (或内在知识缺失) 的外部知识保持一致。
这篇论文的研究人员假设,这种不一致性是产生幻觉的主要驱动因素。为了证明这一点,他们分析了模型的知识“不一致”程度与其产生幻觉的频率之间的相关性。

如图 2 所示,这种相关性非常明显。X 轴代表知识不一致性的百分比 (测试数据中有多少是模型“未知”的) ,Y 轴代表幻觉率。在不同的数据集 (由彩色线条表示) 中,随着不一致性的增加,幻觉率也显著攀升。这证实了当模型不知道自己在说什么时,它就开始编造事实。
解决方案: 知识一致性对齐 (KCA)
那么,我们该如何阻止这种情况呢?我们需要一个过滤器。我们需要一种方法,在利用训练样本微调模型之前,检查模型是否实际上“知道”该样本中的事实。
研究人员引入了知识一致性对齐 (KCA) 。 其逻辑简洁而优雅:
- 检测 (Detect) : 对于每一条训练数据,验证模型是否掌握必要的内在知识。
- 校准 (Calibrate) : 如果模型不知道这些事实,就修改训练数据,以免强迫模型产生幻觉。

图 3 提供了整个流程的高层概览。该过程分为两个主要阶段: 检测 (左侧) 和校准 (右侧) 。让我们逐步分解。
第一阶段: 知识不一致性检测
检测阶段就像是对语言模型进行一次自动口试。我们不能简单地问模型“你知道这个吗?”,因为它可能会撒谎。取而代之的是,研究人员设计了一个四步客观验证过程。
第一步: 知识需求分类
并非所有指令都需要事实知识。像“用有趣的语气重写这句话”这样的请求依赖于风格能力,而非确凿的事实。而像“解释阿司匹林的化学成分”这样的请求则依赖于事实。
KCA 首先使用一个“教师模型” (一个强大的、已对齐的 LLM,如 GPT-3.5) 来分析训练指令,并确定它是否需要外部知识。

从图 6 中的提示结构可以看出,系统要求教师模型分析用户命令,并预测在该信息上是 <need> (需要) 还是 <no need> (不需要) 事实信息。这过滤掉了主观或创造性的任务,因为在这些任务中幻觉并不是真正的问题。
第二步: 参考知识生成
如果一条指令确实需要知识,系统需要知道那是什么知识。KCA 再次使用教师模型,生成一个“参考知识片段”——即正确回答该指令所需的事实摘要。
第三步: 考题制定
这是 KCA 框架中最具创新性的部分。一旦我们有了参考事实,我们如何检查“学生模型” (我们要训练的模型) 是否知道这些事实?
我们会生成一份多项选择题试卷 。
教师模型根据参考知识片段创建问题。例如,如果训练数据是关于罗马历史的,系统就会生成关于罗马历史的具体多项选择题。

图 7 和 8 展示了这些提示词。系统明确要求辅助模型根据提供的知识创建问题、选项和正确的答案键 ((A)、(B)、(C) 等) 。
第四步: 完成考试
最后,学生模型 (我们即将训练的基础模型,例如 Llama-2-7B) 参加考试。它需要回答这些多项选择题。
- 高分: 如果学生模型回答正确,说明它拥有内在知识。该数据被标记为一致 (\(\mathcal{D}_{co}\)) 。
- 低分: 如果学生模型失败,说明它缺乏该知识。该数据被标记为不一致 (\(\mathcal{D}_{inc}\)) 。
这种分类揭示了关于不同基础模型的有趣见解。

图 4 显示了不同模型在检测阶段的结果。注意 Pythia 7B (蓝色) 和 Llama-2 7B (橙色) 之间的差异。与 Llama-2 相比,Pythia 有更高比例的不一致数据 (“Consis.”组中较低的蓝色条) 。这是合理的: Llama-2 是在更多数据上训练的,通常被认为是能力更强的基础模型,因此它“知道”更多训练数据集中存在的事实。
第二阶段: 知识不一致性校准
一旦数据集被分为“已知” (\(\mathcal{D}_{co}\)) 和“未知” (\(\mathcal{D}_{inc}\)) ,我们就进入训练阶段。
对于“已知”数据,我们进行标准微调。因为模型知道事实,所以教它如何格式化答案是安全的。
对于“未知” (\(\mathcal{D}_{inc}\)) 数据,我们不能正常训练。如果我们这样做,模型将学会产生幻觉。研究人员提出了三种不同的校准策略 :
1. 开卷微调 (Open-Book Tuning)
在这个策略中,我们将“小抄” (之前生成的参考知识) 直接附加到训练时的提示词中。
- 逻辑: “你不知道这个事实,所以我会在上下文中提供给你。”
- 结果: 模型学会根据提供的上下文回答,而不是编造信息。这模仿了检索增强生成 (RAG) 的工作流程。
2. 丢弃微调 (Discard Tuning)
这是最激进的策略: 直接把数据扔掉。
- 逻辑: “如果你不知道,我们就不谈论它。”
- 结果: 模型只在它真正理解的内容上进行微调。这保持了模型知识的纯度,但减少了总的训练数据量。
3. 拒绝微调 (Refusal Tuning)
这个策略教会模型谦卑。训练数据中的目标回复 (通常是事实性答案) 被替换为拒绝信息,例如*“我不知道回答此指令所需的事实信息。”*
- 逻辑: “当你看到一个你不知道的话题的问题时,承认无知。”
- 结果: 模型明确学会了其知识的边界。
实验结果
研究人员在几个流行的开源模型 (Pythia 7B, Mistral 7B, Llama-2 7B/13B) 上测试了这些方法,并在 TruthfulQA 和 VicunaEval 等严格的幻觉基准上进行了评估。
KCA 能减少幻觉吗?
是的,非常显著。通过解决知识不一致性问题,所有三种 KCA 策略的表现通常都优于标准微调。
一个特别值得关注的领域是拒绝微调 。 通过教模型说“我不知道”,我们大幅减少了错误信息。

图 5 展示了对该方法的一个关键验证。研究人员检查了模型拒绝回答的回复与它尝试回答的回复的幻觉率。由于模型拒绝回答,这里的“拒绝”条形图 (每组右侧) 实际上是如果模型没有拒绝 (使用基线模型计算) 时的幻觉率。这证明了模型拒绝回答的问题,确实是它最容易产生幻觉的问题。
具体指标的表现
团队还使用了标准的文本生成指标 (如 ROUGE) 来将模型输出与参考答案进行比较。

表 2 显示了 ROUGE 分数 (越高越好,表示与标准答案越接近) 。你可以看到拒绝微调 (每个模型的最后一行) 通常表现很好。然而, 丢弃微调和开卷微调也显示出优于标准微调的改进。例如,观察 Pythia 7B (一个较弱的模型) ,开卷微调在 ACI-Bench 上带来了巨大的性能提升,这可能是因为该模型最需要外部上下文。
权衡: 帮助性 vs. 诚实性
凡事皆有代价。如果一个模型拒绝回答每一个难题,它虽然变得非常诚实,但也非常无用。研究人员使用 GPT-4 作为裁判 (评分范围 1 到 10) 评估了模型的“帮助性 (Helpfulness) ”。

表 3 揭示了这种权衡:
- 拒绝微调: 虽然它在幻觉指标上大获全胜,但在帮助性上受到了打击 (参见分数的下降,特别是对于 Pythia 7B) 。如果模型太频繁地说“我不知道”,用户会感到沮丧。
- 开卷与丢弃微调: 这些方法保持了与标准微调相当 (有时甚至更好) 的帮助性分数。它们允许模型在保持有用的同时减少幻觉。
讨论: 哪种策略最好?
论文建议,“最好”的策略取决于你的目标和基础模型:
- 拒绝微调是安全与真实的冠军。如果你的应用不能容忍谎言 (例如医疗或法律建议) ,这是必经之路,即使它变得不那么健谈。
- 开卷微调是保持帮助性的理想选择。它本质上训练模型成为一个优秀的上下文阅读者。如果你计划在 RAG 系统 (在提示词中提供文档) 中使用你的模型,这是极好的训练。
- 丢弃微调提供了一种平衡 。 它确保模型的一致性,而不需要重写数据 (拒绝策略) 或扩展提示词 (开卷策略) 的复杂性。
结论
《Knowledge Verification to Nip Hallucination in the Bud》这篇论文为我们思考如何训练 LLM 提供了一个引人注目的转变。它让我们摆脱了在微调阶段将知识“填鸭”式灌输给模型的想法。相反,它尊重预训练模型的知识边界 。
通过使用 KCA,我们不再强迫模型成为阿谀奉承者。我们将对齐阶段视为它应有的样子: 学习行为和格式,而不是学习新事实。
- 关键要点: 如果模型在某个话题的突击测验中不及格,就不要强迫它写关于该话题的论文。
- 启示: 未来的数据集策展不应只关注质量;还应关注与正在训练的模型的兼容性。
在我们从迈向通用人工智能 (AGI) 的过程中,仅仅依靠规模是不够的。我们需要可靠性。像 KCA 这样的技术表明,我们不仅可以通过更努力地训练,还可以通过更聪明地训练——具体来说,就是确保它们只谈论它们真正知道的事情——来实现更可靠的模型。
](https://deep-paper.org/en/paper/2401.10768/images/cover.png)