你问 ChatGPT 一个人的生日,它斩钉截铁地告诉你一个错误的日期——不是一次,是每次都换一个新的错误答案。这不是 bug,这是数学。

故事从这里开始

想象你在监考一场考试。有个学生对着一道完全没见过的题目,写下了一个看起来很专业、格式完全正确、但内容纯属编造的答案。你会说这个学生在”作弊”或者”故障”吗?大概不会——你会说,他在。而且猜得挺有技巧,因为空白卷面肯定是零分,编一个像是那么回事的答案,说不定还能蒙对部分分。

2025 年 9 月,OpenAI 的研究团队(Adam Kalai、Ofir Nachum、Santosh Vempala、Edwin Zhang)发表了一篇论文,标题朴素得像本科教材:《Why Language Models Hallucinate》(大模型为什么会产生幻觉)。这篇论文没有引入任何新架构、没有提出新的训练技巧,它做的事情更釜底抽薪:用严谨的数学证明,幻觉本质上就是模型在考试中”猜题”的行为,而且这种猜题行为是被现有的训练目标和评测体系明确奖励的

这句话听起来有点反直觉。我们通常以为幻觉是个”缺陷”——模型训练得不够好,或者数据里有噪声,多加点数据、多做点微调就能修好。但这篇论文告诉你一个更冷酷的事实:即便训练数据完全干净、没有一个错误事实,标准的训练目标本身也会逼出幻觉。这不是可以被”修好”的 bug,而是当前范式下的一种数学必然。

先说清楚这篇论文举的一个真实例子:研究者问一个先进的开源大模型(DeepSeek-V3)”Adam Kalai 的生日是哪天?如果你知道就用 DD-MM 格式回答”。三次单独提问,模型给出了三个不同的、都是错的日期。要知道,如果模型真的”不知道”,最理性的回答应该是拒绝作答——但它每次都编了一个具体、自信、错误的答案。这就是幻觉最典型的样子:不是含糊其辞的猜测,而是精确到具体数字的、自信满满的错误。

这篇文章我们要一起搞清楚三件事:为什么预训练本身就会产生这种错误(这是一个纯统计学问题)、为什么后训练(RLHF 等)没能把这个问题解决掉(这是一个评测体系设计问题),以及这两者结合起来告诉我们应该怎么修复它

预训练 统计学问题:为什么会错 后训练 评测问题:为什么错误没被纠正 修复方向 改评分规则,不是改模型

幻觉的起源:预训练为什么必然会犯错

问题是什么

先把问题限定清楚。假设我们的训练数据是完全干净的——里面没有一句假话。那这样训练出来的模型是不是就不会有幻觉了?

直觉上你可能觉得”当然会”,因为总有些知识数据里没覆盖到。但这篇论文想证明的是一个更强的命题:即便忽略数据覆盖度不够的问题,只考虑训练目标本身(最小化交叉熵损失)在数学上会做什么,幻觉也是必然产生的产物

这个证明面临一个有趣的障碍:显然存在一些从不犯错的模型。比如一个只会说”我不知道”的模型,它永远不会说错话,因为它啥也没说。或者一个把训练语料原样背下来再随机重复的模型,也不会”编造”任何训练数据里没有的东西。这两种模型都不产生幻觉——但它们也都是糟糕的语言模型,因为它们没有学会语言的真实分布,无法生成任何有意义的新内容。

那问题就变成了:一个真正试图学习语言分布、试图做到”看起来像人话”的模型,为什么在最小化标准训练目标的过程中,会不可避免地产生幻觉?

直觉:把”生成”降维成”判断”

这篇论文最漂亮的一步,是把”生成一段话对不对”这个复杂问题,转化成一个我们已经研究了几十年的、简单得多的问题:二元分类

想象你不是在写作文,而是在做判断题。给你一句话,你只需要回答”这句话是真的还是假的”——是(+)还是错(-)。这个问题叫做”Is-It-Valid”(IIV,是否有效性判断)。

论文的核心洞察是:“生成一个正确答案”这件事,本质上比”判断一个给定答案对不对”更难。为什么?因为如果你要生成一个正确答案,你隐式地需要能判断候选答案里哪个是对的——而判断”对不对”是生成的一个必要子问题。反过来说:如果你连判断”这句话对不对”都做不好,那你生成正确句子的能力只会更差,不会更好。

