一、大模型幻觉的根本原因

模型被训练成“考试型选手”,而不是“诚实型助手”,幻觉不是技术缺陷,而是训练目标和评估机制的结果。

二、解释:幻觉从何而来?

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.510
0.7530
0.990

解决方法二:行为校准(Behavioral Calibration)

  • 不强制模型输出概率,而是观察其在不同置信阈值下的行为

    • 是否在低置信时选择 abstain?

    • 是否在高置信时准确?

  • 优势:规避“语言模型不会表达概率”的问题,直接看行为是否理性

解决方法三:将置信机制嵌入主流评估

  • 不只是做“幻觉专用评估”,而是把置信机制嵌入 MMLU、MATH、SWE-bench 等主流基准

  • 目的:让“诚实”成为通用能力,而不是专项任务。

参考:

https://cdn.openai.com/pdf/d04913be-3f6f-4d2b-b283-ff432ef4aaa5/why-language-models-hallucinate.pdf

OpenAI最新论文: 为什么语言模型会出现幻觉,及对AI应用的5个启示

更多推荐