大模型为什么会有“幻觉”——从训练方式到推理局限

前言

如果你用过ChatGPT或任何大模型,你一定遇到过这种情况:

你问 :"深度求索公司是哪一年成立的?"
大模型答:"深度求索公司成立于2019年,总部位于深圳......"(一本正经、语气肯定、完全是编的)

这就是大模型幻觉。它不是偶然的bug,而是大模型工作原理的必然产物。理解幻觉的成因,是做好RAG和Prompt Engineering的前提。面试中,面试官也喜欢问:"你说说幻觉的原理,以及你是怎么解决的?"

本文核心问题:

  1. 什么是大模型幻觉?有哪些类型?
  2. 幻觉是模型"故意骗人"吗?从工作机制看根本原因是什么?
  3. 大模型的训练方式如何决定了它"编造事实"的倾向?
  4. 为什么大模型不知道自己不知道?
  5. 温度参数和幻觉有什么关系?
  6. 为什么RAG能减少幻觉?从概率角度看底层逻辑是什么?
  7. Prompt Engineering中防幻觉的策略有哪些?
  8. 幻觉能被彻底消除吗?如果不能,我们应该怎么看待它?

读完本文,你将能从"解码机制""训练数据""概率生成"三个维度说清楚幻觉的根源,并对接你项目中用RAG和Prompt约束防幻觉的技术决策。


一、幻觉是什么?------不是偶然的bug

疑问:什么是"大模型幻觉"?它和普通程序出bug有什么不同?

回答:大模型幻觉指的是模型生成了看起来通顺但不符合事实的内容,而且语气极为自信。

1.1 幻觉的几种类型

类型 表现 举例
事实性幻觉 编造不存在的事实 "深度求索公司成立于2019年"
忠实性幻觉 偏离用户指令 让写诗,却输出了一大段散文
逻辑性幻觉 推理过程出现矛盾 数学题中间推导正确,最后结论错误

1.2 幻觉不是"故意骗人"

大模型没有主观意图。它不是在"决定要不要骗你",而是在完成一个数学任务------生成概率最高的下一个token。只不过这个任务的输出恰好看起来像在编造事实。

关键认知 :幻觉是大模型训练目标(预测下一个token)的副产品,而不是独立的设计缺陷。


二、根因一:训练方式------它学的是"说话像人",不是"说真话"

疑问:大模型到底是怎么训练的?为什么训练方式决定了它可能编造事实?

回答:大模型训练的核心任务是"预测下一个token",不是"判断事实真假"。

2.1 训练目标决定了它的能力边界

复制代码
训练语料中的一句话:
  "法国的首都是巴黎。"

模型的训练任务:
  给定"法国的首都是",预测下一个词。

模型学到了什么:
  "当见到'法国首都'这个模式,后面接'巴黎'的概率非常高。"

这不一定是因为它"知道巴黎是法国首都"------
  它只是学到了这个统计规律。

2.2 训练数据中的"矛盾"与"偏见"

互联网上的训练数据包含:

  • 过时的信息
  • 小说中的虚构情节
  • 论坛上的错误回答
  • 不同时期的矛盾说法

模型在学习时,这些都被平等对待。它无法区分"事实"和"虚构",只能学到统计上的高频模式。如果训练数据中某件事被说了很多次,模型就会倾向相信------即使这件事是假的。

2.3 举一个直观例子

复制代码
训练数据中可能出现:
  "量子力学很难"(来自科普文章)
  "量子力学很简单"(来自忽悠广告)
  "量子力学是由薛定谔的猫发现的"(错误信息)

模型不会说"简单"或"难"哪个是事实,
它只会看到哪些说法更频繁出现,
然后按照概率生成一个回答。

核心结论:大模型学的是"人们怎么说话",而不是"事实是什么"。


三、根因二:解码机制------它是"猜",不是"检索"

疑问:大模型在生成回答时,是一次性输出全部吗?如果不是,这和幻觉有什么关系?

回答:大模型是逐token生成的,每生成一个token都是一次"猜下一个字"的赌博。

3.1 自回归解码

复制代码
输入:"今天天气"

生成过程:
  1. 预测第一个token → "真"(概率30%)
  2. 拿到"今天天气真",预测下一个token → "好"(概率40%)
  3. 拿到"今天天气真好",预测下一个token → "!"(概率50%)

每一步都在"猜",而且下一步的猜测建立在之前所有猜测的基础上。一旦某一步猜错了方向,后面就会越猜越偏。这就是误差累积效应

3.2 温度(Temperature)的作用

java 复制代码
// 温度影响概率分布
低温度(T=0.1):模型更保守,倾向选概率最高的词 → 回答稳定但缺乏变化
高温度(T=1.0):模型更冒险,低概率词也有机会被选中 → 回答富有创意但容易乱说

你项目中调用大模型API,如果不设置Temperature,默认值通常是1.0------这给了幻觉"可乘之机"。在课程问答项目中,我把Temperature设为0.3,让模型尽量输出确定的内容,减少自由发挥导致的编造。


四、根因三:知识边界------它不知道自己不知道

疑问:为什么大模型遇到不懂的问题时,不能像人一样说"我不知道"?

回答:因为训练数据中几乎没有"我不知道"这个模式的范例。

4.1 训练数据的模式偏差

复制代码
互联网上极少有这样的对话:
  Q: 深度求索公司是哪一年成立的?
  A: 我不知道。

但充斥着这样的模式:
  Q: 某某公司是哪一年成立的?
  A: 某某公司成立于XXXX年。

模型学到了一个模式:当有人问关于某个实体的事实性问题时,答案应该是"某某成立于某年"这个结构。 遇到没见过的公司,它仍然会"填空"------找个听起来合理的年份填进去。

4.2 概率视角的解释

当模型不知道答案时:

复制代码
它面临两个选择:
  
选择A ------ 说"我不知道":
  在训练数据中,这个回答的概率极低(几乎没见过)。
  
选择B ------ 编一个看起来合理的答案:
  在训练数据中,这种形式的回答到处都是。
  
模型自然地选择了B。它不是在"编造"------
它只是在给最高概率的结构填空。

五、为什么RAG能减少幻觉?

疑问:你项目中用了RAG,它是怎么缓解幻觉的?原理是什么?

回答:RAG改变了模型作答的"概率基础"------不再是检索记忆,而是参照输入。

5.1 从"闭卷考试"到"开卷考试"

复制代码
不用RAG(原始大模型):
  → 问:"本课程Java线程池有哪些参数?"
  → 大模型:搜自己的参数化记忆
  → 可能参数记忆模糊或训练数据中存在矛盾说法 → 编造一个"听起来对"的答案

用RAG:
  → 问:"本课程Java线程池有哪些参数?"
  → 检索:在课程文档中找相关段落
  → Prompt拼接:"请根据以下课程内容回答:{检索到的文档}。问题:Java线程池有哪些参数?"
  → 大模型:不需要回忆,只需要阅读并总结
  → 幻觉大幅减少

5.2 为什么RAG能起作用?

因为RAG绕过了模型的"记忆"路径,走的是"阅读"路径。 阅读比回忆可靠得多,这和人一样------给你一本教材让你对着回答,比你凭记忆作答准确得多。

5.3 RAG仍然可能产生的幻觉

即使有了RAG,幻觉仍可能出现:

检索到的文档不包含答案 → 模型仍可能填空

检索到的文档和问题不匹配 → 模型可能受无关信息误导

所以你在课程问答项目中设计了"如果文档不包含就直说不知道"的Prompt约束,并且增加了检索相关性阈值过滤------本质上是在给模型划定知识边界。


六、Prompt Engineering中的防幻觉策略

疑问:除了RAG,还有哪些Prompt技巧能减少幻觉?

回答:你在课程问答项目中已经用到了核心策略,这里系统梳理一下。

策略 Prompt示例 原理
明确知识边界 "如果课程内容中没有相关信息,请直接说'未提及'" 给模型一条"安全出路"
要求引用原文 "回答时请引用课程原文" 强迫它基于材料而非记忆
限定输出格式 "回答格式:{原文出处}→{你的总结}" 结构约束减少自由发挥
Few-shot示例 在Prompt中给出2-3个正确回答的示例 示范正确的行为模式
链式追问 先问"课程有没有提到X",再问"X是什么" 分步走减少跳跃式猜测
降低温度 设置Temperature=0.2~0.3 减少随机性,更倾向确定性输出

七、幻觉能被彻底消除吗?

疑问:所以有没有办法让大模型完全不产生幻觉?

回答:从当前大模型的原理上看,完全消除幻觉是不可能的。

7.1 根本原因

幻觉是大模型"统计预测"本质的必然副产物。只要模型是逐token预测概率,它就永远有可能在某一步猜错方向,然后越猜越远。

7.2 我们能做什么?

不是消除幻觉,而是把它控制在可接受的范围内:

方法 作用
RAG 把"闭卷"变"开卷",从根源减少编造
Prompt约束 划定知识边界,给模型"不知道"的出口
检索过滤 相关性不够就不回答,避免误导
人类审核 关键场景保留人工把关
降低温度 减少随机性,输出更确定性

7.3 正确的心态

把大模型当成一个表达能力很强但记忆力不准的实习生

  • 如果给了它参考资料(RAG),它能把资料总结得很好
  • 如果不给它参考资料,它凭记忆干活,可能会出错
  • 最好的用法是让它基于你给的资料工作,而不是依赖它的记忆

总结

  • 幻觉不是bug,是训练目标的副产物------大模型学的是"说话像人",不是"说真话"
  • 逐token生成机制导致误差累积,一步猜错可能步步猜错
  • 模型不知道自己的知识边界------训练数据中缺乏"我不知道"的模式,导致它天然倾向给出确定性答案
  • RAG减少幻觉的本质是把模型从"靠记忆"变成"靠阅读",绕过了记忆模糊和知识陈旧的问题
  • Prompt防幻觉策略的核心是给模型划定边界、提供出路、减少自由发挥空间
  • 幻觉无法根除但可以控制------方法论是用工程手段约束它,而非期待模型本身的完美

下一篇预告:AI理论学习(四)------Prompt Engineering:从随意提问到工程化调用。拆解角色设定、Few-shot、Chain of Thought等核心Prompt技巧的底层逻辑,以及本人在课程问答项目中Prompt模板的设计心法。

相关推荐
Empty-Filled1 小时前
AI Agent 测试入门:从回答问题到执行任务
网络·人工智能
链上杯子1 小时前
OpenAI 兼容 API:多厂商模型切换时要懂的端点、密钥与限流常识
人工智能
冬奇Lab1 小时前
一天一个开源项目(第92篇):OpenHands - 全能型开源 AI 软件工程师
人工智能·开源·agent
weixin_408099672 小时前
身份证OCR API怎么选?对比4款主流产品后,我选择了石榴智能(含Python/Java调用示例)
人工智能·ocr·文字识别·api接口·身份证ocr·石榴智能·ocr api
AI创界者2 小时前
FaceFusionFree 4.6 加速版实测:深度解决黑边与源识别痛点
人工智能
qcx232 小时前
【AI Agent通识九课】05 · AI 的红绿灯 — 长任务怎么管
人工智能·ai·agent·warp
AAI机器之心2 小时前
在 macOS 上本地部署 Ollama + LLaMA3(附教程)
人工智能·macos·langchain·llm·知识库·大模型部署
2zcode2 小时前
基于注意力机制LSTM的温度预测系统设计与实现
人工智能·深度学习·lstm
庞轩px2 小时前
Transformer的核心思想——Attention机制直观理解
人工智能·rnn·深度学习·transformer·attention·q-k-v