引言: “自信的骗子”带来的问题

如果你曾花时间与 ChatGPT 或 LLaMA 等大语言模型 (LLM) 互动,你很可能遇到过一种特定且令人沮丧的行为: 自信的幻觉。当你问一个关于小众话题、虚构人物或特定医疗状况的问题时,模型会以绝对肯定的语气回答。听起来合情合理,语法完美,逻辑似乎也无懈可击。但有一个问题——事实完全是编造的。

在人工智能领域,这被称为幻觉 (hallucination) 。 具体来说,我们面对的是*事实冲突性幻觉 (fact-conflicting hallucinations) *,即模型的输出与既定现实相矛盾。发生这种情况是因为标准 LLM 被训练成乐于助人的对话者,预测下一个可能的单词,而不一定是被训练成严谨的事实核查员。它们通常缺乏一种评估自身无知程度的机制。当它们不知道时,它们就会瞎猜。

对于日常闲聊,这只是个小毛病。但对于医疗、法律或教育领域的应用,这就是致命的缺陷。

最近一篇题为 “Learn to Refuse: Making Large Language Models More Controllable and Reliable through Knowledge Scope Limitation and Refusal Mechanism” (学会拒绝: 通过知识范围限制和拒绝机制使大语言模型更加可控和可靠) 的研究论文提出了一个迷人的解决方案。与其试图让模型知道一切,为什么不教它们识别自己知道什么,并简单地拒绝回答呢?

这种方法被称为 L2R (Learn to Refuse,学会拒绝) , 它从根本上改变了问答 (QA) 系统的架构。它将可靠性置于数量之上,确保当 AI 发言时,其背后有可验证的证据支持。在这篇文章中,我们将拆解 L2R 的架构,解释它如何创建一个“知识边界”,并看看让 AI 能够说出“对不起,我不知道”背后的数学原理。

背景: 为什么仅靠检索是不够的

要理解 L2R,我们首先需要看看目前解决幻觉问题的标准方案: 检索增强生成 (RAG)

在标准的 RAG 设置中,当你提出问题时,系统会在数据库 (如维基百科) 中搜索相关文档。它将这些文档提供给 LLM,并说: “使用这些信息来回答问题。”

虽然 RAG 比原始 LLM 有了巨大的进步,但它也有一个弱点。如果检索系统找到了不相关的文档,或者文档中实际上不包含答案,LLM 往往仍会试图强行回答。它实际上是为了满足用户的请求,而在问题和不相关文档之间产生幻觉般的联系。

L2R 背后的研究人员认为,仅仅提供知识是不够的。我们需要强制执行知识范围限制 (Knowledge Scope Limitation) 。 我们必须将 LLM 的内部记忆 (参数化知识) 视为不可信的,并强制它依赖于一组特定的、结构化的事实。如果这些事实不够,系统必须触发拒绝机制 (Refusal Mechanism)

Figure 1: The overview of L2R. L2R differs from traditional LLM-based QA systems that directly answer questions. It has the ability to refuse the user’s question based on specific situations.

图 1 所示,其区别在于结构。传统系统接收问题并直接输出答案。L2R 系统插入了一个关键的决策菱形: “我能回答这个问题吗?” 如果答案是否定的,输出就是拒绝。如果是肯定的,它将通过提供证据和推理的透明过程继续进行。

核心方法: 深入 L2R 框架

L2R 框架的设计旨在让 LLM 仅作为推理引擎运作,而不是事实存储设备。为了实现这一目标,作者将系统分为两个截然不同的阶段: 知识丰富 (Knowledge Enrichment) (构建大脑) 和问答 (Question Answering) (使用大脑) 。

让我们拆解图 2 中可视化的架构。

Figure 2: The framework of L2R. L2R consists of two main components: manual or automatic knowledge enrichment and question answering based on structured knowledge.

第一部分: 知识丰富 (上半部分)

系统从一个空的知识库 (KB) 开始。这与那些“知道”整个互联网的标准预训练模型截然不同。在 L2R 中,如果知识不在特定的知识库中,它对模型来说就不存在。

手动填充这个知识库虽然准确但速度很慢。为了解决这个问题,作者提出了自动知识丰富 (Automatic Knowledge Enrichment, AKE) 。 令人惊讶的是,他们使用 LLM 本身来构建这个知识库,但为了确保质量做了一些调整。

