Skip to Content

08:幻觉的本质:大模型为什么会一本正经地胡说

大模型在缺少事实 grounding 时沿着局部合理的 token 路径生成看似可信回答的示意图

🧭

这是「用第一性原理理解大模型」系列的第 8 篇。第 7 篇:推理与生成 解释了模型在回答问题时如何根据上下文计算下一 token 分布,并通过采样一步步生成。现在我们继续看这个生成过程最典型的副作用:幻觉。为什么一个模型会把不存在的论文、错误的事实、虚构的链接和不可靠的推理说得像真的一样?

前几篇文章,我们已经搭起了一条主线:

大模型的底层目标是预测下一个 token; 为了预测得更好,它会压缩语言背后的世界结构; 推理时,它不是打印预写答案,而是在概率分布里一步步走出 token 路径。

这条主线能解释很多能力,也能解释很多问题。

幻觉就是其中最重要的问题之一。

很多人第一次遇到大模型幻觉时,会有一种很强的违和感:

它的语气很笃定; 句子很流畅; 结构很完整; 甚至还会给出看起来像真的来源、日期、名字和数字; 但内容是错的。

这也是幻觉最麻烦的地方。它不是普通的「不会答」,普通的不会答,用户一眼就能看出来。幻觉更危险,因为它经常长得像知识。

然而:

幻觉不是模型「故意撒谎」,而是它在缺少可靠依据和事实校验时,顺着最像正确答案的文字继续往下说,看似局部最优,但并非正确。

一、先把「幻觉」定义清楚

先不要急着把幻觉理解成「模型骗人」。

更准确地说,幻觉是:

模型生成了看似合理、表达流畅、语气自信, 但缺少事实支撑、与真实世界不一致, 或无法从给定上下文中推出的内容。

这里有三个关键词:

看似合理; 缺少支撑; 无法验证。

比如用户问:

请总结某篇并不存在的论文。

一个理想系统应该说:

我没有找到这篇论文,无法确认它是否存在。

但一个容易幻觉的模型可能会生成:

这篇论文提出了一种新的多模态对齐框架, 在若干公开数据集上取得了显著提升, 作者还通过消融实验验证了模块有效性。

这段话的问题不是语言不通。

恰恰相反,它太像一段正常论文总结了。

从语言分布上看,这是一段很「像」论文总结的文字。

但从事实验证上看,它没有来源。

这就是第一性原理里的关键差异:

语言上的合理性,不等于事实上的真实性。

概率上合理的下一个 token 路径仍然需要外部世界验证的示意图

大模型训练时学到的是:

什么样的 token 序列更可能出现在什么样的上下文后面。

但事实判断需要的是:

这个说法是否对应真实世界; 是否有可靠来源; 是否在当前时间仍然成立; 是否能被数据、工具或用户提供的上下文支持。

这两件事虽相关,却存在本质差异,因而产生了模型幻觉。

二、为什么 next-token prediction 会天然带来幻觉风险

回到第一篇我们讲过的大语言模型核心机制:

给定前文,预测下一个 token。

这个机制非常强大。

因为如果模型要预测人类语言,它就必须学习很多隐藏结构:

语法; 事实; 概念关系; 因果顺序; 代码模式; 论证方式; 任务格式; 社会常识。

但同一个目标也带来了一个限制:

训练目标奖励的是「把下一个 token 预测得像训练数据」, 而不是「每一句生成内容都被外部事实验证过」。

这不是一个小区别。

如果用户问:

某公司最新一轮融资发生在什么时候?

模型可以根据训练中见过的大量商业新闻样式,生成一个很像真的回答:

该公司在 2024 年完成了 B 轮融资,投资方包括若干知名机构。

从语言模式看,这句话非常自然。

但它可能完全不真实。

原因是模型内部并没有自动执行这些动作:

查询实时数据库; 打开新闻网页; 核对公司公告; 确认日期; 校验投资方; 判断信息是否过期。

除非系统给它接了工具,或者把可靠资料放进上下文,否则裸模型只能依靠参数中的压缩记忆和当前 prompt 里的信息。

这就像一个人只凭印象回答问题。

如果印象足够清楚,可能答对。

如果印象模糊,又被要求继续回答,就很容易补出一个听起来合理的版本。

三、模型参数是有损压缩,不是事实数据库

第 4 篇我们说过:

语言是世界的压缩; 模型通过预测语言,被迫学习语言背后的世界结构。

但压缩有一个重要特点:

压缩不是完整复制。

模型参数不是一个逐条可查的事实数据库。

它更像一个巨大的统计结构,里面保存的是从海量文本中提炼出来的模式、关系和倾向。

这让模型能泛化。

它可以把多个见过的结构组合起来,回答没见过的新问题。

但这也会带来风险:

高频事实容易被记住; 低频事实容易变模糊; 相似实体容易混淆; 过期信息不会自动更新; 训练数据中互相冲突的信息可能被混在一起; 参数里没有的私有信息不会凭空出现。

