大模型为什么会幻觉?不是 bug,是概率生成机制本身决定的

你肯定遇到过这种情况:你问大模型一个特别简单的问题,它回答得斩钉截铁,语气笃定,像极了某个领域的专家。然后你仔细一查——它全编的。

AI technology illustration

你会怎么想?大概率是"这模型训练得不够好,有bug,得修一修"。但我想告诉你一个可能让你不舒服的结论:幻觉不是bug,它是这个系统的必然产物。只要模型还在用"猜下一个词"的方式生成文本,它就一定会幻觉。这甚至不是一个概率问题,而是概率的定义本身决定的。

模型生成每个字,都是在抽签

要理解幻觉为什么必然发生,你得先理解大模型生成文本的底层机制。这事我花了好长时间才想通,因为最开始我也被"智能"这个词误导了。

大模型的工作原理,说人话就是:给你前面已经写下的所有文字,预测下一个最可能出现的词是什么。它不是去数据库里查"正确答案",而是在一个词表上生成一个概率分布——每个候选词都有一个分数,然后按这个分数抽签。

举个例子。你问它"中国第一艘航空母舰叫什么?"模型看到这行字,会在它的内部词汇表里给每个词打分。"辽宁"的分数最高,但"山东""瓦良格""辽宁号"这些词也都有非零的分数。然后它按这个分布抽一次签。多数时候抽中"辽宁",但存在一个很小的概率,它抽中别的词。

问题在于,这只是一个字。整段回答是这样一个字一个字抽签抽出来的。每个字都有出错的可能,你算一下乘法——如果每个字有99.9%的概率正确,一段100字的回答全部正确的概率只有90.5%。如果每个字的正确率是99%,那段100字的回答全部正确的概率就掉到了36.6%。

它没在"知道",它在"编得合理"

你可能已经想到一个关键的追问:如果模型每个字都按概率抽签,那它岂不是没有“知识”可言?

对。这个问题我纠结了很久。我最早以为,模型训练完之后,知识是“存”在它某个地方的,回答问题时它会去“检索”。后来我读了大模型相关的研究,才意识到一个让我挺震撼的事实:模型里没有一个地方“存着”"辽宁号是中国第一艘航母"这个事实。它只有一堆经过训练调整的参数,这些参数的任务是让“辽宁号”这个词出现在“中国第一艘航母是____”这句话后面的概率最大。

这意味着什么?意味着模型学到的不是“事实”,而是“文本模式”。它知道在什么样的语境下,什么样的词大概率会出现,但它不理解这些词对应现实世界里的什么东西。

OpenAI 的 GPT-3 论文里有一句话让我印象很深:模型是“few-shot learners”——不是数据库,不是搜索引擎,是“学会了语言统计规律的概率机器”。它最擅长的事情是让输出看起来“像人话”,而不是让输出“是真的”。

“语言模型是一个随机鹦鹉,它学会的是词语之间的统计关系,而不是它们背后的含义。”——Bender 等人在 2021 年的论文《On the Dangers of Stochastic Parrots》里这样警告过。当时很多人觉得这话太夸张,后来发现,说得一点都不过分。

为什么训练数据再干净,幻觉也不会消失

很多人会想:那把训练数据里的错误信息都去掉,模型是不是就不会幻觉了?

这个直觉很自然,但它是错的。原因有两层。

第一层:正确的训练数据,也不一定指向正确的下一个词。比如训练数据里出现了几十次“中国第一艘航母是辽宁号”,但同时也出现过几次“中国第一艘航母是辽宁舰”。这两种说法都是对的,但模型看到的概率分布被劈成了两份,任何一份都不是100%。哪怕正确答案只有一个,只要训练语料里存在同义改写、不同说法,模型学到的概率分布就永远是分散的——它一定会在多个合理答案之间摇摆。

第二层:模型没有“检查”这个动作。它生成完一段话之后,不会回头看看自己说的对不对。它没有这个模块。人类的写作过程有反馈循环:写一句,读一下,觉得不对,删掉重写。大模型没有——它是前馈的,一个字生成完就钉死了,后续的字只能顺着往下走,不能回头修改。

更麻烦的是,模型对它自己的输出没有置信度校准。你问它一个它根本没学过的问题,它不会说“我不知道”,而是会从概率分布里选一个听起来最合理的词,然后自信地编下去。因为它没有“我知道自己不知道”这个机制。

Anthropic 在 2024 年发表过一篇专门研究幻觉的论文,结论之一是:模型的幻觉倾向和它回答时的“流畅度”没有相关性。也就是说,一段编得天花乱坠的话和一个结结巴巴的答案,模型自己对两者的信心可能是一样的。

把温度调到0,幻觉就消失了吗?

你可能会想到一个常见的操作:把temperature参数调低,甚至设为0,让模型每次选概率最高的那个词,不抽签了。这样不就没有随机性了吗?

这个想法很合理,但只解决了一半问题。

