AI研究

LLM的幻觉检测靠语义熵,但同一问题换种问法熵就大变,语义层面的不确定性到底稳不稳定?

👤 为我痴狂 👁 8 阅读 ❤ 0 点赞 ➦ 0 分享 📅 2026-11-07
首页› AI› AI研究› 正文
LLM的幻觉检测靠语义熵,但同一问题换种问法熵就大变,语义层面的不确定性到底稳不稳定?

摘要:语义熵(Semantic Entropy)把多次采样的回答先做语义聚类、再在簇上计算熵,被广泛用于大语言模型幻觉检测。然而工程实践中一个反复出现的现象是:同一事实问题换一种问法,语义熵可能从 0.2 跳到 1.4。本文以“语义等价类不变性”为贯穿主线,把这一现象拆解为采样噪声、聚类粒度、提示词分布偏移与模型内部表征漂移四层来源,给出可复现的测量协议(问法扰动集构造、簇级熵与样本级熵的分离、跨问法方差分解),并讨论校准、聚合与在线监控的工程路径。本文认为:语义熵的稳定性不是二值属性,而是相对于“语义等价类定义 + 采样预算 + 问法分布”的条件稳定性;脱离这三者谈“熵稳不稳”没有意义。

目录

一、导语:一个被工程实践反复证伪的直觉

把“语义熵低”当作“模型大概率没幻觉”的判据,是过去两年幻觉检测流水线里最常见的做法之一。它的直觉非常朴素:如果模型对同一个问题采样十次,答案在语义上高度一致,那么它大概率“知道”答案;如果十次答案分裂成五六个语义簇,那么它大概率在编。Kuhn 等人 2023 年提出的 Semantic Entropy 正是把这一直觉形式化,并在多个问答数据集上报告了优于 token 级熵的检测效果(Kuhn et al., 2023, Semantic Uncertainty)。

但任何把它接进真实业务的人都遇到过同一类尴尬:同一个事实问题,原句问一次语义熵是 0.18,换成“请简要回答”“用一句话说”“据你所知”之后,熵值可能变成 1.31。检测阈值瞬间失效,误报率飙升。这不是个别模型的偶发现象,而是语义熵作为“不确定性估计量”在问法维度上缺乏不变性的直接体现。

笔者认为,围绕“语义熵稳不稳定”的争论,多数时候是在争论一个定义不清的问题。稳定性从来不是估计量的孤立属性,而是“估计量 + 等价类定义 + 采样预算 + 输入分布”四元组的联合属性。本文的主线就是把这四元组拆开,逐层给出可测量、可复现、可工程化的分析框架。

二、背景与问题定义:语义熵到底是什么

2.1 从 token 熵到语义熵

token 级熵衡量的是下一个 token 分布的不确定性,它对“换一种说法但意思相同”极度敏感:模型完全可能以极高概率生成“北京”,也可能以极高概率生成“中国的首都”,两者 token 序列不同、token 熵都很低,但语义一致。语义熵的核心改进是先在语义空间做聚类,再在簇分布上计算熵:

H_sem = - Σ_c  p(c) · log p(c)
其中 c 为语义簇,p(c) = (1/N) Σ_i 1[g(y_i) = c]
g(·) 为语义等价判定函数(双向蕴含 / NLI / 嵌入阈值)

这里的 g(·) 是整个方法的命门。Kuhn 等人用双向蕴含(bi-directional entailment)判定两个回答是否语义等价,Farquhar 等人进一步把它用于“检测模型是否在编造”(Farquhar et al., 2024, Nature)。本文评述:这套定义在“答案短、事实性强”的场景下表现良好,但一旦答案变长、包含限定条件或推理链,等价判定本身就会引入巨大方差,而这一方差在原始论文的评测协议里被平均掉了。

2.2 语义熵的三种常见变体

变体 等价判定方式 典型问题
离散语义熵NLI 双向蕴含长答案蕴含判定不稳定
嵌入聚类熵句向量 + 层次聚类阈值阈值敏感,簇数随样本波动
加权语义熵按采样概率加权簇温度参数强相关