这个过程涉及三个特定的“智能体 (Agents) ” (带有特定指令的 LLM) :

  1. 问题生成智能体 (Question Generation Agent) : 创建关于世界的客观事实问题列表。
  2. 答案生成智能体 (Answer Generation Agent) : 回答这些问题,并为其答案分配一个置信度分数 (\(C\)) 。
  3. 问答对转知识智能体 (QA Pair to Knowledge Agent) : 将问答对转换为要存储的陈述性语句 (事实) 。

通过筛选高置信度的分数,系统建立了一个“结构化知识库”,其中包含像“莱昂纳多·达·芬奇画了蒙娜丽莎”这样的事实,并附带置信度水平 (例如 1.0) 。这就创建了一个可追溯的“黄金知识”库。

第二部分: 拒绝机制 (下半部分)

这才是神奇之处。当用户提出一个新问题时,系统不只是猜测。它会经过一个涉及两个“法官”的严格审查过程: 硬法官 (Hard Judge)软法官 (Soft Judge)

步骤 1: 检索与评分

首先,系统从知识库中检索与用户问题最相似的前 \(k\) 条知识。每一条检索到的知识都带有两个数字:

  1. 置信度 (\(C\)) : 系统在学习这一事实时 (来自丰富阶段) 的确信程度。
  2. 相似度 (\(S\)) : 这个事实与用户问题的相关程度 (使用嵌入的欧几里得距离计算) 。

检索结果 \(K_r\) 表示为这些元组的向量:

Equation for Retrieval Results

步骤 2: 硬拒绝 (数学层面)

硬法官是一个非 AI 的数学看门人。如果检索到的数据是垃圾,它会阻止 LLM 甚至尝试去回答。

它基于相似度 (\(S\)) 除以置信度 (\(C\)) 来计算分数。请记住,在本文中,他们使用欧几里得距离表示相似度,其中更低的分数意味着相似 (距离更近) 。因此,低 \(S\) 和高 \(C\) 是理想的情况。

系统检查检索项中最佳匹配的分数。如果最佳匹配的分数比特定阈值 (\(\alpha\)) 更差 (更高) ,系统就会触发硬拒绝。

Equation for Hard Refusal

这里,\(I^{hard} = 0\) 意味着系统拒绝回答。这充当了一个安全网。如果用户问“火星的总统是谁?”,而数据库只包含关于 18 世纪艺术的事实,相似度分数将会很糟糕 (距离很远) 。硬法官会立即关闭流程,防止 LLM 编造答案。

步骤 3: 软拒绝 (推理层面)

如果硬法官放行了数据,它将进入软法官环节。这就是 LLM 本身。

系统会用检索到的证据提示主问答智能体,并问: “基于这些证据,这个问题是可回答的吗?”

这是必要的,因为有时数据可能在数学上相似但在语义上不相关。例如,如果问题是“谁赢得了 1998 年世界杯?”,而证据是“1998 年世界杯在法国举行”,关键词匹配 (相似度分数不错) ,但答案并不在其中。硬法官可能会让它通过,但软法官 (LLM) 应该意识到信息缺失并拒绝回答。

步骤 4: 最终决定与回答

最终决定是一个逻辑“与 (AND) ”操作。两个法官必须都同意问题是可回答的。

Equation for Final Decision

如果 \(I^{final} = 1\) (真) ,系统生成答案。关键在于,它是一步步完成的:

  1. 证据 (Evidence) : 引用知识库中使用的具体事实。
  2. 推理 (Reasoning) : 解释连接证据与结论的逻辑步骤。
  3. 回答 (Answer) : 最终输出。

这种思维链 (Chain-of-Thought) 方法确保即使系统回答了,用户也能确切地验证它为什么给出这个答案。

实验与结果

这种复杂的过滤真的有效吗?研究人员使用 TruthfulQA 数据集将 L2R 与标准基线 (如 GPT-3.5-turbo 和标准 RAG) 进行了测试,该数据集旨在诱导模型模仿人类的错误观念。

质量重于数量

这里成功的主要衡量标准是已回答问题的准确率。目标不是回答所有问题,而是当你回答时必须是正确的。