temperature设为0,模型确实每次都选概率最高的词,不再抽签了。但问题在于——概率最高的那个词,它本来就是错的。幻觉不是随机性带来的,而是模型学到的概率分布本身就和事实有偏差。

举个例子:你问一个没学过鲁迅生平的模型“鲁迅的原名是什么”,它可能把“周树人”和“周作人”的概率分布搞得差不多。temperature为0时,它每次都选概率最高的那个,但概率最高的那个仍然是错的。调温度只是让模型从“随机错”变成了“稳定错”。

我见过不少人以为温度越低越不容易幻觉,其实这个直觉是反的。高温让模型胡说八道,低温让模型一本正经地胡说八道。后者更危险,因为看起来太可信了。

参数 输出特征 对幻觉的影响
temperature 高 随机性大,用词丰富 幻觉表现为随机编造,容易被识破
temperature 低 每次都选最高概率词 幻觉表现为稳定重复,难以察觉
temperature = 0 完全确定,多次回答相同 如果概率分布本身错了,错得一模一样

人类也会胡编,但模型比人类危险

说到这你可能会想:那人类不也会记错、说错吗?为什么大模型的幻觉被当成一个严重问题?

因为人类的错误有边界,模型的错误没有。

人类的记忆是关联着现实经验的。你记错了“中国第一艘航母的名字”,但你知道航母是一种船,你知道中国有海军,你知道“第一艘”意味着时间上的先后。这些是世界常识,它们像锚一样把你的错误限制在一个范围内。

模型没有这些锚。它所有的“知识”都来自文本统计。如果某个事实在训练语料里出现频率不够高,或者被其他信息干扰了,模型就会在完全不相干的领域里编造出离谱的答案,而且编得理直气壮。

还有一点更重要:人类的记忆出错时,你有机会通过逻辑推理发现矛盾。比如你记错了年份,但想起“那件事发生在我上大学之前”,就能推算出正确的范围。模型没有这个能力。它不推理,它只做模式匹配。当你问它一个需要多步推理的问题时,它不是一步一步推出来的,而是一下子从“问题模式”跳到“答案模式”——中间的过程全是编的。

缓解手段都有用,但都治标不治本

现在业界用的缓解手段,主要有这么几种,我分别说说它们的边界。

  • 检索增强(RAG):给模型外接一个数据库,让它先检索再回答。这确实能大幅减少幻觉,因为答案不是纯靠模型内部概率生成,而是有外部文本撑着。但它只对“数据库里有的内容”有效,数据库没有的内容,模型照样编。
  • 更大规模的模型:GPT-4比GPT-3幻觉少,这是事实。但这是量的改善,不是质的改变。只要底层机制还是概率生成,更大的模型只是让概率分布更精确,不可能让错误概率降到零。
  • 训练时加惩罚:有些团队尝试在训练中识别幻觉输出并降低其概率。效果有限,因为你无法穷举所有可能幻觉的场景。
  • 让模型说"我不知道":这可能是目前最实用的一招。在训练数据里加入大量“我不知道”的例子,教会模型在低置信度时拒绝回答。但问题在于,模型没有真正的置信度信号,它只是学会了在某些表达模式下输出“我不知道”。换个问法,它又忘了。
关于检索增强的一个细节

RAG 的原理是:把问题先变成一个向量,去数据库里找最相似的文本片段,把片段拼到问题的前面,再让模型基于这段文本来生成回答。这样模型生成的每个字,都受到了外部文本的“锚定”,概率分布会向检索到的内容倾斜。但这套机制有一个前提:检索到的内容必须是对的。如果检索结果本身就是错的,模型会把错误的内容也编得煞有介事。

我的判断:幻觉不会消失,只能被管理

回到最开始的问题:大模型为什么幻觉?因为它是一个逐字抽签的概率系统,它的目标函数是“生成看起来合理的文本”,不是“生成真实的事实”。这个设计是它成功的根本原因——正是因为它不依赖固定的知识库,才能灵活应对各种没见过的提问。但同一枚硬币的另一面,就是幻觉。

所以我的判断是:在可预见的未来,幻觉不可能被消除。你可以把幻觉率从10%压到1%,但压不到0%。这不是工程问题,是数学问题——只要模型还在用概率分布生成文本,就永远存在一个非零的概率选到那个错误的词。

那怎么办?我觉得需要分场景看。如果你用大模型做创意写作、头脑风暴,幻觉反而是优点,它能让模型说出你没想到的东西。但如果你用大模型做事实性任务——查资料、写代码、回答法律问题——你就必须把“概率生成”当成一个需要校准的工具,而不是一个可靠的数据库。

给所有用大模型的人一个最实用的建议:当模型给出一个看起来非常具体、非常可信的事实时,它恰恰是最危险的时候。因为那个答案不是查出来的,是编出来的——只不过编得特别像真的。

原创文章,作者:guanweilu,如若转载,请注明出处:https://guanweilu.cn/article/228.html

(0)
上一篇 2026年8月21日
下一篇 2026年8月21日

相关推荐