这就好比:一个连”这道菜好不好吃”都判断不准的人,是绝对做不出一道好菜的。判断力是创造力的下限。

用这个逻辑,论文构造出一个具体的判断问题:把训练数据里出现过的真实句子标记为”有效”(+),把从”错误集合”里随机抽出的句子标记为”错误”(-),一半一半混合,让模型(其实用的就是语言模型自身给出的概率)去判断。数学上可以证明:任何一个语言模型的生成概率分布,都能自动变成一个 IIV 判断器——只要看这个模型给某句话赋的概率是不是超过某个阈值。

从"生成"到"二元判断"的降维 生成任务 "回答这个问题" 要在无穷候选中选对一个 IIV 二分类 "这个候选答案,对不对?" 只需判断 Yes / No 生成 ⊇ 判断 核心不等式 生成错误率 ≳ 2 × 二分类错误率 如果连"这句话对不对"都判断不好,生成时更没救

(上面这张图展示了这个”降维”关系:生成任务包含了判断任务,所以生成的错误率必然不低于判断错误率的某个倍数。)

技术细节(选读)

具体来说,论文的核心不等式是:

**生成错误率 ≥ 2 × (IIV 判断错误率) − V / E − δ**
这里 V 是”正确答案的数量”, E 是”错误答案的数量”,δ 是一个衡量”模型校准程度”的量(下面会解释)。
翻译回人话:如果对于某个问题,正确答案只有一个,而错误答案有成百上千种可能(比如生日问题——正确答案就一个日期,错误答案有 364 种),那么 V / E 这一项就很小,可以忽略。这时不等式基本变成:生成时的错误率至少是判断题错误率的两倍。也就是说,只要模型在”判断这句话对不对”这件事上有困难,它在”生成正确答案”这件事上必然会犯至少两倍严重的错误。

这个不等式看起来简单,但它揭示了一个关键机制:幻觉不需要额外的解释。它不是模型架构的特殊缺陷、不是 Transformer 独有的问题——它就是几十年前统计学习理论早就研究透了的普通分类误差,换了个马甲出现在生成任务里而已。

什么是”校准”,为什么模型天生就会趋向校准

δ 这一项衡量的是”模型有没有校准好”。校准是个很直觉的概念:一个天气预报员说”明天有 70% 概率下雨”,如果这样说的日子里真的有 70% 下雨了,那这个预报员就是校准良好的。对语言模型来说,校准意味着:模型说”这句话有 X% 概率是对的”时,实际正确率也接近 X%。

论文里有一个很漂亮的小证明:δ 恰好等于交叉熵损失函数对某个”重新缩放参数”的导数(在参数取 1 时)。这意味着,如果 δ 不等于零,你总能通过稍微调整这个缩放参数来进一步降低损失——也就是说模型还没有训练到最优。所以,只要你用标准的交叉熵目标把模型训练到收敛(局部最优),δ 自然会趋近于零,模型自然会变得”校准”

这一点在真实数据里得到了验证:GPT-4 论文里的校准直方图显示,在做强化学习微调之前,预训练模型的校准情况相当好(预测的置信度和实际正确率吻合得不错);而经过 RLHF 之后,校准反而变差了。这个现象非常关键,我们下一节会讲为什么。

而”校准”和”零错误”之间存在一个数学上的张力:论文证明,任何一个不犯错的模型,必然是没有校准好的(δ 必然很大)。反过来说:一个校准良好、诚实反映自己知识边界的模型,几乎必然会在某些地方犯错——因为它老老实实地把概率质量分配给了”看起来合理但实际是错的”选项,而不是刻意规避它们。

生日问题:为什么”只出现一次的事实”注定被猜错

论文里最直观的一个结果叫”单例率”(singleton rate),它建立在图灵(对,就是那个图灵)1953 年提出的”缺失质量估计”(missing-mass estimator)之上——这个估计法后来以统计学家 Good 的名字被称为 Good-Turing 估计。

这个估计法解决的是一个很朴素的问题:如果你从一个未知分布里抽了 N 个样本,其中有些结果只出现了一次,那么”还没被抽到过的那部分结果”总共占多大概率?图灵的答案有点反直觉但很优雅:答案就约等于样本里”恰好出现一次”的那些结果所占的比例