三种变体在同一个问题上可能给出方向相反的结论。笔者在内部复现中观察到(模拟数据,基于开源 7B 模型、N=20 采样、温度 0.7):对同一道事实题,离散语义熵判定为“高不确定”,嵌入聚类熵却判定为“低不确定”,原因是嵌入阈值把两个语义不同但字面相近的答案合并了。这说明“语义熵”不是一个单一估计量,而是一族估计量,讨论稳定性必须先固定族内成员。

2.3 问题重述:什么叫“稳定”

本文把稳定性拆成三个可操作的定义:(1) 采样稳定性——固定问法,重复采样,熵值的方差;(2) 问法稳定性——固定语义等价的问题集合,跨问法熵值的方差;(3) 判定稳定性——固定采样,更换等价判定函数,熵值的变化幅度。三者量纲一致(都是熵的单位),可以直接做方差分解。这个三分法是本文后续所有测量的骨架。

三、机制拆解:问法扰动为何改变熵值

3.1 第一层:采样噪声与有限样本偏差

熵估计是有偏的。用 N 个样本估计 K 个簇的分布,即使真实分布固定,估计出的熵也会随 N 波动。经典结论是插件估计量的偏差约为 -(K-1)/(2N)(Miller-Madow 修正的背景)。当 N=10、K=4 时,偏差量级已经接近 0.15 nat,足以让阈值在 0.3 附近来回跳。更麻烦的是,问法改变会改变簇数 K:更开放的问法(“谈谈你的看法”)倾向于产生更多语义簇,K 上升,偏差和方差同时上升。

本文评述:很多“换问法熵就大变”的案例,其实有相当一部分可以归因于 K 的变化而非真实不确定性变化。工程上如果不做样本量归一化,就会把“问法更开放”误读为“模型更不确定”。一个低成本的缓解是固定采样预算并对熵做 Miller-Madow 修正,或直接改用 Bayesian 后验估计簇分布。

3.2 第二层:语义等价判定的粒度漂移

等价判定函数 g 不是度量,它不满足三角不等式,也不保证对问法变化稳定。举例:问“法国的首都是哪里”,采样答案多为“巴黎”;问“请用一句话介绍法国的政治中心”,采样答案可能出现“巴黎是法国首都和政治中心”。NLI 判定前者与后者是否双向蕴含,取决于 NLI 模型对“政治中心”的处理,而这恰恰是长尾语义。粒度漂移的直接后果是:同一个答案集合,换问法后簇的划分变了,熵就变了。

近期工作开始正视这一点。有研究提出用“语义等价类”的传递闭包做一致性约束(如对 NLI 判定做图连通分量合并),也有工作转向基于 LLM 自身作为判定器的方案。笔者认为,用 LLM 做等价判定是把不确定性从一个模型转移到另一个模型,必须同时报告判定器自身的校准误差,否则只是把问题藏起来了。

3.3 第三层:提示词分布偏移与内部表征漂移

从机制上看,问法改变会改变模型内部激活的分布。已有可解释性研究表明,同一事实的不同表述在残差流中会激活部分重叠但不等同的特征方向。当问法把模型推向“更愿意展开”的模式时,输出分布的尾部被拉长,采样更容易落到低概率语义簇,熵自然上升。这不是“模型更不确定”,而是“模型被问法引导到了不同的生成模式”。

这一层最难用纯统计手段消除,因为它涉及模型行为模式切换。工程上可行的做法是把问法当作协变量,在检测器里做条件化:不是问“熵是多少”,而是问“在当前问法类型下,熵相对基线的偏移是多少”。这本质上是从绝对阈值转向相对阈值。

3.4 第四层:解码参数与采样温度的耦合

温度、top-p、重复惩罚都会改变采样分布,从而改变语义熵。温度从 0.7 提到 1.0,熵值普遍上升,且上升幅度与问法相关:开放问法上升更快。这意味着跨问法比较熵值时,解码参数必须严格固定,否则测到的是参数差异而非问法差异。这一点在复现文献结果时尤其容易被忽略。

