0%

大模型幻觉深度解析:为什么会一本正经胡说八道

背景

问大模型”明朝第一位皇帝是谁”,它会回答”朱元璋”。但问”朱元璋的第三任妻子叫什么名字”,它可能回答”马皇后”。马皇后是朱元璋的正妻,不是第三任妻子,模型在这里编了一个看似合理实则错误的答案。这就是大模型的幻觉(Hallucination):生成内容时语气自信,但事实层面是错的。面试中如果只说”因为它是概率模型”,面试官不会满意。概率模型并不意味着必然会编造内容,需要拆开来看具体是哪几个环节出了问题。

训练目标就不是说真话

大模型的训练目标从一开始就不是说真话,而是预测下一个最可能的 token。这两件事听起来接近,实际差别很大。模型在训练过程中从未接受过这样的监督信号:这句话是事实、那句话是编的。它接收到的信号只有一个,给定前面的词,下一个词最可能是什么。比如输入是”明朝开国皇帝是”,训练目标是让模型输出”朱”,然后基于”朱”输出”元”,再基于”朱元”输出”璋”。模型学到的是语言的统计规律,不是世界的真实知识。

从训练目标出发,模型追求的是流畅连贯,不是事实正确。大多数情况下,流畅连贯的文本恰好也是真实的,所以大部分场景下模型看起来在说真话。但一旦”说得通”和”说得对”发生冲突,幻觉就出现了。比如有人问”林黛玉倒拔鲁智深的故事发生在哪一回”,这个问题本身就是荒谬的,但模型不会指出问题有误,它会生成一个符合语言规律的回答,比如”发生在《红楼梦》第X回”,编造了一个完全不存在的情节。

不知道自己不知道什么

人类面对不确定的问题会有自知之明,被问到完全不懂的领域,可以直接说”我不确定,这个我不太懂”。但大模型没有这个能力。模型在训练时被要求必须生成一段通顺的回答,而不是可以选择放弃。训练数据里极少出现这种模式:面对一个问题,回答是”我不知道”或”这个问题我无法回答”。即使有,比例也极低,模型从中学到的规律是有问题必有回答。

所以哪怕模型对问题毫无头绪,它也会生成一段看似合理的内容。比如问”《三体》中章北海的第四个孩子叫什么”,模型可能给出一个具体的人名,语气自信,但章北海根本没有四个孩子。越是不确定的问题,模型越可能编造,因为它的训练过程里没有提供”我不确定”这个选项。

知识存储方式是压缩而非精确

大模型不是把所有知识像数据库一样一字不差存下来,而是把海量文本压缩成参数中的统计模式。这两种存储方式的差异决定了模型在事实精确度上的先天不足。

存储方式 特点
数据库存储 精确、可检索、一字不差
模型参数存储 模糊、统计性、细节易混淆

这和人类记东西的方式有相似之处:人记一件事只会记个大概,细节会模糊、会混淆,模型也一样。它学到的是模糊的关联和大概的规律,不是精确的事实。比如模型可能学到”朱元璋关联明朝、开国皇帝、南京、马皇后”这样的模糊知识网络,以及某些事件发生在某个大致时间段内的概率规律,但对于”朱元璋的第三任妻子具体叫什么名字”或”某个事件的精确日期”这类精准细节,它很难准确记住。一旦需要输出这些精准信息,模型就容易张冠李戴或凭空脑补。

训练数据本身有质量问题

模型的知识全部来自训练数据,而互联网数据本身就充满各种问题。

问题类型 例子
错误信息 谣言、虚假新闻
偏见信息 带倾向性的观点
过时信息 2023年的新闻放到2026年已经不对
随意编造 网友在论坛里随口编的段子

这些都是模型的教材,模型分不清对错,只会把学到的错误规律当作正确输出。假设训练数据中有一条网友编的段子”诸葛亮发明了原子弹”,模型可能从中提取到”诸葛亮”和”发明”之间的统计关联,当被问到”诸葛亮发明了什么”时,它有可能把段子当事实输出。这不是模型本身蠢,而是训练数据里就有这些问题,模型忠实地反映了数据的质量。

概率采样会逐步放大偏差

大模型生成答案的过程不是逻辑推理,而是按概率一步步猜下一个词。每一步都选当前最可能的词,但一步偏了,后面就基于错误的上下文继续生成,偏差会逐步放大。

生成步骤 状态 结果
第1步 选对了 上下文正常
第2步 选对了 继续正常
第3步 选了次优选项 出现小偏差
第4步 基于偏差上下文继续 偏差被放大
第5步 偏差累积 输出严重偏离事实

这种偏差放大效应在概率分布混乱的情况下更加明显。常见问题对应的概率分布比较集中,模型选对的概率高;冷门问题对应的概率分布分散,选错的概率增加;模糊问题中多个候选词的概率接近,模型容易选到错误的那个。小偏差逐步累积,最终就变成大错误。

五层原因的叠加

幻觉不是单一原因造成的,而是五层因素叠加在一起。训练目标追求流畅而非正确,这是基础设定的偏离。模型没有自知之明,不知道自己知识的边界在哪里,所以会硬着头皮回答任何问题。知识以压缩方式存储,精确信息天然容易出错。训练数据本身包含错误和噪音,模型学到了这些错误规律。生成过程中的概率采样让前面的小偏差逐步累积成大错误。这五层叠加在一起,一本正经胡说八道就成了必然结果。

缓解幻觉的手段

从用户层面,有一些实用技巧可以降低被幻觉误导的概率。追问细节可以让模型在不确定的地方暴露问题,要求引用来源会逼迫模型承认不知道出处,将温度参数设为0能减少随机性让模型更保守,明确告知模型”如果不知道就说不知道”等于给它一个放弃的选项。

层面 方法 原理
用户层 追问细节 让模型暴露不确定的地方
用户层 要求引用来源 逼迫模型承认不知道出处
用户层 温度参数设为0 减少随机性,输出更保守
用户层 明确允许说不知道 给模型一个放弃的选项
技术层 RAG 检索增强生成 先检索真实资料,再基于资料回答
技术层 知识图谱 grounding 将回答锚定到可验证的知识节点
技术层 多模型交叉验证 多个模型回答同一问题,对比差异
技术层 事实核查模块 对模型输出做二次验证

这些方案的核心思路一致:引入外部真实信息,弥补模型内部的知识缺陷。

大模型本质上是一个流畅的语言生成器,不是精准的事实数据库。把它当作能快速整理思路、启发想法的助手来用,关键事实还是要自己去核实。


参考资源

扫描二维码分享