大模型为什么会产生幻觉?从原理到工程防御
大模型为什么会产生幻觉?从原理到工程防御
如果面试官问你:“大模型为什么会产生幻觉?”
只回答一句“因为它本质上是概率模型”,其实很难拿到高分。因为更关键的问题是:概率模型为什么会编东西?为什么它会一本正经地胡说八道?
要真正理解大模型幻觉,需要从模型的训练目标、知识存储方式、推理过程、对齐机制,以及工程防御手段几个角度一起看。
一、大模型追求的不是“真理”,而是“下一个词”
大模型最核心的训练目标是 Next Token Prediction,也就是预测下一个 token。
它的任务不是判断一句话是真是假,而是根据前文上下文,预测接下来最可能出现的词。
比如提示词是:
天空的颜色通常是……
模型会根据语料中的统计规律,预测出“蓝色”这类高概率答案。
问题在于,训练过程中,模型并没有被明确灌输“这句话是事实”或者“这句话是编造的”这种监督信号。它学到的主要是语言模式、表达方式、上下文关联,以及人类文本中的统计规律。
所以,当某个事实在模型记忆里不清楚、不完整,甚至根本没有被记住时,它不会天然停下来承认“不知道”。相反,它更倾向于选择在当前语境下最顺、最像答案的表达。
这就是幻觉的底层来源之一:
当事实知识缺失时,大模型会优先生成语境中最流畅、最合理的内容,而不一定是最真实的内容。
所以我们经常会看到一种现象:模型的回答逻辑严密、语气自信、格式整齐,但内容却是错的。
它不是在“查真相”,而是在“续写最可能的文本”。
二、大模型的知识不是数据库,而是分布式记忆
很多人会误以为,大模型像数据库一样,把知识一条一条存起来。
但事实并不是这样。
传统数据库是显式存储。比如 MySQL、Excel、知识库表格,你给它一个 query,它可以通过索引或者主键定位到明确的数据。只要数据存在,查询结果通常是稳定、确定的。
但大模型不是这样。
大模型的知识是隐式存储在大量参数中的。它并不是把“某个事实”原封不动地存在某个位置,而是把大量语料中的模式压缩进神经网络权重里。
当你问它一个问题时,它不是去数据库里查一条记录,而是激活大量相关参数,通过概率计算生成一个看起来最可能的答案。
这更像人的模糊记忆。
你问一个人很多年前听过的某个细节,他不一定能从脑子里调出原始文件,而是会通过相关印象、语境、经验去拼凑答案。大模型也是类似的。
因此,知识在大模型里并不是以“条目”的形式存在的,而是以一种分布式、压缩后的方式存在。
这就决定了:
大模型天然不擅长像数据库一样精准检索事实,它更擅长基于模式生成近似答案。
这种机制让它具有很强的泛化能力,但也带来了事实不稳定的问题。
三、推理过程中的偏差会一步步放大
大模型生成内容是自回归的。
也就是说,它每生成一个 token,都会把这个 token 放回上下文里,再继续预测下一个 token。
这个过程看起来很自然,但它也带来了一个重要问题:前面的微小错误,会成为后面继续生成的基础。
在训练阶段,模型每一步都有标准答案作为参考。但在推理阶段,模型只能依赖自己前面已经生成的内容。
一旦前面某一步稍微偏了一点,后面的内容就会基于这个偏差继续生成。错误不但不会自动消失,反而可能不断积累、放大。
这就是所谓的暴露偏差。
你可以把它理解成滚雪球:
一开始只是偏了一点点,但后面的每一步都建立在这个偏差之上,最终就可能变成一个非常离谱的结论。
这也是为什么很多幻觉经常出现在长回答的后半段。
短回答里,错误链条还没有积累太长;但长文本生成时,模型需要连续做很多次预测,一旦中间某一步走偏,后面就可能越来越歪。
四、注意力机制不是精准检索,而是软匹配
Transformer 的注意力机制让大模型能够在上下文中寻找相关信息。
但注意力并不是数据库索引。
它不是“精准命中某条事实”,而是根据相关性对不同信息分配权重。可以把它理解成一种软检索。
当问题简单、上下文清晰时,注意力可能像聚光灯一样,比较准确地照到关键信息。
但当上下文很长、问题复杂、措辞模糊,或者用户问的是低频知识时,注意力就可能开始分散。
这时候,模型可能会同时激活多个看似相关但并不准确的信息片段,然后把它们拼接成一个逻辑上通顺、事实上错误的回答。
所以很多时候,模型不是完全没学过相关知识,而是“找错了地方”。
它把一些相邻概念、相似表达、类似案例混在一起,最后生成了一个看似合理但实际错位的答案。
五、参数压缩决定了模型记不住所有细节
大模型虽然参数量巨大,比如 70B、175B,看起来很庞大,但它面对的是互联网级别的文本数据。
训练语料可能包含数万亿 token,而模型参数本质上是对这些信息的高度压缩。
这就意味着,大模型不可能完整、精确地记住所有事实。
它会优先保留那些高频、通用、反复出现的信息,比如语言规律、常识、常见知识和典型表达。
但对于低频、长尾、细碎的事实,比如某篇论文的具体实验数字、某场会议的准确日期、某个小众项目的细节,它就很可能记不牢,甚至根本没有记住。
于是,当用户追问这类长尾细节时,模型即使不知道,也可能会调用通用模式去“补全”。
比如它可能根据常见论文格式编出一个实验数据,根据常见公司叙事编出一个创始人故事,根据常见 API 风格编出一个不存在的方法。
这类幻觉不是偶然的小 bug,而是参数压缩带来的必然损失。
六、对齐训练可能强化“虚假但顺从”
除了预训练带来的问题,后续的对齐训练也可能增加幻觉风险。
RLHF、DPO 等对齐方法的目标,是让模型更符合人类偏好,比如更有帮助、更友好、更愿意回答问题。
这个目标本身没有问题。
但问题在于,如果奖励机制设计不好,模型可能会学到一种“讨好倾向”。
它会发现:
- 直接说“不知道”,可能被认为不够有帮助;
- 给出一个结构完整、语气自信、逻辑顺滑的答案,反而更容易得到正向反馈。
这就会导致一个危险结果:
模型宁愿给出一个看起来像答案的错误内容,也不愿意轻易承认不确定。
这就是“虚假但顺从”。
在理想状态下,模型应该做到“准确且有帮助”。但现实中,模型面对不确定问题时,可能会被奖励机制推向“顺从但不准确”的方向。
这也是为什么有些模型会显得非常自信,哪怕它其实并不知道答案。
七、幻觉不是简单 bug,而是系统性风险
理解到这里,我们就能得出一个重要结论:
大模型幻觉不是某个单点 bug,而是模型架构、训练目标、知识存储方式、推理机制和对齐方式共同带来的系统性风险。
它不是简单调几个参数就能彻底解决的问题。
只要大模型仍然以概率生成作为核心机制,只要它的知识仍然是压缩在参数中的,只要它还需要连续生成文本,幻觉就很难完全消失。
所以做 AI 应用时,不能默认模型永远可靠。
真正成熟的做法,是在系统架构上承认模型会犯错,然后设计防线。
八、工程上如何降低幻觉?
既然幻觉无法完全消除,工程上就要做风险控制。
常见方法主要有几类。
1. 使用 RAG,把闭卷考试变成开卷考试
RAG,也就是检索增强生成,是降低幻觉最常见的方法之一。
它的核心思路是:不要让模型完全依赖参数记忆,而是给它外挂一个外部知识库。
当用户提问时,系统先从数据库、文档库、搜索引擎或者向量库中检索相关资料,再把这些资料作为上下文提供给模型。
这样模型就不需要在参数空间里模糊回忆,而是可以基于明确材料组织答案。
这相当于把闭卷考试变成了开卷考试。
模型的任务从“凭记忆编答案”,变成了“阅读资料后总结答案”。
这能显著降低事实类问题中的幻觉风险。
2. 使用 CoT 或分步推理,让过程可检查
CoT,也就是 Chain of Thought,思维链。
它的核心作用是让模型在给出最终答案前,把中间推理步骤展开。
这样做的好处是,模型不会直接跳到结论,而是被迫一步步推导。
每一步都可以成为检查点。
如果某一步出现明显错误,系统或者用户就更容易发现问题,而不是只看到一个看似完整但无法追踪来源的最终答案。
不过需要注意,CoT 并不是万能的。它可以提升复杂推理任务的稳定性,但如果底层事实本身就是错的,推理链也可能只是“把错误讲得更像真的”。
所以 CoT 更适合和检索、工具调用、校验机制结合使用。
3. 使用置信度和 logprobs,建立自我怀疑机制
模型在生成 token 时,其实会产生概率分布。
如果某些 token 的概率很高,说明模型相对确定;如果概率很分散,说明模型可能并不确定。
工程上可以利用这些信号,比如 logprobs、置信度分数、答案一致性检测等,建立一套外部的风险判断机制。
当系统发现模型对某个答案不够确定时,可以触发防御动作:
- 调用搜索引擎核实;
- 调用计算器或代码工具验证;
- 要求模型引用来源;
- 降低回答的确定性表达;
- 直接提示用户“目前无法确认”。
这相当于用外部工程系统,弥补模型内部“知道自己不知道”的能力不足。
4. 对关键场景引入工具调用和规则校验
对于高风险场景,不能让模型自由发挥。
比如金融计算、医疗建议、法律条款、订单状态、数据库查询、代码执行结果等,都应该尽量交给外部工具处理。
模型可以负责理解用户意图和组织自然语言,但事实查询、数值计算、规则判断,应该由可靠系统完成。
也就是说:
模型负责表达,工具负责事实。
这是构建可靠 AI 系统时非常重要的分工。
九、真正的可信度来自系统设计
大模型本身不是事实数据库,也不是绝对可靠的推理机。
它是一个强大的概率生成引擎。
它擅长理解语言、组织表达、总结信息、生成方案,但它也天然可能在事实细节上犯错。
所以,做 AI 应用时,关键不是迷信模型本身有多强,而是要用系统设计约束它。
我们需要:
第一,承认大模型会幻觉,不把它当作绝对事实源。
第二,理解幻觉的来源,包括训练目标、隐式存储、暴露偏差、注意力误检索、参数压缩和对齐副作用。
第三,通过 RAG、CoT、置信度检测、工具调用、规则校验等方式,给模型加上多层防线。
最终,AI 系统的可信度,不取决于模型本身是否完美,而取决于我们能不能用工程体系把风险管住。
换句话说:
现阶段做 AI,不能把信任完全交给模型,而要把信任建立在系统设计上。

浙公网安备 33010602011771号