工程提示:任何跨问法的熵比较,都应先做“解码参数锁定 + 采样预算锁定 + 等价判定器锁定”三锁,否则方差分解没有意义。

四、测量协议:把“稳不稳”变成可计算量

4.1 问法扰动集的构造

要测量问法稳定性,先要有语义等价但表述不同的问法集合。构造原则有四条:(1) 语义等价由人工双盲标注确认,不依赖模型;(2) 覆盖至少四类扰动——措辞替换、句式变换、指令附加(“简要回答”)、视角变换(“据你所知”);(3) 每题至少 8 个变体,保证方差估计有自由度;(4) 变体之间不引入新的信息约束。一个可复用的构造模板如下:

perturbation_set = {
  "base":      "{q}",
  "paraphrase":"{q} 换句话说,{q_alt}",
  "concise":   "请用一句话回答:{q}",
  "brief":     "简要回答:{q}",
  "epistemic": "据你所知,{q}",
  "perspective":"从历史角度看,{q}",
  "format":    "以要点形式回答:{q}",
  "verify":    "先确认事实再回答:{q}"
}

本文评述:扰动集的质量直接决定测量结论。如果变体里混入了真正改变问题约束的表述(比如把“哪一年”改成“大约哪一年”),测到的就不是问法稳定性而是问题本身的不确定性。构造阶段必须做等价性审计,并公开审计记录。

4.2 方差分解:把总方差拆到四个来源

对每个问题 q 和每个变体 v,重复采样 R 次(建议 R≥5 个独立批次,每批 N=20),得到熵值 H(q,v,r)。然后做嵌套方差分解:

Var_total = Var_sampling + Var_paraphrase + Var_judge + Var_residual
Var_sampling  = 批内方差(固定 q,v)
Var_paraphrase= 变体间方差(固定 q,跨 v)
Var_judge     = 更换等价判定器带来的方差
Var_residual  = 交互项与未解释部分

这个分解的价值在于把“熵不稳”从一个笼统抱怨变成可归因的诊断。如果 Var_paraphrase 占比高,说明问法敏感性是主因,应优先做问法条件化;如果 Var_judge 占比高,说明等价判定器是瓶颈,应优先换判定方案;如果 Var_sampling 占比高,说明采样预算不足,应加 N 或做偏差修正。

4.3 一个可复现的测量脚本骨架

下面给出最小可复现骨架(伪代码,依赖任意支持批量采样的推理后端)。它把“锁定三参数、批量采样、聚类、分解”串成一条流水线,便于直接移植到内部评测平台。

def measure_stability(q, variants, R=5, N=20, T=0.7):
    records = []
    for v in variants:
        for r in range(R):
            samples = llm.sample(v.format(q=q), n=N, temperature=T)
            clusters = semantic_cluster(samples, judge=nli_judge)
            H = entropy(cluster_distribution(clusters))
            records.append({"variant": v.name, "batch": r, "H": H})
    return variance_decompose(records)

def variance_decompose(records):
    # 组内(同 variant 跨 batch)与组间(跨 variant)
    within  = mean([var(g["H"]) for _, g in groupby(records, "variant")])
    between = var([mean(g["H"]) for _, g in groupby(records, "variant")])
    return {"Var_sampling": within, "Var_paraphrase": between}

需要强调:semantic_cluster 的实现必须与线上检测器完全一致,否则测到的稳定性与线上行为脱节。笔者建议把聚类器版本号写进评测记录,作为可追溯字段。

4.4 数据集与预处理细节

公开评测中常用的数据集包括 TriviaQA、Natural Questions、TruthfulQA 与 SimpleQA。以 TruthfulQA 为例,其设计目标就是诱导模型复述常见误解,因此语义熵在该集上的分布天然偏高,不适合直接拿来做阈值校准。预处理建议:(1) 剔除多跳、需要外部检索才能回答的条目;(2) 对答案做规范化(去冠词、统一数字格式)后再做等价判定;(3) 按问题类型分层抽样,避免事实类与观点类比例失衡;(4) 记录每条样本的问法变体来源,保证可审计。上述预处理为本文建议流程,具体比例应随业务分布调整。

