大模型为什么会产生幻觉?从原理到工程防御

大模型为什么会产生幻觉?从原理到工程防御

如果面试官问你:“大模型为什么会产生幻觉?”

只回答一句“因为它本质上是概率模型”,其实很难拿到高分。因为更关键的问题是:概率模型为什么会编东西?为什么它会一本正经地胡说八道?

要真正理解大模型幻觉,需要从模型的训练目标、知识存储方式、推理过程、对齐机制,以及工程防御手段几个角度一起看。

一、大模型追求的不是“真理”,而是“下一个词”

大模型最核心的训练目标是 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,不能把信任完全交给模型,而要把信任建立在系统设计上。

posted @ 2026-06-11 15:47  张润昊  阅读(26)  评论(0)    收藏  举报