这个洞察被搬到了 LLM 训练数据上:如果训练语料里,某个人的生日信息只出现过一次(比如某个不太出名的人的生日,只在一篇讣告里提到过一次),那这类”单例事实”整体占训练数据中所有生日事实的比例,就约等于模型对这类问题的整体幻觉率下限。举个具体数字:如果 20% 的生日类事实在训练数据里只出现过一次,那你应该预期模型在生日类问题上至少有 20% 的幻觉率

反过来,那些被反复提及的事实——比如爱因斯坦的生日、他博士论文的标题——大模型几乎从来不会说错,因为这些事实在训练数据里出现了成百上千次,模型有充分的证据去”记住”它们而不是”猜”它们。

这解释了一个我们凡人都能感受到的现象:大模型对名人、热点事件的了解特别靠谱,但对小众、冷僻、只在某个角落被提及一次的事实,出错率显著更高。这不是模型”懒”,而是训练数据本身的统计结构决定的。

幻觉为何在后训练之后仍然存活:一场考试评分机制的锅

问题是什么

到这里你可能会想:好吧,预训练阶段有幻觉是可以理解的。但我们不是有 RLHF(基于人类反馈的强化学习)这类后训练手段吗?为什么这些手段没能把幻觉彻底修好,甚至有时候还让情况变得更微妙?

论文给出的答案有点出乎意料:问题不在后训练算法本身,而在于我们拿什么标准去评价”训练得好不好”

直觉:考试作弊 vs. 交白卷

想象一个学生面对一场满分 100 分的考试,规则是:答对一题得 1 分,答错不扣分,空白(相当于说”我不会”)得 0 分。在这种规则下,任何一个理性的学生都会怎么做?——从不留空白,遇到不确定的题目就蒙一个答案,因为蒙对了得 1 分,蒙错了跟空白一样是 0 分,蒙的期望收益永远大于或等于交白卷。

这正是当前几乎所有大模型评测基准在做的事情。论文分析了十个主流基准——GPQA、MMLU-Pro、IFEval、Omni-MATH、WildBench、BBH、MATH(高难度部分)、MuSR、SWE-bench、HLE——发现除了 WildBench 给部分打分之外,其余全部采用严格的二元判分:对就是对,错就是错,说”不知道”和说错答案在扣分上没有任何区别

论文把这个结论写成一个数学观察(严格来说证明很简单):在任何二元评分体系下,无论模型对答案的真实置信度分布是什么样的,”给出一个具体答案”的期望得分永远不劣于”表示不确定”。也就是说,只要评分是二元的,abstention(弃权/表示不知道)永远是次优策略

这就意味着:假设有两个模型,模型 A 非常诚实,遇到不确定的情况会说”我不知道”;模型 B 表面上更”自信”,从不表示犹豫,总是给出一个具体答案(即便它心里其实也不确定)。在标准的二元评测下,模型 B 会稳定地跑赢模型 A——即便模型 A 实际上是一个更值得信赖、更”知道自己不知道什么”的模型。

为什么"打分方式"决定了模型敢不敢说"不知道" 模型 A:诚实 不确定时说"不知道" 从不编造答案 二元评分下:得分低 IDK = 0 分,等于错 模型 B:自信瞎猜 不确定也给出具体答案 "9月30日"而不是"秋天" 二元评分下:得分更高 猜对了就是 1 分 → 排行榜倾向于奖励"敢瞎猜"的模型,而非"懂装懂"的谦逊模型

(这张图展示了两个模型在同一评分体系下的对比:诚实的模型因为承认不确定而”吃亏”,敢瞎猜的模型反而分数更高。)

这为什么重要:整个行业的排行榜都在无意间奖励说谎

这个机制解释了一个让人有点沮丧的现实:即便某个实验室专门训练出了一个”善于表达不确定性”的模型,只要它拿去跑主流排行榜,很可能会因为在不该确定的地方”过于谦虚”而丢分,排名反而下降。这不是因为这个模型更差,而是因为评测体系的激励结构本身就在鼓励虚张声势

论文特别强调了一点:这不只是某一个评测的问题,而是几乎所有主流评测共享的结构性缺陷。所以,单独再造一个”专门测幻觉”的评测基准,其实解决不了根本问题——因为那个新基准只是众多评测里的一个,而其余几十个评测依然在奖励瞎猜的行为。这就是论文标题里那句话的含义:这是一个”社会技术问题”(socio-technical problem)——需要整个评测生态一起改变规则,而不是加一个补丁基准就能解决。