因此,幻觉经常出现在知识边界附近。

模型参数、上下文和外部世界之间的知识边界与未知缺口示意图

所谓知识边界,就是:

模型参数里可能有一些相关模式; 上下文里没有足够证据; 真实答案又需要外部信息。

这时,如果系统继续要求模型给出答案,模型就可能做一种「合理插值」。

它会根据相似模式补全:

某个论文标题像真实论文; 某个作者名字像这个领域的人; 某个 API 参数像常见命名; 某个数字范围像行业平均值; 某个案例结构像商业报道。

这种补全并不总是错。

很多时候,泛化能力正是从这里来的。

但当任务要求事实准确时,「合理插值」就可能变成幻觉。

四、为什么幻觉经常听起来很自信

幻觉还有一个很反直觉的地方:

模型错的时候,往往不会天然表现出心虚。

这是因为「自信语气」本身也是一种语言模式。

在训练数据里,很多正式回答、教程、百科、论文摘要、产品文档和新闻报道,都使用确定语气。

当模型识别到用户正在要求一个答案时,它很可能进入这种输出风格:

先给结论; 再给理由; 再列要点; 最后总结。

这种格式对大多数任务是有帮助的。

但如果模型缺少事实依据,它仍然可能沿用这套格式。

于是就出现了很危险的组合:

信息不确定; 输出格式确定; 语气确定; 用户感知到的是「它好像很懂」。

这不是模型真的有主观信念。

更准确地说,模型在生成一段高概率的「自信回答文本」。

如果训练和对齐过程强调「有帮助地回答用户」,但系统没有同时教会它在证据不足时稳定拒答或表达不确定,幻觉风险就会上升。

这也是为什么现代 AI 产品需要区分两件事:

回答能力; 校准能力。

回答能力是:

能不能生成结构清楚、语言自然、对用户有帮助的内容。

校准能力是:

能不能知道自己哪里有证据,哪里没有证据; 能不能在不确定时少说一点; 能不能把事实、推测和建议分开。

一个模型回答能力很强,但校准能力不足,就会显得特别会「一本正经地胡说」。

五、自回归生成会让小错误越滚越大

第 7 篇讲过,大模型生成不是一次性产生完整答案,而是逐 token 输出:

当前上下文 -> 下一 token 分布 -> 选中 token -> 接回上下文 -> 重复

这个机制也会放大幻觉。

因为每一个已经生成的 token,都会变成后续生成的新上下文。

如果前面生成了一个没有依据的小细节,后面模型往往会围绕这个细节继续写下去。

比如它先补了一个不存在的论文年份:

这篇论文发表于 2023 年。

接下来,它可能继续生成:

作者在 2023 年的实验中对比了三个 baseline; 结果显示该方法在两个数据集上领先; 论文最后讨论了部署成本。

这些后续句子不一定来自真实资料。

它们只是沿着前面那个「2023 年论文」的局部路径继续扩展。

自回归生成中早期小猜测被接回上下文并逐步放大成完整错误回答的示意图

这也是为什么幻觉常常不是一个孤立错误,而是一串连贯错误。

第一步错得很小。

第二步开始解释。

第三步补充细节。

第四步引用来源。

第五步给出结论。

用户看到的是一个完整故事。

但这个故事可能从第一块砖开始就是悬空的。

这里的第一性原理是:

自回归生成具有路径依赖; 一旦错误 token 被写入上下文, 后续生成会把它当作已发生的事实继续利用。

除非系统加入外部校验、反思、检索或用户确认,否则模型不会天然回滚到前面那一步。

六、幻觉有几种常见来源

把机制拆开后,我们可以更清楚地分类。

幻觉不是单一原因导致的,它通常来自几类边界问题。

类型表面现象底层原因
知识缺口编造事实、人物、论文、链接参数里没有足够信息,上下文也没给证据
信息过期使用旧价格、旧职位、旧政策模型参数不会自动随现实更新
实体混淆把相似公司、作者、产品混在一起训练语料中相似模式被压缩到相近区域
上下文冲突忽略用户给的新信息,沿用旧说法上下文中证据冲突,模型没有显式裁判机制
推理断裂中间步骤看似合理,结论却错生成的是推理文本,不等于执行了可靠证明
格式压力为了满足表格、JSON、引用格式而补内容输出约束强,但事实证据不足
过度迎合用户暗示某答案,模型顺着说对齐让模型倾向于配合用户,但缺少事实校准

这些类型在真实产品里经常混在一起。

比如用户要求:

请列出某产品过去 12 个月的所有版本更新,并给出每次更新的用户反馈。

如果系统没有接产品数据库、更新日志和反馈数据,模型很可能凭借产品发布文章的常见结构补出一张表。

表格越完整,风险反而越高。

因为完整格式会让用户误以为数据真的存在。

七、减少幻觉,不能只靠一句 prompt

很多人会尝试用 prompt 解决幻觉:

请不要编造; 如果不知道就说不知道; 务必保证事实准确; 回答前请仔细检查。

这些提示有用。

但它们不够。

原因是 prompt 仍然只是上下文的一部分。

它可以改变模型的行为倾向,但不能凭空提供事实,也不能替代外部验证。

如果一个问题需要实时数据、私有数据或精确计算,光靠一句「不要胡说」是不够的。

更可靠的做法,是把幻觉问题拆成系统问题:

模型负责语言理解和生成; RAG 负责把可追溯资料放进上下文; 工具负责查询、计算和执行; 校验器负责检查事实、格式和约束; 产品交互负责展示来源、不确定性和确认节点。

通过检索、工具、上下文、校验和用户确认降低幻觉风险的 AI 产品系统示意图

不同任务需要的防幻觉手段也不同。

任务主要风险更合适的处理
问答编造事实或来源RAG、引用来源、回答中标注证据
数据分析编造数字或趋势连接数据库、展示查询、保留计算过程
法务 / 医疗 / 金融错误建议造成高成本权威资料、专业审核、明确免责声明
代码生成API 不存在、逻辑不通运行测试、类型检查、读取真实文档
JSON 抽取字段补全、格式合法但内容错schema 校验、低 temperature、失败重试
长任务执行早期错误被持续放大分阶段确认、工具结果回写、状态管理

一个实用判断是:

凡是用户关心「是不是真的」的任务,都不应该只依赖模型口头回答; 凡是用户关心「能不能执行」的任务,都应该接工具或验证器; 凡是用户关心「责任归属」的任务,都应该保留来源和过程。

八、RAG 为什么是下一步

理解幻觉之后,就能自然理解 RAG 的位置。

RAG 不是为了让模型「更聪明」。

它首先是为了让模型「有依据」。

裸模型回答问题时,主要依赖两类信息:

参数里的压缩记忆; 当前 prompt 里的上下文。

RAG 加入了第三类信息:

从外部知识库检索出来的相关资料。

这会改变生成条件:

不是让模型凭印象回答; 而是先把可追溯证据放到它眼前; 再让它基于证据组织语言。

这并不能彻底消灭幻觉。

因为 RAG 也会有自己的问题:

检索不到; 检索错; 资料过期; 片段切分不合理; 上下文太长; 模型没有正确引用证据; 答案需要计算而不仅是阅读。

但 RAG 至少把问题从「模型凭空说」推进到了「模型基于材料说」。

这对事实型任务是巨大进步。

所以我们可以把下一篇的核心问题提前说出来:

如果幻觉来自缺少可靠事实依据, 那么 RAG 就是给模型外挂可追溯可靠事实依据的第一种系统方案。

九、常见误解

误解一:幻觉说明模型没有任何理解能力。

不对。幻觉说明模型的语言生成和事实验证之间存在缺口,不等于模型没有学到结构。一个会犯错的人也不等于完全不理解问题。

误解二:模型越大,幻觉一定越少。

不一定。更强模型通常知识更丰富、指令遵守更好、校准也可能更好,但只要任务需要外部事实或实时信息,仍然可能幻觉。规模降低风险,但不替代可靠事实依据。

误解三:temperature 降到 0 就不会幻觉。

不对。低 temperature 会减少随机性,但如果最高概率路径本身就是错的,模型仍然会稳定地产生错误答案。

误解四:让模型先思考就能解决幻觉。

不一定。更充分的推理文本可能帮助模型处理复杂问题,但如果缺少事实来源,它也可能只是更长、更漂亮地编错。

误解五:RAG 可以彻底消灭幻觉。

不能。RAG 可以提供证据和可追溯性,但检索、切片、排序、引用和答案合成都会出错。它是降低幻觉的系统层,不是免疫药。

十、总结:幻觉是概率生成缺少可靠事实依据的结果

现在我们可以把本文压缩成几句话:

大模型训练目标是预测 token,不是验证事实; 参数是对语言和世界结构的有损压缩,不是完整数据库; 推理时模型会沿着局部高概率路径逐 token 生成; 如果上下文没有证据、工具没有介入、系统没有校验, 模型仍然可能生成流畅、自信但错误的内容; 这就是幻觉的第一性原理。

如果再压缩成一句话:

幻觉不是模型突然失控,而是概率语言系统在缺少证据和验证时,把「听起来合理」误当成了「可以输出」。

理解这一点后,我们看大模型就会更清醒。

它不是万能知识库。

它也不是纯粹胡编的机器。

它是一个强大的语言和模式生成系统。

当任务只需要创意、草稿、改写、总结和结构化表达时,这种能力非常有用。

当任务需要事实、数字、来源、权限和执行结果时,就必须把模型放进更完整的系统里。

下一篇,我们就沿着这个问题继续往下拆:RAG。如何把外部知识库接到大模型上,让回答从「凭印象生成」变成「基于证据生成」?

最后更新于: