大模型幻觉的原因
一、大模型幻觉的根本原因
模型被训练成“考试型选手”,而不是“诚实型助手”,幻觉不是技术缺陷,而是训练目标和评估机制的结果。
二、解释:幻觉从何而来?
1. 预训练阶段:统计学习必然带来错误
-
模型通过大量文本学习语言分布,目标是“像人一样说话”,而不是“说真话”。
-
即使训练数据完全正确,模型也会生成训练数据中未出现过的组合,这些组合可能是错误的。
-
“Is-It-Valid(IIV)”问题:判断一个句子是否合理,比生成一个合理句子更容易。如果模型无法区分“合理但错误”和“合理且正确”,就会生成 plausible falsehoods(似是而非的错误)。
结论:幻觉是密度估计任务的副产品,不是模型“故意撒谎”。
2. 后训练阶段:评估机制奖励“猜”而非“说不知道”
-
当前主流评估(如MMLU、GPQA、MATH等)采用二元评分:答对得1分,答错或说“我不知道”得0分。
-
在这种机制下,“猜一个答案”的期望得分高于“说我不知道”。
-
模型因此被优化为**“考试型选手”**:即使不确定,也要“编一个像答案的东西”
结论:幻觉是评估机制激励的结果,不是模型能力不足。
三、支持上述解释的论据
| 论据类型 | 内容 |
|---|---|
| 实验观察 | 问模型“Adam的生日是哪天?”,多次得到不同错误答案,说明模型在“编造”而非“回忆”。 |
| 理论分析 | 提出“IIV分类器”框架,证明:生成错误 ≥ 2 × 分类错误,幻觉是分类错误的放大。 |
| 评估机制分析 | 对10个主流评估基准分析发现:全部惩罚“我不知道”,奖励猜测。 |
| 类比人类行为 | 学生在考试中也会“编答案”,因为空白比写错更吃亏,模型同理。 |
四、如何解决幻觉问题?
核心思路:不是让模型“更聪明”,而是让模型“更诚实”
解决方法一:修改评估机制 —— 明确引入置信度阈值
-
做法:在 prompt 中明确告诉模型:“只有在你置信度高于 t 时才回答,答错扣 t/(1-t) 分,说‘我不知道’得 0 分。”
-
效果:
-
让模型主动选择是否回答,而非被迫猜测。
-
使“说不知道”成为理性选择,而非“失败”。
-
| 置信度阈值 t | 答错惩罚 | 说“我不知道”得分 |
|---|---|---|
| 0.5 | 1 | 0 |
| 0.75 | 3 | 0 |
| 0.9 | 9 | 0 |
解决方法二:行为校准(Behavioral Calibration)
-
不强制模型输出概率,而是观察其在不同置信阈值下的行为:
-
是否在低置信时选择 abstain?
-
是否在高置信时准确?
-
-
优势:规避“语言模型不会表达概率”的问题,直接看行为是否理性。
解决方法三:将置信机制嵌入主流评估
-
不只是做“幻觉专用评估”,而是把置信机制嵌入 MMLU、MATH、SWE-bench 等主流基准。
-
目的:让“诚实”成为通用能力,而不是专项任务。
参考:
https://cdn.openai.com/pdf/d04913be-3f6f-4d2b-b283-ff432ef4aaa5/why-language-models-hallucinate.pdf
更多推荐


所有评论(0)