前言:幻觉不是 Bug,是特性
每次跟身边朋友聊大模型,总有人会问同一个问题:「为什么 ChatGPT 还是会一本正经地胡说八道?」这个问题背后其实是整个 AI 行业最棘手也最迷人的技术难题——幻觉(Hallucination)。五年过去了,从 GPT-3 到 GPT-4o,再到 Claude、Gemini、DeepSeek,模型智商翻了好几倍,但幻觉问题就像影子一样甩不掉。今天我想聊聊,为什么这个问题从根子上就无法彻底消除。
一、大模型的工作原理决定了「事实」只是概率
很多人以为大模型像一个巨型数据库,你问它问题,它去查表然后给你答案。这是最大的误解。大模型本质上是一个超大规模的概率分布预测器——给定前面一串 token,预测下一个最可能的 token 是什么。
当我们问「爱因斯坦是哪一年出生的」时,模型并不是去「查询」一个事实,而是基于训练数据中学到的模式,计算出「1879」这个 token 序列在上下文中最有可能出现。这个过程天然就带有不确定性。如果训练数据中关于爱因斯坦出生年份的描述互相矛盾(比如有的网页写 1879,有的写 1878),模型就会在两种概率之间摇摆。
核心洞察:大模型不是数据库,而是语言模式匹配器。它不「知道」任何事实,它只是学会了人类文本中词语的共现模式。这个设计哲学本身就意味着「事实准确性」只是副产品,而非核心能力。
二、训练数据本身就不可能完美
训练一个千亿参数的大模型需要多少数据?以 GPT-4 为例,训练数据量估计在 10-13 万亿 token 左右。这么大的数据量来自互联网、书籍、论文、代码仓库……互联网上有什么它就学什么。
问题在于:互联网上充斥着错误信息、过时内容、矛盾观点和纯粹的谣言。而模型没有能力在训练过程中区分「这个说法是真的吗」——它只知道「这个说法在语料中出现得很频繁」。如果某个错误说法在训练数据中出现了 1000 次,而正确说法只出现了 200 次,模型大概率会「学到」那个错误版本。
数据清洗可以缓解这个问题,但无法根治。10 万亿 token 级别的数据,即使人工抽检也只能覆盖极小比例;自动清洗又可能误伤正确但写法罕见的信息。这是一个工程上限的困境。
三、知识截止与持续变化的世界之间的矛盾
模型有一个训练数据截止日期,这意味着它「认知」的世界是凝固在某个时间点的。但现实世界每天都在变化:新的科学研究推翻旧结论,公司改名,人物更替职务,发布新产品……模型对截止日期之后发生的一切都处于「不知道」状态,但又被迫去回答,结果就是编造。
更隐蔽的问题是:有些事实在训练时是「正确的」——比如某个 API 的调用方式——但半年后对方更新了版本,旧方式失效了。模型不知道这一切,它还在「诚实」地告诉你半年前的答案。这个答案放在今天就是错误的。
RAG(检索增强生成)和联网搜索试图解决这个问题,但它们带来的是另一个层级的幻觉:模型可能把检索到的相关但不准确的片段整合进回答,或者自己的知识跟检索结果冲突时做出奇怪的混合。加了外挂并不能消除模型本身的幻觉倾向。
四、评估「正确」这件事本身就很复杂
还有一个很少有人讨论的问题:对于很多开放性问题,世界上本来就不存在一个唯一正确的答案。
「怎么学好 Python?」「Transformer 的注意力机制为什么有效?」「未来十年 AI 会怎样发展?」——这些问题没有标准答案。不同的专家会给出不同的回答,都是正确的。模型在面对这种问题时,「幻觉」的边界非常模糊。它给出的回答可能是合理的,但如果你用某一位专家的标准去衡量,它又可能是「不准确」的。
更麻烦的是那些存在学术争议的话题。模型在训练数据中看到了 A 派和 B 派的观点,它可能综合出一个看起来合理但两边都不认可的第三种说法。这算幻觉吗?严格来说算法上是的,但从内容上看它又在尝试做一个合理的综合。
五、已知的缓解手段与它们的局限
这五年业界确实摸索出了不少缓解幻觉的方法:
- 思维链(Chain-of-Thought):让模型逐步推理,减少一步到位的跳跃式错误。但 CoT 本身也会产生「错误的推理链看起来合理」的问题。
- RAG(检索增强生成):把外部知识库注入上下文。有效但不是银弹——检索质量、相关度排序、合入方式都是新的变数。
- RLHF 与偏好对齐:通过人类反馈训练模型「不确定时就说不知道」。但这只能减少表面现象,不能从根源消除。
- 约束解码与事实性评分:在生成时加入事实性校验,计算成本高,且对长文本的效果有限。
这些方法各有价值,叠加使用能显著降低幻觉率,但永远无法降到零。因为只要本质是概率生成,就必然存在「小概率错误」——哪怕只有 0.1% 的概率,在千万级用户的使用量下也会频频出现。
六、对未来的一点看法
与其追求「彻底消除幻觉」,我认为更务实的路径是:
- 让模型学会说「我不知道」:在不确定时主动承认,而不是硬编一个看起来合理的答案。这需要更好的校准技术。
- 分层验证架构:关键场景下用多个独立模型互相验证,或者用专门的「事实性裁判」模型对输出做二次检查。
- 用户侧的习惯转变:学会把大模型当作「初稿生成器」而不是「事实查询器」,关键信息自己核实。
总结一下:大模型的幻觉问题不是 bug,不是工程没做好,而是当前技术范式的固有特性。就像我们不能要求天气预报永远准确一样,我们也不能要求概率生成模型永远正确。理解这一点,才能真正用好大模型——既不过度信任,也不因噎废食。