模型给了答案,结果还是错的。这种情况你可能没少遇到——同一个问题问三遍,三个不同的回答;或者模型胸有成竹地输出一个结果,回头一看全错了。
我们习惯把这些现象叫"幻觉"或者"模型不确定"。但这只是表象。真正的问题是:不确定性从哪来的?是问题没问清楚,还是模型压根不知道,又或者只是运气不好赶上了一次糟糕的采样?
最近看到一篇澳大利亚团队的论文,把 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 在可控的范围内工作,而不是盲目相信它的输出。
参考资料
- 论文原文:The Anatomy of Uncertainty in LLMs
- 相关概念:语义熵(Semantic Entropy)、校准误差(ECE)
写于 2026 年 3 月