LLM 不确定性的解剖:当 AI 说"我不知道"时,它到底在困惑什么?

11 阅读5分钟

模型给了答案,结果还是错的。这种情况你可能没少遇到——同一个问题问三遍,三个不同的回答;或者模型胸有成竹地输出一个结果,回头一看全错了。

我们习惯把这些现象叫"幻觉"或者"模型不确定"。但这只是表象。真正的问题是:不确定性从哪来的?是问题没问清楚,还是模型压根不知道,又或者只是运气不好赶上了一次糟糕的采样?

最近看到一篇澳大利亚团队的论文,把 LLM 的不确定性拆成了三个语义明确的组件。看完之后我挺受启发:原来不同类型的不确定性,需要的补救措施完全不同。


三种不确定性,三种病因

论文提出的是一个三维度分解框架。

第一种叫输入歧义(Input Ambiguity)。

说白了就是你的问题有歧义。"苹果怎么样?"——你问的是水果、公司还是某款产品?模型猜不到你的心思。

怎么测量呢?研究者用 GPT-5-nano 把原始问题改写成 5 个语义相同但表述不同的版本,分别用贪心解码生成答案。如果这 5 个答案南辕北辙,说明原问题确实存在歧义。

第二种叫知识缺口(Knowledge Gaps)。

模型肚子里没货。可能是训练数据里压根没这内容,可能是知识过时了,也可能是没把相关信息串起来。

测量方法有点意思:研究者训练了 5 个结构相同、初始化不同的 LoRA 适配器。你可以把它们理解成"同门师兄弟"——一起学同样的东西,但脑子里的权重略有差异。如果这 5 师兄弟给出的答案五花八门,说明模型内部对这个问题的知识本身就不稳。

第三种叫解码随机性(Decoding Randomness)。

这个最技术性:温度采样、Top-k、Top-p 这些解码策略本身就是概率性的,同样的输入、同样的模型,多跑几次就是会出不同的结果。测量的方法是固定输入和模型,用不同随机种子生成多次回答,算语义熵。


实验结果:不确定性会"搬家"

研究团队在 TriviaQA(事实问答)和 GSM8K(数学推理)上做了测试,用了 Llama 3 8B 和多个规格的 Gemma 3 模型。

几个发现挺有意思:

任务不同,不确定性的"罪魁祸首"也不同。

TriviaQA 上,不确定性确实能预测模型会不会翻车(AUROC 最高 0.76)。但 GSM8K 上,三种不确定性都不太管用——推理失败往往是因为模型"自信地把错误的思路走到底",而不是因为不确定。

模型越大,越"敏感"。

Llama 3 8B 在 TriviaQA 上,解码随机性最能预测失败(AUROC 0.731);换到 Gemma 3 27B,输入歧义反而成了最强的预测指标(AUROC 0.761)。

背后的逻辑是:大模型知识库更丰富,知识缺口不再是主要瓶颈;但它"懂"得多,反而对问题表述的细微差异更敏感。这有点像专家和新手的区别——专家更容易因为问题的模糊而困惑,因为ta脑子里有太多可能的解读方向。

最反直觉的一点:模型最自信的时候,反而最不可靠。

论文里有个数字我印象深刻:模型在最高置信度时,校准误差(ECE)高达 0.635;而在最不确定时,校准误差只有 0.125。

换句话说:当模型特别笃定的时候,它反而更可能出错;而当它表现得犹豫不决时,它对"自己不知道"这件事的认识反而更准确。高置信度不应该成为信任的理由——它可能是一个危险信号。


这对实际开发意味着什么?

不同类型的不确定性,需要不同的补救措施:

  • 如果是输入歧义:改写提示、加示例、明确约束边界
  • 如果是知识缺口:RAG 检索增强、注入外部知识、调用工具
  • 如果是解码随机性:调低温度、用束搜索、多次采样取共识

举个例子:你发现是输入歧义导致的输出不稳定,那花时间打磨 Prompt 是值得的;但如果是知识缺口,再怎么改 Prompt 也白搭,得考虑接入外部知识库。


写在最后

看完这篇论文,我最大的感受是:不确定性不是需要消除的噪声,它本身是有结构的信息。

当模型对某个问题表现出高不确定性时,它其实是在说:"这个问题我可能处理不好,你得多留个心眼。" 这对构建可靠的 AI 系统很重要——与其让模型硬着头皮给一个可能错的答案,不如让它诚实地表达不确定。

更进一步,这个框架指向了一种可能性:根据不确定性类型自动选择干预策略。这和 Harness Engineering 的思路是一致的——让 AI 在可控的范围内工作,而不是盲目相信它的输出。


参考资料


写于 2026 年 3 月