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

这是「用第一性原理理解大模型」系列的第 8 篇。第 7 篇:推理与生成 解释了模型在回答问题时如何根据上下文计算下一 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 负责把可追溯资料放进上下文;
工具负责查询、计算和执行;
校验器负责检查事实、格式和约束;
产品交互负责展示来源、不确定性和确认节点。
不同任务需要的防幻觉手段也不同。
| 任务 | 主要风险 | 更合适的处理 |
|---|---|---|
| 问答 | 编造事实或来源 | RAG、引用来源、回答中标注证据 |
| 数据分析 | 编造数字或趋势 | 连接数据库、展示查询、保留计算过程 |
| 法务 / 医疗 / 金融 | 错误建议造成高成本 | 权威资料、专业审核、明确免责声明 |
| 代码生成 | API 不存在、逻辑不通 | 运行测试、类型检查、读取真实文档 |
| JSON 抽取 | 字段补全、格式合法但内容错 | schema 校验、低 temperature、失败重试 |
| 长任务执行 | 早期错误被持续放大 | 分阶段确认、工具结果回写、状态管理 |
一个实用判断是:
凡是用户关心「是不是真的」的任务,都不应该只依赖模型口头回答;
凡是用户关心「能不能执行」的任务,都应该接工具或验证器;
凡是用户关心「责任归属」的任务,都应该保留来源和过程。八、RAG 为什么是下一步
理解幻觉之后,就能自然理解 RAG 的位置。
RAG 不是为了让模型「更聪明」。
它首先是为了让模型「有依据」。
裸模型回答问题时,主要依赖两类信息:
参数里的压缩记忆;
当前 prompt 里的上下文。RAG 加入了第三类信息:
从外部知识库检索出来的相关资料。这会改变生成条件:
不是让模型凭印象回答;
而是先把可追溯证据放到它眼前;
再让它基于证据组织语言。这并不能彻底消灭幻觉。
因为 RAG 也会有自己的问题:
检索不到;
检索错;
资料过期;
片段切分不合理;
上下文太长;
模型没有正确引用证据;
答案需要计算而不仅是阅读。但 RAG 至少把问题从「模型凭空说」推进到了「模型基于材料说」。
这对事实型任务是巨大进步。
所以我们可以把下一篇的核心问题提前说出来:
如果幻觉来自缺少可靠事实依据,
那么 RAG 就是给模型外挂可追溯可靠事实依据的第一种系统方案。九、常见误解
误解一:幻觉说明模型没有任何理解能力。
不对。幻觉说明模型的语言生成和事实验证之间存在缺口,不等于模型没有学到结构。一个会犯错的人也不等于完全不理解问题。
误解二:模型越大,幻觉一定越少。
不一定。更强模型通常知识更丰富、指令遵守更好、校准也可能更好,但只要任务需要外部事实或实时信息,仍然可能幻觉。规模降低风险,但不替代可靠事实依据。
误解三:temperature 降到 0 就不会幻觉。
不对。低 temperature 会减少随机性,但如果最高概率路径本身就是错的,模型仍然会稳定地产生错误答案。
误解四:让模型先思考就能解决幻觉。
不一定。更充分的推理文本可能帮助模型处理复杂问题,但如果缺少事实来源,它也可能只是更长、更漂亮地编错。
误解五:RAG 可以彻底消灭幻觉。
不能。RAG 可以提供证据和可追溯性,但检索、切片、排序、引用和答案合成都会出错。它是降低幻觉的系统层,不是免疫药。
十、总结:幻觉是概率生成缺少可靠事实依据的结果
现在我们可以把本文压缩成几句话:
大模型训练目标是预测 token,不是验证事实;
参数是对语言和世界结构的有损压缩,不是完整数据库;
推理时模型会沿着局部高概率路径逐 token 生成;
如果上下文没有证据、工具没有介入、系统没有校验,
模型仍然可能生成流畅、自信但错误的内容;
这就是幻觉的第一性原理。如果再压缩成一句话:
幻觉不是模型突然失控,而是概率语言系统在缺少证据和验证时,把「听起来合理」误当成了「可以输出」。
理解这一点后,我们看大模型就会更清醒。
它不是万能知识库。
它也不是纯粹胡编的机器。
它是一个强大的语言和模式生成系统。
当任务只需要创意、草稿、改写、总结和结构化表达时,这种能力非常有用。
当任务需要事实、数字、来源、权限和执行结果时,就必须把模型放进更完整的系统里。
下一篇,我们就沿着这个问题继续往下拆:RAG。如何把外部知识库接到大模型上,让回答从「凭印象生成」变成「基于证据生成」?