大模型幻觉
一句话总结:
大模型幻觉的根本原因,是它通过概率生成语言,而不是通过严格的事实查询和逻辑验证来回答问题;当信息不足、记忆模糊或上下文存在歧义时,它可能用合理的语言填补知识空缺。
大模型出现“幻觉”,简单说就是:
它的核心任务是生成“最像正确答案的文字”,而不是先确认事实,再把事实说出来。
它有时不知道答案,但仍然会根据上下文继续往下生成,于是就可能生成一个听起来很合理、实际上却不存在或不正确的内容。
结论:当事实缺失时,模型倾向于选择语境下最高频的词,生成看似合理实则错误的输出。
1. 大模型本质上是在“预测下一个词”
例如输入:中国的首都是……
模型会根据训练数据判断,下一个词大概率是“北京”。
它内部做的更接近:P(下一个词∣前面的内容)
而不是像数据库一样执行: 查询事实→验证结果→输出答案
因此,当模型掌握的信息不够时,它仍然会选择一个概率较高、语言上比较连贯的答案,而不一定选择“我不知道”。
2. 训练目标强调“说得通”,不天然保证“说得对”
大模型训练时,主要学习的是大量文本中的语言规律,例如:
- 哪些词经常一起出现;
- 一篇论文通常怎样写;
- 一个引用通常长什么样;
- 一段代码通常如何组织;
- 一个专业回答应该使用哪些术语。
所以它很擅长生成“形式正确”的内容。
例如用户要求:
给我找一篇关于图神经网络推荐的论文。
如果模型没有准确记住论文,它可能根据论文标题的常见格式,编出一个很像真的标题、作者和期刊。这些内容在语言形式上合理,但事实可能不存在。
3. 训练数据本身不完整,也可能互相矛盾
大模型的知识来自大量文本,但这些文本可能存在:
- 错误信息;
- 过时信息;
- 不同来源之间相互冲突;
- 某些领域资料非常少;
- 同一个名称对应多个对象;
- 训练数据中只有片段,没有完整上下文。
模型最终学到的不是一张严格、统一、可验证的知识表,而是分散在参数中的统计规律。
因此它可能把多个来源的信息“拼接”到一起,形成一个现实中不存在的答案。
4. 模型的知识是“压缩存储”的,不是逐条保存
大模型不会像硬盘一样完整保存每篇论文、每句话和每个事实。
核心论点:知识并非以“条目”形式存在,导致检索过程彻底失去精准定位的可能。
它更像是把大量知识压缩进参数中,学习到一种模糊的关联:
某个概念通常和哪些概念有关,某类问题通常怎样回答。
这种压缩能够让模型举一反三,但也会造成细节失真。
例如它可能知道:
- 某篇论文研究图检索;
- 使用了GNN;
- 与大模型结合;
- 发表在某个会议附近的年份。
但它未必准确记得具体标题、作者、指标和数据。此时模型可能把这些模糊信息组合成一个完整但错误的回答。
5. 问题越模糊,模型越容易“自行补全”
例如你问:
那篇使用图来增强推荐的大模型论文是怎么做的?
这里没有明确论文名称,模型需要自己判断你指的是哪一篇。
如果上下文不足,它就可能:
- 猜测你指的是某篇论文;
- 把多篇论文的方法混合起来;
- 补充一些看似合理的实现细节。
所以很多幻觉并不是模型完全胡乱生成,而是它在信息不足时进行了错误推断。
6. 用户的问题中如果带有错误前提,模型可能顺着错误回答
例如用户问:
为什么爱因斯坦在1965年获得诺贝尔奖?
实际上这个问题的前提有误。如果模型没有先检查前提,可能直接解释一个不存在的事件。
这叫做“迎合错误前提”。大模型倾向于保持对话连贯,而不是每次都先质疑用户的问题。
7. 长文本生成会产生误差累积
模型每生成一个词,后面的内容都会受到前面内容影响。
如果前面某一步出现了一个小错误,后面可能围绕这个错误继续展开,最终形成一整套看起来非常完整的错误解释。
例如:
- 先写错一个论文名称;
- 再根据这个假论文名称编作者;
- 再编实验数据;
- 再解释为什么结果优秀。
于是错误会越写越具体,也越显得可信。
8. 大模型通常缺少天然的“事实校验机制”
普通大模型在生成答案时,不一定会自动执行:
- 查数据库;
- 搜索论文;
- 检查引用是否存在;
- 运行代码;
- 验证公式;
- 对比最新资料。
如果没有搜索工具、知识库、计算器或外部程序,模型主要依赖自身参数中的知识进行回答。
所以对于论文名称、最新新闻、法律规定、具体数据、引用来源等内容,只依靠模型记忆通常风险较高。
9. 为什么模型有时会“非常自信地说错”
因为模型输出的“自信语气”和它对事实的真实把握程度,并不完全对应。
它学到的是:
专业答案通常应该语句完整、结构清楚、语气确定。
因此即使答案不可靠,它也可能使用非常肯定的表达。流畅程度不等于事实正确性。
一个简单比喻
可以把大模型理解成一个:
读过大量资料、语言表达能力极强,但有时记忆模糊,而且习惯把话接下去的人。
当它准确记得时,回答很好;当它记不清时,也可能根据经验补出一个“最像答案的答案”。
怎样减少大模型幻觉
常见方法包括:
- 联网检索:先查资料,再回答。
- RAG:从指定知识库中检索相关内容,把证据提供给模型。
- 工具调用:用计算器、数据库、代码执行器等验证答案。
- 要求提供出处:让模型给出可核验的论文、页码或原文依据。
- 限制回答范围:要求“只根据提供的材料回答”。
- 允许模型拒答:明确要求证据不足时说“不确定”,不要自行补充。
- 交叉验证:用多个来源或程序检查关键结论。
图里所说的“上下文”和 Key,主要指模型这一次回答时实际收到的输入内容,不是模型参数本身。
这一次输入内容可能包括:
- 你当前发送的 Prompt;
- 当前对话中保留下来的历史消息;
- 系统给模型的指令;
- 检索系统找到后塞进来的论文、网页或知识库内容;
- 模型刚刚已经生成的前文。
而模型训练后保存在参数里的知识,是另一回事。
更多推荐


所有评论(0)