Table 1: The overall performance of L2R and several baselines (%). Count in the table represents the number of questions answer. L2R outperforms other methods by selectively refusing to answer certain questions to achieve more reliable results.

表 1 揭示了这种权衡。

  • GPT-3.5-turbo 回答了所有 817 个问题,但准确率仅为 46.6% 。 它有一半以上的时间都在自信地胡说八道。
  • L2R-GPT (Ours) 仅回答了 654 个问题 (拒绝了约 20%) ,但其准确率跃升至 65.1%

通过拒绝它没有充分数据支持的“风险”问题,L2R 显著提高了系统的可信度。在 MC2 任务 (多选多正确) 中,准确率达到了 70%

调节旋钮: Alpha (\(\alpha\))

硬拒绝机制中最有趣的方面之一是阈值 \(\alpha\)。这充当了系统的“严格程度”旋钮。

Figure 5: The changes of Refusal Number and Accuracy under the change of alpha

图 5 所示:

  • 低 \(\alpha\) (左侧) : 系统非常严格。它要求数据库中有近乎完美的匹配。“拒绝数量 (Refusal Number) ” (蓝线) 飙升——它几乎拒绝了一切。然而,“准确率 (Accuracy) ” (红线) 非常高 (接近 90%) 。
  • 高 \(\alpha\) (右侧) : 系统很宽松。它允许更多问题通过。拒绝数量降至接近零,但准确率暴跌,因为模型开始基于微弱的证据产生幻觉。

这给了开发者控制权。在医疗聊天机器人中,你可能会设置一个低的 \(\alpha\) (宁愿不回答也不要给出错误的建议) 。在创意写作工具中,你可能会设置一个高的 \(\alpha\)。

拒绝看起来是什么样的?

看看当系统遇到无法回答的问题时具体的表现是很有帮助的。提示词 (Prompts) 被设计为强制模型输出 CAN_ANSWER: false

Figure 10: MAIN_QA_PROMPT_TEMPLATE. This is the prompt template used in the MAIN QA Agent.

图 10 展示了提示词模板。它明确告诉 AI: “你必须仅基于我提供的知识库来回答……当你认为知识库不能很好地覆盖问题时……你需要拒绝回答。”

当这个逻辑被触发时,输出看起来就像下面图 9 中的例子。

Figure 9: Example 3. The LLM determines that it cannot answer the question and this question is also refused by hard refusal at the system-level.

在这个例子中,用户询问美国人与其他地方相比的平均身高。检索到的证据谈到了英国人、日本人和茶叶消费——完全没有关于美国人身高比较的内容。

  • 推理: 模型指出,“没有具体提及美国人比任何其他特定人群更高……”
  • 软拒绝: True (拒绝) 。
  • 硬拒绝: True (拒绝) 。
  • 回答: None (无) 。

这是一种成功的失败。一个标准的 LLM 可能会利用其预训练的 (且可能过时或产生幻觉的) 记忆来猜测。而 L2R 保持了沉默。

为什么这很重要

“学会拒绝”的方法代表了我们设计 AI 系统的成熟。我们正在从模型能写诗和写代码的“惊叹阶段”,迈向需要在现实世界中让模型发挥作用的“可靠性阶段”。

这篇论文的影响是深远的:

  1. 可追溯性 (Traceability) : 通过使用结构化的、独立的知识库,我们可以将每个答案追溯到特定来源。如果来源有误,我们可以修复数据库而无需重新训练模型。
  2. 可控性 (Controllability) : 硬拒绝阈值 (\(\alpha\)) 为工程师提供了一种数学方法来调整其应用程序的风险状况。
  3. 信任 (Trust) : 一个承认无知的 AI 本质上比一个总是有答案的 AI 更值得信赖。

结论

幻觉常被认为是这类大语言模型的阿喀琉斯之踵。L2R 框架表明,解决方案不仅仅是“更多的训练数据”或“更大的模型”。相反,解决方案在于架构上的谦卑

通过将推理引擎与事实存储库分离,并在生成答案之前实施严格的检查 (包括数学和语义检查) ,我们可以构建优先考虑真理而非流畅性的系统。虽然 L2R 导致回答的问题变少了,但留下的答案是我们真正可以依赖的。在信息至关重要的世界里,“我不知道”往往是 AI 能给出的最智能的回答。