在我们的 Python 包“artifactual”中,了解基于熵的评分如何帮助您发现模型何时在“编造”结果——以及具体出现在哪里。

注:本文是Ardian 团队文章的后续内容,详细阐述了可解释人工智能对金融机构的重要性。请务必阅读!

幻觉问题

大型语言模型的能力令人惊叹。它们能进行摘要、翻译、推理和编程(而且比我做得更好)。但与我不同的是,它们还因以令人不安的自信编造事实而臭名昭著。

在自然语言处理(NLP)领域,所谓“幻觉”是指模型生成的内容,这类内容在事实层面存在错误、毫无意义,或与提供的来源不符,却看起来完全合情合理。 其后果轻则无害(例如给错一个冷知识答案),重则严重(例如捏造法律引用、提供错误的药物剂量)。随着组织将大型语言模型(LLMs)集成到生产系统中,问题已从“该模型能否生成有用的文本?”转变为“我们能否相信它刚刚说的话?”

让我们来看一个具体的例子。假设你在一家金融机构工作,并向你所在地的LLM提问:

“爱默生电气2023年的净收入是多少?”

模型回答道:“爱默生电气公司报告称,2023财年净收入约为152亿美元。”听起来合情合理。但这正确吗?你手头并没有打开年度报告。你没有可供对照的真实数据。你只有模型的输出结果——以及疑虑。

这就是我们的工作环境。没有预言机,推理时也没有参考答案。只有一个大语言模型(LLM)的响应及其在生成过程中产生的元数据。目标是:通过单次生成过程,量化该输出出现“幻觉”的可能性。

识别幻觉:这比听起来要难

暴力破解法

一个自然的想法是向模型多次提出相同的问题,并检查答案是否一致。如果六次运行中有五次给出“152亿美元”,而一次给出“187亿美元”,那么这种共识就能让你产生一定的信心。这就是SelfCheckGPT等方法背后的原理,这些方法通过测量多个采样输出之间的一致性来检测幻觉——这是一种“蒙特卡洛式”的幻觉检测方法。

这确实可行。但它有两个显著的缺点:

  1. 成本。每增加一代模型,推断预算就会成倍增长。对于包含 10 个样本的 SelfCheckGPT,您需要支付大约 10 倍的计算成本,再加上语义相似度模型的额外费用。在规模化应用时,这将造成难以承受的成本负担。
  2. 粒度。多轮推理方法在序列层面进行操作。它们会告诉你“这个答案似乎不可靠”,却不会指出答案的哪一部分有问题。一个回答可能准确率高达90%,但其中却夹杂着一个虚构的数字。你肯定想知道它具体在哪里。

这些局限性促使我们去寻找一种不同的信号——一种成本低廉、只需一次处理,且能在令牌级别(即大语言模型在内部操作的单个词素)上起作用的信号。

信号已经出现了

当大型语言模型(LLM)生成文本时,它不仅仅是在输出词元。在每个步骤中,它都会针对整个词汇表计算一个概率分布:“基于当前提示以及我迄今为止生成的所有内容,每个可能的下一个词元出现的概率有多大?”最终选定概率最高的词元,其余的则被舍弃。但这些概率(更具体地说,它们的分布情况)蕴含着关于模型内部置信度的信息。

如果模型非常确定,大部分概率质量会集中在单个词上。如果模型有所犹豫,概率就会分散在多个候选词上。这种分散正是熵所衡量的。

熵:一个简短的插曲

熵是信息论中用于衡量概率分布不确定性的一个量。其直观含义很简单。想象有三个盒子,其中一个装有一块饼干。你需要猜出是哪一个。

  • 情景A:你知道饼干在第2个盒子里。你的不确定性为零。熵 = 0。
  • 情况 B:你完全不知道。每个盒子的概率都是 1/3。你的不确定性达到最大。熵 = log₂(3) ≈ 1.58 比特。

现在,将方框替换为词素,将饼干替换为“正确”的下一个单词。在每一代生成过程中,大型语言模型(LLM)都会面临同样的抉择——只不过它不再是从3个方框中选择,而是从超过10万个词素的词汇库中进行选择。当模型充满信心时,某个词素会占据主导地位,熵值较低;当它犹豫不决时,熵值就会上升。

两种不同情况下的概率分布。

关键的洞见在于:在某个特定词元位置,熵值越高,该位置出现错误的可能性就越大。模型通过其概率分布向你传达的信息是:它并不确定接下来会出现什么。我们只需倾听即可。

从熵到幻觉评分

EPR:熵生成率

我们的第一个指标——熵生成率(EPR)——非常直观。对于生成的序列中的每个令牌,我们会计算模型对前K个预测令牌概率的熵值,然后对整个序列求平均值。这样得到的单一数值,反映了模型在整个响应中平均的犹豫程度。

这是一个无监督指标:无需标签。在我们的实验中(发表于ECIR 2026),仅使用EPR在TriviaQA数据集上,针对四种不同的大型语言模型,其ROC-AUC分数介于74至81之间。对于一个除了单次生成过程外几乎不耗费任何成本的指标来说,这个成绩相当不错。

但我们可以做得更好。

WEPR:加权熵生成率

原始熵将所有令牌的排名一视同仁。排名第一的令牌(即最可能出现的那个)与排名第十的令牌所贡献的熵权重相同。实际上,不确定性在各排名间的分布方式蕴含着区分性信息。