五、工程路径:从单点检测到在线监控

5.1 路径一:问法条件化的相对阈值

既然绝对熵值随问法漂移,最直接的工程改造是把阈值改成条件化的。具体步骤:(1) 给每个问法打上类型标签(开放/封闭/指令附加/视角变换);(2) 在离线校准集上,对每个类型分别拟合熵值的分位数阈值;(3) 线上检测时按类型取对应阈值。这样做的代价是需要维护一张“问法类型 × 阈值”表,收益是把误报率从不可控降到可监控。

本文评述:条件化阈值本质上是承认“语义熵不是问法不变的量”,并用工程手段吸收这种不变性缺失。它不是理论上的优雅解,但在当前等价判定技术条件下是性价比最高的解。

5.2 路径二:跨问法聚合而非单问法判定

既然单个问法的熵不稳,那就用多个问法的熵做聚合。聚合方式有三种:均值、中位数、以及“最小熵”。最小熵的逻辑是:如果模型在某个问法下表现出极低语义熵且答案一致,那么它大概率真的知道;高熵问法可能只是被引导到了展开模式。这个思路与“多视角一致性”检测相通,但需要警惕一种失败模式:模型对错误答案也可能高度自信,此时最小熵会给出假阴性。

因此聚合必须与答案正确性的外部信号结合,例如检索证据、知识库校验。单靠语义熵的聚合无法区分“自信地正确”和“自信地错误”,这是语义熵作为不确定性估计量的根本边界。

5.3 路径三:在线监控与漂移告警

把语义熵当作监控指标而非单次判据,是更稳健的用法。具体做法:对每个问法类型维护熵值的滑动分布,用 EWMA 或分位数跟踪检测漂移;当某类型的熵分布整体偏移超过阈值时告警。这能捕捉模型版本升级、提示词模板变更、检索库更新带来的系统性变化,而这些变化恰恰是单次检测最容易漏掉的。

工程路径 解决的问题 主要成本
条件化阈值绝对阈值失效维护类型表与校准集
跨问法聚合单问法方差大采样成本成倍增加
在线监控系统性漂移需要持续流量与告警治理

5.4 拓展资源

想深入复现语义熵,可参考开源实现与教程:Semantic Uncertainty 官方代码库、LLM 不确定性评测工具,以及 Hugging Face 上关于 NLI 判定器的模型卡与使用说明(NLI 模型检索)。视频类资源可参考 NeurIPS/ICML 相关论文的作者报告,检索关键词“semantic entropy hallucination detection”。

六、对比与局限:语义熵不是万能钥匙

6.1 与其他不确定性信号的对比

语义熵不是唯一的不确定性信号。token 熵便宜但对改写敏感;自一致性(self-consistency)与语义熵同源但只取多数票;基于隐藏状态的概率估计(如 P(True)、语义嵌入的线性探针)成本更低但依赖训练数据分布;检索校验准确率高但需要外部知识源。它们的适用边界不同:语义熵适合“答案短、事实性强、可多次采样”的场景,不适合长文生成与开放式创作。

本文评述:把语义熵与其他信号做简单加权融合,往往不如按场景路由。工程上更稳的做法是先判断问题类型,再选择信号组合,而不是追求一个万能分数。

6.2 语义熵的三个硬边界

第一,等价判定的语义粒度不可自动校准。什么算“同一个意思”依赖任务,检测器无法自知。第二,高置信错误无法被熵捕捉。模型可能对错误答案高度一致,语义熵很低。第三,采样成本随问题难度非线性上升。长答案、多跳问题的采样与聚类成本远高于短事实题,规模化部署需要预算控制。

这三点决定了语义熵的合理定位:它是一个高召回、中等精确的初筛信号,而不是终审判决。把它放在流水线前段做粗筛,后段接检索校验或人工抽检,才是符合其统计特性的用法。

6.3 前沿方向

近期研究有几个值得关注的方向:一是把语义等价判定做成可学习的、带校准的组件,并报告判定器自身的不确定性;二是用内部表征的一致性替代输出层采样,降低采样成本;三是把问法作为因果变量做干预分析,区分“问法导致的模式切换”与“真实知识缺口”。这些方向都指向同一个结论:语义熵的稳定性问题,本质上是等价类定义与输入分布建模的问题,而不是熵公式本身的问题。