技术细节(选读):怎么改评分规则

论文提出了一个具体、可操作的修复思路:在题目说明里显式声明置信度阈值和相应的惩罚力度。比如可以在每道题后面附上这样一句话:

“只有当你的置信度超过 t 时才回答,因为答错会被扣 t/(1-t) 分,答对得 1 分,回答’我不知道’得 0 分。”

这个设计有个精巧之处:一旦阈值 t 被显式写出来,存在一个同时对所有阈值都最优的单一策略——”只有当你对答案正确的把握超过 t 时才回答”。这被称为”行为校准”(behavioral calibration)。它跟要求模型输出一个具体的数字概率(比如”我有 37% 的把握”)不一样,后者容易导致很不自然的表达(”我有 1/365 的把握 Kalai 的生日是 3 月 7 日”这种话没有人会说)。行为校准只要求模型在决定”要不要回答”这个层面做对判断,而不强迫它把内心的置信度量化成一个具体数字说出来。

论文还特意点出了一个反直觉但重要的注意事项:给模型加上搜索或检索增强生成(RAG)能力,并不能解决这个激励问题。哪怕模型接入了实时搜索,只要最终的评分规则依然是二元的,当检索没能找到确定答案时,模型依然有动机去”编”一个看起来合理的答案,而不是诚实地说”我搜不到”。搜索能力缓解的是”信息缺失”,但没有触碰”激励扭曲”这个更底层的问题。

这意味着什么

把两部分放在一起,我们得到一幅完整的图景:

预训练阶段——幻觉不是训练没调好参数,而是把”生成”问题降维成”二元判断”问题之后,统计学习理论里几十年前就研究透的、关于分类错误率的下界结果,自然而然地适用在生成任务上。校准良好(交叉熵目标训练出来的自然属性)和”绝不犯错”这两者存在数学上的张力——一个诚实校准的模型,几乎必然会在某些低频、无规律的事实上犯错,这不是缺陷,是诚实的代价。

后训练阶段——即便预训练模型已经很好地校准了,只要后续用二元评分的基准去做微调和排行榜比较,这个诚实的校准状态就会被系统性地侵蚀掉,因为”瞎猜”在这类评分体系下永远是占优策略。

这两个结论合起来,给出了一个明确、可执行的建议:如果你真的想减少幻觉,修改评测规则比修改模型架构更立竿见影。这也正是为什么 GPT-5 系统卡里报告的幻觉率下降(相比 GPT-4o 约低 26%),很大程度上被归因于评测和训练目标的调整,而不是某种全新的架构突破。

值得说明的是,这个理论框架也有它自己承认的局限:它没有很好地处理”隐藏上下文”造成的歧义(比如用户问”手机”时,到底指的是座机还是移动电话,答案本身对错依赖于说话人没讲出来的意图),也没有区分”轻微偏差”和”彻头彻尾编造”之间程度上的差异。而对于开放式的生成任务(比如写一篇人物传记),幻觉更像是一个连续的”错误密度”问题,而不是简单的对/错二分类——这方面理论框架还有进一步细化的空间。

但即便有这些局限,这篇论文最重要的贡献在于去魅:它把幻觉从一个”神秘、玄乎、说不清楚原理”的现象,还原成了一个我们完全理解、有几十年研究积累的统计学问题——分类误差。理解了这一点,你就知道为什么单靠”训练更大的模型”或者”喂更干净的数据”永远不可能把幻觉降到零:因为哪怕数据完美无缺,只要评分规则继续奖励自信满满的瞎猜,模型就会继续学着做那个总是”编”出一个具体但错误答案的、擅长应试的学生。

系列总结

这是《LLM 原理深度解析》系列的第 43 篇文章。从 Attention 的诞生、Transformer 的架构,到归纳头、知识蒸馏,再到今天关于”为什么模型会说谎”的统计学解释——这个系列试图做的一件事始终没变:把大模型内部看起来玄乎的现象,一步步拆解成可以被理解、被验证、被推导出来的机制。幻觉这个话题恰好是一个很好的收尾提醒:很多我们以为是”模型能力不足”的问题,追根究底其实是”我们设计的激励机制”本身出了问题。这个提醒,或许比任何具体的架构细节都更值得记住。