Detecting hallucinations in large language models using semantic entropy
基本信息
- 标题: Detecting hallucinations in large language models using semantic entropy
- 第一作者: Sebastian Farquhar (University of Oxford / Google DeepMind)
- 研究团队: oatml_oxford
- 会议/期刊: Nature, Vol 630, 20 June 2024
- 代码: https://github.com/jlko/semantic_uncertainty
- PDF 文件: [Semantic Entropy](file:///C:/Users/admin/.openclaw/workspace/attachment/papers/20260427_detecting_hallucinations_semantic_entropy.pdf)
研究摘要
大型语言模型(LLM)如ChatGPT和Gemini展现出惊人的推理和问答能力,但同时也面临一个严峻挑战:它们经常"产生幻觉"——生成虚假内容或毫无根据的答案。这一问题在法律、新闻、医疗等关键领域构成了严重风险,例如编造法律先例、传播虚假新闻,甚至在放射学等医疗领域威胁人类生命。通过监督学习或强化学习来鼓励真实性只取得了部分成功。因此,研究人员迫切需要一种通用方法来检测LLM中的幻觉,尤其是当面对全新且人类可能也不知道正确答案的问题时。
牛津大学OATML团队(Yarin Gal实验室)在《Nature》上发表的这项研究,提出了一种全新的统计方法来检测一类特定幻觉——"虚构症"(confabulations)。虚构症指的是模型流畅地给出既错误又任意的回答——即答案对随机种子等无关细节高度敏感。例如,当被问到医学问题"Sotorasib的靶点是什么?"时,模型有时会正确回答KRAS G12 'C',有时却错误回答KRAS G12 'D',尽管输入指令完全相同。
该方法的核心创新在于提出了"语义熵"(semantic entropy)的概念——一种在语义层面而非词汇层面计算不确定性的方法。传统的不确定性估计方法(如基于token概率的熵)会错误地将表达相同含义的不同措辞视为高度不确定,因为同一个意思可以用多种方式表达。语义熵通过先将模型生成的多个回答按语义进行聚类,再计算各语义类别的熵,从而准确捕捉到模型在含义层面的真实不确定性。
这一方法的突出特点是其通用性和无监督特性:它无需任务特定的训练数据,无需先验领域知识,且能够鲁棒地泛化到从未见过的新任务。在横跨 trivia知识问答(TriviaQA)、通用知识(SQuAD 1.1)、生命科学(BioASQ)、开放域自然问题(NQ-Open)、数学文字题(SVAMP)以及传记生成(FactualBio)等多样化数据集和任务上的评估表明,语义熵在检测虚构症方面显著优于现有最佳基线方法。通过检测哪些提示可能导致虚构症,该方法帮助用户了解何时需要对LLM输出保持额外谨慎,并为LLM的可靠应用开辟了新的可能性。
理论框架
语义熵的理论根基深植于经典概率机器学习中的不确定性估计理论。在统计学和机器学习中,预测熵(predictive entropy)是衡量模型不确定性的核心工具。给定输入
低预测熵表示输出分布高度集中,模型对其输出很有信心;高预测熵则表示多种可能的输出概率相近,模型处于不确定状态。这一经典概念为检测虚构症提供了理论基础:当模型对某个输入"虚构"答案时,它在含义层面上应该是高度不确定的。
然而,将预测熵直接应用于自由文本生成面临一个根本性挑战。生成式LLM通过逐个选择token来产生文本,每个token的概率是条件于前面所有token的。如果直接基于token序列的概率计算熵,会混淆两种截然不同的不确定性:模型对答案含义的不确定性和对措辞选择的不确定性。例如,即便模型对"法国首都是巴黎"这一事实完全确定,仍然存在"巴黎"、"法国的首都是巴黎"、"它是巴黎"等多种等价表达方式。传统的朴素熵估计(naive entropy)会将这种词汇层面的多样性误判为不确定性,导致虚高的熵值。
语义熵的理论突破在于区分了语义不确定性(semantic uncertainty)和句法不确定性(syntactic uncertainty)。语义熵本质上是在概率空间的子
其中
语义等价关系的操作化定义是该理论框架的关键。研究采用了双向蕴涵(bidirectional entailment)这一自然语言处理中的经典概念:当且仅当两个句子相互逻辑蕴涵时,它们被视为语义等价。即,如果句子A蕴涵句子B为真,且句子B蕴涵句子A为真,则它们属于同一语义类别。蕴涵检测通过自然语言推理(Natural Language Inference, NLI)工具实现,如DeBERTa-Large-MNLI模型或通用LLM(如GPT-3.5)。值得注意的是,语义等价是在问题上下文中定义的——例如,单独回答"巴黎"并不蕴涵"法国的首都是巴黎",但在"法国首都是什么?"这一上下文中,两者相互蕴涵。
该理论框架还引入了"离散语义熵"(discrete semantic entropy)的变体,用于处理无法获取模型输出概率的场景。在这种情况下,假设每个生成的样本等概率,直接用样本中各语义类别的频率来近似概率分布。虽然这是一种更强的近似,但实验表明其性能与标准语义熵相近,极大地扩展了方法的适用性——例如可以应用于不公开概率的GPT-4等商业模型。
技术架构
语义熵方法的技术实现遵循一个清晰的三步流程:生成(Generation)、聚类(Clustering)和熵估计(Entropy Estimation)。
生成阶段:给定输入上下文
聚类阶段:这是语义熵的核心技术组件。聚类算法基于双向蕴涵判断将生成序列分组为语义等价类。具体而言,对于新序列,只需检查它与已有类别中任一序列(任意选取第一个)是否存在双向蕴涵关系;若不存在,则为该序列创建新类别。蕴涵检测使用NLI模型判断,给定问题上下文和两个候选回答,预测它们之间是蕴涵、矛盾还是中立关系。研究在补充材料中仔细评估了不同蕴涵检测器的优劣:DeBERTa-Large-MNLI(15亿参数,轻量级)和GPT-3.5/4(通用LLM)。最终选择GPT-3.5作为蕴涵检测器,因为其蕴涵预测与人类评估者高度一致,且能带来最佳的虚构症检测性能。
熵估计阶段:确定语义等价类后,计算每个类别的概率。由于无法枚举所有可能的语义类别,研究采用Rao-Blackwellized蒙特卡洛积分进行估计:
其中
对于段落级文本的虚构症检测,技术架构需要额外步骤来处理长文本中多命题的复杂性。因为简单地对每个句子重新采样会导致生成内容偏离原始事实(如有时描述家庭,有时描述职业),而非反映对事实本身的不确定性。解决方案是:
- 使用LLM自动将段落分解为具体的事实性主张(factual claims);
- 对每个事实性主张,使用LLM自动构建可能产生该主张的问题;
- 对每個问题,让原始LLM生成
个回答; - 计算这些回答(包括原始事实主张)的语义熵;
- 对所有问题的语义熵取平均,得到该事实主张的不确定性分数。
这一间接方法虽然增加了复杂度,但实验表明其在段落级虚构症检测上远超基线方法。
实验评估
实验设计体现了对方法论严谨性的高度重视。研究在六个多样化数据集上评估了语义熵的虚构症检测能力:TriviaQA(冷知识问答)、SQuAD 1.1(阅读理解)、BioASQ(生命科学问答)、NQ-Open(开放域自然问题)、SVAMP(数学文字题)以及自建的FactualBio(传记生成)。前五个数据集的实验涉及句子级回答(平均96±70字符),涵盖多种LLM:LLaMA 2 Chat(7B、13B、70B)、Falcon Instruct(7B、40B)和Mistral Instruct(7B)。FactualBio实验使用GPT-4生成段落级传记文本(平均442±122字符),由于GPT-4当时不公开输出概率,使用离散语义熵。
评估采用两个核心指标。第一是AUROC(接收者操作特征曲线下面积),衡量方法预测模型答案正确性的能力,范围从0.5(无信息性)到1(完美分类器)。第二是AURAC(拒绝准确率曲线下面积),模拟实际应用场景:系统根据不确定性分数拒绝回答最可能导致虚构症的问题,AURAC衡量剩余问题上的平均准确率。这一指标直接反映了语义熵在提升实际问答准确性方面的效用。
基线方法的选择体现了对比的全面性。嵌入回归(embedding regression)是有监督基线,受Kadavath等人P(IK)方法启发,训练逻辑回归分类器基于LLM最终隐藏状态预测答案正确性,但不需要微调整个模型。P(True)方法是半监督"上下文内"基线,模型先采样
实验结果清晰地展示了语义熵的优越性。在句子级生成中,语义熵在所有30种任务-模型组合上均优于所有基线。平均AUROC达到0.790,而朴素熵(0.691)、P(True)(0.698)和嵌入回归(0.687)均显著落后。语义熵的表现非常稳定,在不同模型家族(LLaMA、Falcon、Mistral)和规模(7B至70B)上AUROC保持在0.78至0.81之间。
| 方法 | 平均AUROC | 平均AURAC |
|---|---|---|
| 语义熵(Semantic Entropy) | 0.790 | - |
| 离散语义熵(Discrete SE) | ~0.790 | - |
| P(True) | 0.698 | - |
| 朴素熵(Naive Entropy) | 0.691 | - |
| 嵌入回归(Embedding Regression) | 0.687 | - |
特别值得注意的是,语义熵在跨分布(out-of-distribution)场景下表现出卓越的鲁棒性。嵌入回归作为有监督方法,在训练分布与部署分布一致时表现良好,但当问题分布发生偏移时性能急剧下降——这正是现实世界中训练数据与部署数据不匹配的典型情况。语义熵作为无监督方法,无需任何训练样本,自然不受分布偏移影响,这一特性对于实际部署至关重要。
表1中的具体案例深入说明了语义熵为何优于朴素熵。第一个案例中,所有生成"炼油厂、加工化学品、电力"等问题的回答虽然在措辞上各不相同("All the above are under..."、"The refineries..."、"These are all under..."),但含义完全一致。语义熵正确地将它们聚类并判断为低不确定性(非虚构症),而朴素熵因词汇多样性给出高熵值,错误地标记为虚构症。第二个案例展示了一个真实的虚构症:关于STARD10蛋白功能的各个生成在含义上完全不同(mTOR通路负调节器、减数分裂重组过程调节器、脂质代谢调节器),语义熵和朴素熵均正确检测到高不确定性。第四个案例则展示了语义聚类的微妙之处:关于BSkyB数字服务启动时间的回答,有的给出具体日期("1 October 1998"),有的只给出年份("1998"),语义熵将这两类区分开来并判断为不确定。虽然在该上下文中日期和年份的区别可能并不重要,但这凸显了语义聚类中上下文判断的重要性。
段落级实验(FactualBio)进一步验证了语义熵在更长文本上的有效性。在150个手动标注的事实主张中(45个错误),离散语义熵的AUROC和AURAC均显著高于两个基线:简单的"自我检查"(直接问模型该主张是否可能为真)和适配段落设置的P(True)变体。当拒绝最可能导致虚构症的20%回答时,语义熵在剩余问题上的准确率最高。这表明语义熵能够有效扩展到复杂的长文本场景,尽管需要额外的事实分解和问题重构步骤。
案例研究
语义熵方法在实践中展现出深刻的洞察力和灵活性。以第一个核心案例(表1第一行)为例,问题"工业或重型土木工程的施工属于哪个部门?"模型生成了多个回答:"All the above are under the industrial sector of construction"、"The refineries, process chemical, power generation, mills and manufacturing plants are under the industrial sector of construction"、"These are all under the heavy industrial sector of construction"。这些回答在词汇和句法上差异显著——有的使用"all the above",有的列举具体子类别,有的用"heavy industrial"替代"industrial"——但它们都表达了完全相同的含义:这些工程属于建筑业中的工业部门。语义熵的双向蕴涵聚类正确识别了这种语义等价性,将它们归入同一类别,从而计算出低熵值,判定为非虚构症。朴素熵却因表面的词汇多样性而计算出高熵,产生误判。这一案例深刻揭示了语言的多变性本质:含义的稳定性和表达的多样性是语言的两个正交维度,有效的不确定性估计必须区分二者。
第二个案例(表1第二行)关于STARD10蛋白功能的问答,展示了语义熵如何捕捉真正的含义分歧。模型的不同生成给出了截然不同的功能描述:"mTOR通路的负调节器"、"减数分裂重组过程的负调节器(特别是抑制Dmc1重组酶活性)"、"脂质代谢调节器,促进肝脏脂质分解并抑制肝脏和脂肪组织中的脂质合成"。这些回答不仅在措辞上不同,在科学内容上也有本质分歧——mTOR通路、减数分裂重组和脂质代谢是三个不同的生物学过程。双向蕴涵检测无法在这些主张间建立蕴涵关系(因为一个为真并不蕴涵另一个为真),因此它们被分配到不同的语义类别。语义熵因此计算出高值,正确标记为虚构症。这个案例同时说明,当形式和含义共同变化时(第二行),语义熵和朴素熵都能成功检测虚构症;语义熵的真正优势体现在形式变化但含义恒定的情况(第一行)。
第四行案例揭示了语义聚类的微妙挑战。问题"BSkyB的数字服务何时推出?"的回答中,有的给出"1998年",有的给出"1998年10月1日"。语义聚类算法将精确日期和仅年份的回答区分为不同类别,导致语义熵偏高。但从实际应用角度看,在这种上下文中日期和年份的区别可能并不重要。这提醒我们,语义等价并非绝对概念,而是依赖于语境和判断的。研究在补充材料中讨论了这一问题的处理,强调在部署时需要根据具体应用场景调整语义聚类的敏感度。
FactualBio段落级案例展示了方法在复杂场景下的扩展能力。以GPT-4生成的传记为例,模型可能虚构某个人的出生年份、职业成就或教育背景。通过将段落分解为事实主张(如"X于1909年出生"、"X是摩托车赛车世界冠军"),并重构可能产生这些主张的问题("X何时出生?"、"X以什么闻名?"),语义熵能够在粒度更细的层次上评估每个具体事实的不确定性。这种分解-重构-聚合的策略虽然增加了计算复杂度,但为长文本的事实核查提供了系统性的方法论。尤其值得注意的是,该方法能够检测出GPT-4的"拒绝回答"行为——当模型频繁生成"信息不可用"、"未知"等回避性回答时,系统将其视为最大不确定性,这是一种对模型行为模式的细致洞察。
综合价值与局限
语义熵的理论贡献在于它将经典概率机器学习中的不确定性估计方法创造性地适配到现代LLM的自由文本生成场景。这一工作架起了传统统计方法与前沿生成式AI之间的桥梁,展示了经典理论在新范式下的生命力。通过引入语义层面的不确定性概念,研究不仅解决了一个具体的技术问题——虚构症检测——更提供了一种思考语言模型不确定性的新框架。这一框架有望被扩展到其他语言任务,如摘要生成中的事实一致性检测、机器翻译质量评估,甚至多模态生成中的不确定性估计。
从实践角度看,语义熵的影响可能是变革性的。当前LLM部署的最大障碍之一是不可靠性——用户无法判断某个输出是否正确。语义熵提供了一种轻量级、无监督且高度泛化的解决方案,可以集成到任何基于LLM的系统中作为可靠性层。当不确定性高时,系统可以选择拒绝回答、提示用户谨慎对待,或触发额外的检索验证流程。这种"知道何时不知道"的能力对于高风险应用(医疗诊断、法律咨询、新闻核实)尤为关键。研究在补充材料中展示了语义熵能够显著提升问答准确率——通过拒绝回答最不确定的问题,剩余回答的准确性大幅提高。
然而,该方法也存在重要局限。首先,语义熵仅针对虚构症这一类幻觉——即模型因不确定性而产生的任意错误回答。它不适用于检测系统性错误(如训练数据中的普遍误解导致的持续错误)、策略性欺骗(模型为追求奖励而"撒谎")或推理失败。研究明确承认这一局限,认为将不同机制的"幻觉"混为一谈是不恰当的,这些不同症状需要不同的解决方案。其次,语义熵依赖于蕴涵检测的质量,而蕴涵检测本身并非完美——在边界案例中,NLI模型可能误判蕴涵关系,导致聚类错误。第三,对于段落级应用,事实分解和问题重构步骤引入了额外的误差来源:自动分解可能遗漏某些事实,生成的问题可能不精确,这些因素累积起来影响最终检测效果。最后,虽然离散语义熵扩展了方法的适用性,但基于频率的近似在样本量小时可能不够稳定。
一个更深层的问题是,语义熵所捕捉的"不确定性"是否真的对应于模型"知道自己不知道"的元认知能力。研究在讨论中提出了一个富有洞见的观察:"LLM在'知道自己不知道'方面比文献认为的更擅长——它们只是不知道自己知道这一点。"语义熵是一种外部测量方法,它从模型行为的统计特征中推断不确定性,而非直接读取模型的内部置信度。这种间接性既是方法的优势(无需模型内部访问)也是局限(可能错过某些内部信号)。
延伸阅读与思考
语义熵的工作建立在不确定性估计和幻觉检测两大研究传统之上。在不确定性估计方面,MacKay(1992)和Lindley(1956)奠定了信息论基础;在语言模型不确定性方面,Kadavath等人(2022)的P(IK)方法和Lin等人(2022)的"用语言表达不确定性"研究为后续工作铺平了道路。在幻觉检测方面,Ji等人(2023)的综述系统梳理了自然语言生成中的幻觉问题,Honovich等人(2022)的TRUE基准重新评估了事实一致性评价方法。SelfCheckGPT(Manakul et al., 2023)提出了零资源黑箱幻觉检测方法,与语义熵的离散变体有相似之处。在蕴涵检测和语义等价方面,Pado等人(2009)和Androutsopoulos & Malakasiotis(2010)的综述提供了理论基础。
语义熵与相关方法存在重要区别。P(True)方法同样基于采样,但依赖模型对自身答案真假的判断能力,这在某种程度上假设模型具有良好的"自我知识"。实验结果表明,语义熵在检测虚构症上优于P(True),暗示模型可能并不擅长直接判断自己回答的真假,但其生成行为的统计特征却可靠地反映了不确定性。嵌入回归作为有监督方法,在分布内表现尚可,但跨分布时性能崩塌——这再次凸显了无监督方法在实际部署中的优势。
未来研究方向丰富而广阔。在理论层面,将语义不确定性形式化为更广泛的概率框架——如互信息、认知不确定性与偶然不确定性的分离——有望提供更精细的不确定性刻画。在方法层面,改进蕴涵检测器(如使用更强大的LLM或专门训练的模型)、优化语义聚类算法(如处理部分蕴涵而非严格双向蕴涵)、以及开发更鲁棒的段落级分解方法都是直接的技术改进路径。在应用层面,将语义熵扩展到摘要生成、对话系统、代码生成等更多场景,探索与其他可靠性机制(如检索增强、多模型验证)的集成,都是具有高实践价值的研究方向。
从更宏观的视角审视,语义熵工作触及了一个根本性问题:我们如何知道AI系统何时可信?这不仅是技术问题,更是关系到AI治理和社会信任的核心议题。语义熵提供了一种基于统计的、相对客观的信任信号,但它并非万能药。正如研究所强调的,不同"症状"(虚构症、系统性错误、策略性欺骗)需要不同的"诊断"和"治疗"方法。构建全面的AI可信度评估体系,需要整合语义熵这样的统计方法、基于规则的一致性检查、外部知识库验证,以及最终的人类监督。语义熵是这一多层次可信体系中的重要一环,但绝非唯一一环。这一认识对于正在形成的AI监管框架和负责任AI实践具有重要指导意义。
笔记创建时间: 2026-04-27
阅读方式: L2 深度阅读
Topics:
- "llm"
- "reasoning"
- "agent_architecture"
- "memory_mechanism"
- "reinforce_learning"
References: - "oatml_oxford"
- "neural_architecture_search"