七、结论与展望

回到标题的问题:语义层面的不确定性到底稳不稳定?本文的答案是——条件稳定,而非绝对稳定。在固定等价类定义、固定采样预算、固定问法分布的条件下,语义熵是一个可用的不确定性估计量;一旦放开其中任一条件,熵值就会漂移,且漂移量可以被分解、被测量、被工程手段部分吸收。

对从业者而言,可操作的结论有三条:第一,不要用单一绝对阈值,改用问法条件化阈值或跨问法聚合;第二,把方差分解纳入评测流程,先诊断再优化;第三,把语义熵定位为初筛信号,与检索校验、人工抽检组成分层流水线。对研究者而言,等价判定的校准与问法干预的因果分析,是比继续调熵公式更有价值的方向。

不确定性估计的价值不在于给出一个精确数字,而在于让系统知道自己在哪里可能出错。语义熵的稳定性讨论,最终服务于这个更朴素的目标。

主要参考文献

  1. Kuhn, L., Gal, Y., & Farquhar, S. (2023). Semantic Uncertainty: Linguistic Invariances for Uncertainty Estimation in Natural Language Generation. ICLR 2023.
  2. Farquhar, S., Kossen, J., Kuhn, L., & Gal, Y. (2024). Detecting hallucinations in large language models using semantic entropy. Nature, 630, 625–630.
  3. Lin, S., Hilton, J., & Evans, O. (2022). TruthfulQA: Measuring How Models Mimic Human Falsehoods. ACL 2022.
  4. Joshi, M., Choi, E., Weld, D., & Zettlemoyer, L. (2017). TriviaQA: A Large Scale Distantly Supervised Challenge Dataset for Reading Comprehension. ACL 2017.
  5. Kwiatkowski, T., et al. (2019). Natural Questions: A Benchmark for Question Answering Research. TACL, 7, 452–466.
  6. Wang, X., et al. (2023). Self-Consistency Improves Chain of Thought Reasoning in Language Models. ICLR 2023.
  7. Kadavath, S., et al. (2022). Language Models (Mostly) Know What They Know. arXiv:2207.05221.
  8. Miller, G. A. (1955). Note on the Bias of Information Estimates. Information Theory in Psychology.
  9. OpenAI (2024). SimpleQA: A Factuality Benchmark for Large Language Models. arXiv 预印本.

说明:本文参考文献池覆盖语义不确定性、幻觉检测、问答评测与信息论估计等方向共 60 余篇,其中近三年文献占比超过 50%;上列为其中 9 篇主要文献,引用时请以原始文献为准。文中涉及的模拟数据均已标注,数据集预处理细节见 4.4 节。

文章声明:本文内容仅为作者学习、思考、经验、笔记的总结,仅供技术交流与参考。文中观点仅代表笔者个人思辨,不构成任何学术建议、商业建议或专业建议。所有数据来源已标注,引用时请以原始文献为准。

内容仅供学习参考。如需引用,请以原始文献为准。  全文约 6800 字 | 参考文献 60 余篇(主要 9 篇)。
🔒 复制本站文章内容需登录并达到 L3。当前:未登录

分享到

💬
微信
📷
朋友圈
🐧
QQ好友
🌐
QQ空间
👁
微博
📌
钉钉
🔗
复制链接
📑
复制图文

微信扫一扫分享

打开微信「扫一扫」,扫描二维码后在微信中分享给好友或朋友圈。

💬 评论 (0)

评论功能已关闭

⏸️ 本站暂未开放评论功能,不能进行评论,此为规划的后续开发预留
首页| 关于本网| 网站声明| 联系我们| 网站纠错| 服务| 网站地图
黔ICP备19010680号-1  |  邮箱:six528528@163.com
贵公网安备 52010302001819号
Copyright 2019-2026 http://www.databrush.com/ All rights reserved.
QQ
QQ扫一扫
Logo
DBN数据刷