当前位置: 首页 > news >正文

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

前言

如果你用过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)的作用

// 温度影响概率分布低温度(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模板的设计心法。

http://www.jsqmd.com/news/755013/

相关文章:

  • ARM浮点指令集架构与寄存器规范详解
  • ACMER X1三合一加工设备:激光雕刻与CNC铣削全解析
  • 视觉AI虚拟训练平台SPHINX:从原理到工业应用
  • 私有化部署ChatGPT API服务器:从原理到实战部署指南
  • 手把手教你用GLIP实现零样本目标检测:从COCO数据集加载到模型推理全流程
  • 现在不掌握低代码内核调试=主动放弃技术话语权:2024Q3主流平台(Jeecg、LowCodeEngine、AppSmith)内核调试兼容性速查表
  • SANA-Video:基于块线性扩散Transformer的高效视频生成技术
  • 自进化AI系统的社会性风险与安全防护策略
  • ai辅助钱包开发:让快马kimi生成uniswap v3流动性管理组件代码
  • 从‘抓瞎’到‘精准定位’:用Android Profiler内存分析器揪出Fragment和Activity泄漏的完整实战
  • 保姆级教程:在蓝桥杯开发板上用CX20106A超声波测距,从原理图接线到代码调试全流程
  • SQL实战:用论坛发帖表t1,5分钟搞懂UPDATE、WHERE和GROUP BY的核心用法
  • 多模态视频检索技术:从数据集构建到模型部署全解析
  • ARM嵌入式单元测试实战与Tessy框架解析
  • 用GPT-4给Syzkaller打工:手把手教你用KernelGPT自动生成Linux内核模糊测试规约
  • 2025届必备的六大降AI率网站推荐
  • GPT-Codex项目实战:基于LLM的AI编程助手部署与应用指南
  • Discord社区管理革命:用基础设施即代码实现自动化与版本控制
  • 别再手动改注册表了!用Python的winreg模块5分钟搞定自动化配置(附实战代码)
  • 基于meta-cogbase框架构建认知智能体:从核心原理到工程实践
  • 别再空谈Web3了!从协鑫光伏到巡鹰换电,看RWA如何解决新能源行业的真问题
  • 【工业级量子模拟框架设计规范】:ISO/IEC 20987兼容的C++量子比特抽象层实现全披露
  • 基于Web Audio与WebAssembly的浏览器合成器Clawbands开发全解析
  • 3分钟掌握KMS_VL_ALL_AIO:Windows与Office智能激活的终极解决方案
  • SIT-LMPC:机器人控制中的安全迭代优化技术
  • 不只是点灯:深入解读Infineon TC3xx MCAL Demo如何帮你验证片内外设驱动
  • 2026年工程项目管理软件推荐:这5款主流产品值得关注
  • 基于OpenAI API的多模态AI交互项目:智能路由与一体化设计实践
  • OpenClaw Orchestrator:多智能体协作的可视化编排平台设计与实践
  • 从Vue 2到Vue 3,我是如何一步步把vue-element-admin项目升级重构的(附完整踩坑记录)