WEPR(加权EPR)通过学习一组权重来重新平衡这些贡献。它使用两个信号:

  • 序列的加权平均熵——反映了整体的犹豫程度。
  • 每个秩的最大熵贡献——捕捉不确定性突增。即使序列的其余部分都是自信地生成的,一个短暂的犹豫时刻也可能成为幻觉的标志。

这些特征被输入到逻辑回归模型中,该模型是在标注数据集上训练的。sigmoid函数的输出是一个经过校准的概率:

“这条回复有86%的概率包含幻觉。”

除了分类结果外,WEPR 还会生成令牌级别的评分。生成的序列中的每个令牌都会获得独立的幻觉概率,这使您能够精确定位响应中哪些部分需要仔细审查。该评分是在模型生成过程中实时计算的,逐个令牌进行,无需等待完整输出。

那么标签呢?

有监督的方法需要标注。手动标注数千组问答对非常耗时。因此,我们采用“大语言模型充当评判者”的方法:一个独立的模型会将生成的每个答案与已知的真实答案进行对比,并将其标记为正确或错误。

这可靠吗?我们通过人工标注者对其进行了验证。由15名研究人员组成的团队对超过1,300组答案进行了人工标注。自动评分系统与人工评估者之间的一致性达到95.7%,Cohen’s Kappa系数为0.90。自动标注结果是人类判断的可靠替代方案,且足够稳健,可用于训练幻觉检测器。

artefactual 正式上线:现在轮到你来体验了。

我们将所有这些功能整合到一个开源的 Python 库中:artefactual

该库内置了多个模型家族(Mistral-Small、Falcon-3、Phi-4、Ministral-8B)的预计算校准权重,因此您无需运行任何训练流程,即可立即开始对输出结果进行评分。它开箱即用,可解析来自 vLLM、OpenAI Chat Completions API 以及 OpenAI Responses API 的输出结果。

以下是最简单的用法:

令牌级别的评分在可视化方面尤为有用。响应中的每个令牌都有其对应的幻觉概率,您可以将其呈现为颜色渐变:绿色表示有把握,红色表示不确定。这样,您只需一眼就能准确判断响应中的哪些部分需要仔细审查。

在 RAG 管道中

这一机制在“检索增强生成”(Retrieval-Augmented Generation)中得到了实际应用。试想这样一个流程:从知识库中检索文档,并将这些文档作为上下文输入给大型语言模型(LLM)。如果检索失败(例如文档错误、页面缺失、上下文不完整等),模型就会尝试利用其参数化记忆来填补空白,而这正是幻觉产生的原因。

使用 artefactual,您可以添加一个门:

我们的科学论文简述——我们的发现

我们在四个大型语言模型(Mistral-Small-24B、Falcon-3–10B、Phi-4、Ministral-8B)上,针对三项任务对EPR和WEPR进行了测试:TriviaQA上的幻觉检测、WebQuestions上的泛化能力,以及金融领域RAG场景中的上下文缺失检测。

以下是几个亮点:

  • WEPR 的表现始终优于现有方法。在几乎所有模型-数据集组合中,它都超越了 SelfCheckGPT(一种需要 10 倍计算资源的多样本方法)和 HalluDetect(一种单样本方法)。
  • 您不需要过多的对数概率值。当每个令牌可用的对数概率值达到约 K = 8–10 时,性能便趋于平稳。即使 API 访问受限,这一趋势依然明显。
  • 该模型具有泛化能力。在TriviaQA数据集上训练的WEPR模型能够很好地迁移到WebQuestions数据集,甚至迁移到专门的金融语料库,并能识别出RAG系统在缺乏充分上下文的情况下生成的答案。
  • 它速度很快。每次序列的评分大约只需80微秒。相比之下,SelfCheckGPT则需要超过10秒。

在我们针对一项金融RAG任务(分析ArGiMi-Ardian数据集中的10-K年度报告)进行的实验中,WEPR在检测未基于正确上下文生成的回答时,ROC-AUC值最高可达93.6。这为触发第二次检索轮次提供了强有力的依据。

关于对数概率访问的说明:

上述所有内容都依赖于一点:能够获取模型生成的令牌级对数概率。正是这一点使我们能够计算熵,进而计算出幻觉分数。

目前,这种访问权限并未得到保证。Anthropic 并未通过其 API 提供对数概率。OpenAI 仅为非推理模型提供此功能——您可以向 GPT-5.4 或 GPT-5.4-mini 请求 top_logprobs,但前提是必须将推理强度设置为 none。另一方面,Google 允许通过其 generate_content API 访问所有对数概率。

通过 vLLM 或类似推理引擎提供的开放式模型可提供完全访问权限。

这一点至关重要。对数似然值是一种轻量级且信息丰富的信号。生成它们无需额外成本(模型在生成过程中本就会计算这些值),而且它们能支持一整类不确定性量化方法——包括我们自己的方法。限制对这些数据的访问,会迫使用户要么盲目信任模型输出,要么采用成本高昂的多轮检测方法。

如果您在生产环境中使用大型语言模型(LLMs)且重视输出结果的可靠性,那么日志概率的可用性应成为您选择模型的标准之一。而如果您是模型提供商:公开日志概率是提升模型可信度的成本最低的方式之一。