模型为什么会「幻觉」,它自己知道在编吗

2小时前发布

模型为什么会「幻觉」,它自己知道在编吗

有人拿一份内部制度去问 AI,它回答得条理清晰,还引用了《劳动合同法》第某条。拿去给法务看,法务说这条确实存在,但内容和这里说的不是一回事。条文号是真的,表述是它自己攒的。

这种情况太常见了。研究者给它起了个名字,叫幻觉。听起来像是模型在有意骗人,实际不是。理解幻觉的成因,比背下多少个例子有用,因为成因决定了你该怎么防。

它不是在撒谎,是在补全

模型的工作方式是预测下一个片段该是什么。给定前文,它算一遍概率分布,挑出最合适的接着往下写。整个过程里没有一步是「去数据库核对一下」。

这就解释了为什么幻觉常常长得很像真的。它写出来的东西,在语言层面是高度自洽的:引用的格式对,条文号的位数对,语气也对。因为它学的是海量文本里的模式,这些模式它都见过,拼起来毫无破绽。破绽只出在事实层面,而事实层面它没有校验的通道。

换个说法:它擅长的是「像不像」,不是「对不对」。你问它一个它不知道的事,它不会停下来,而是沿着最像的路径生成一段。人编瞎话需要动机,它不需要。

办公桌上摊开一叠打印的法律文件,一支红 {MOD}批注笔横放其上

三种最常见的编法

编引用

最典型的一种。你让它给几篇参考文献,它给出的标题、作者、期刊、年份都很规范,拿去搜索一篇都找不到。有些是真实作者写过的另一篇,有些纯粹是拼出来的。学术写作里这个坑最深,因为格式越规范,越容易被当成真的。

编法规条款也在这个类别。它记得有类似的规定,但记不清是第几条、哪个文件、什么时候修订的,于是按最合理的样式填上。

编数字

让它说某行业去年的市场规模,它给一个带小数的精确数字,还附上同比增速。数字越精确,可信感越强,实际可能是几个来源混在一起估的。价格、规格、参数、政策补贴额度,都属于这类高危区。

有个规律:带具体小数点的数字,反而要更警惕。真实数据往往是整数或带单位口径的近似值,编出来的数字经常精确到小数点后两位,因为它学到了「统计数据通常长这样」。

编人和机构

问某领域有哪些专家,它会给出几个名字加头衔。名字也许真有其人,但研究方向、所属机构、代表作是拼的。企业信息也一样,注册资本、成立时间、法定代表人,这类结构化字段最容易被填错。

它自己知道在编吗

直接回答:不知道。它没有一条并行的通道在跑「我说的这句有依据吗」。生成过程是单向的,一旦开始写,就沿着概率走到底。

你可以让它自查。问一句「你刚才引用的这条法规确定存在吗,逐条列出出处」,它会重新审视,有时能改口说「抱歉,这一点我不确定」。这种自查有用,但不能当保险。因为自查也是同一个生成过程,它会编一个更详细的出处来支撑前面的编。

有个实验很说明问题:让模型对自己的回答做置信度评估,它在编造内容时给出的置信度,和回答正确时相差不大。也就是说,它的「我觉得对」跟事实是否成立基本脱钩。这一点和人的体验很不一样,人编瞎话时心里是有数的。

一个人坐在电脑前皱眉看着屏幕,手撑着下巴

什么情况下更容易编

知道高危场景,比记住多少条防骗技巧有用。

冷门领域排第一。热门话题它见过大量文本,记忆密集,答得准。越是细分、越少人写的领域,它见过的样本越少,就越倾向于靠「合理推测」填空。地方性政策、细分行业的工艺参数、小众产品的规格,都属于这一类。

精确查询排第二。要一个具体数字、一个具体日期、一个具体条款原文,这类需求是检索任务,交给生成模型就是错配。它没有查表能力,只能凭印象复现,印象一模糊就编。

时效性问题排第三。问它上个月发生的事,如果训练数据没覆盖,它不会说不知道,而是用它知道的旧情况回答,看起来像在讲当下。这个错误最难识别,因为内容本身没毛病,只是过时了。

还有一种是自己造成的:把它逼到必须给答案。你说「必须给我三个方案,不许说不知道」,它就会凑够三个。约束越硬,编的概率越高。留一句「不确定就说不知道」,能挡掉相当一部分。

怎么把幻觉压下来

办法不是让它变诚实,是改变任务形态。

先给材料,再提问

把要它回答的依据先贴进去,让它只基于这份材料作答。这样它做的是阅读理解,不是凭记忆回忆。同样的模型,加一份原始材料之后,准确率的提升非常明显。

贴材料的时候要给它退路:材料里没有的,直接说没有。这句指令一定要写,否则它倾向于用通用知识补全材料里缺的部分,你以为它在读材料,其实它在发挥。

要求标注位置

让它每给一个结论,都指出材料里的哪一段支持这个结论。这个要求本身就是筛子:编出来的内容指不到具体位置。你抽查两三条,就能判断这一轮回答的整体质量。

如果它指的位置对不上,不要在这轮里继续追问。重新组织材料,换个问法,比在原答案上修补省时间。

关键结论单独核

涉及法规、金额、合同条款、医疗建议、技术参数,这几个类别不要省核验。让它在回答里标出哪些是需要人工确认的,然后真的去确认。这一步花十分钟,能挡住后面几天的返工。

核验的时候用搜索引擎查原文,不要拿另一个 AI 的回答当依据。两个模型用相似的语料训练,犯同一个错的概率不低,互相印证容易变成互相强化。

一次真实的返工

讲个具体经过。有个做建材的客户要写一份投标文件的技术标,时间紧,把产品参数表和几个同行的公开资料丢给 AI,让它写技术优势部分。AI 输出的内容很漂亮:性能指标、检测报告编号、执行标准,一应俱全。文员核对了主要参数,觉得没问题,就编进标书交上去了。

开标之后被质疑。问题出在一个执行标准号上,AI 写的是某个国标的编号,但那个编号对应的是另一种材料。评标专家一眼看出来,直接判定技术响应不实。这一条足够废标,前面所有的功夫白费。

事后复盘,AI 编的地方只有一处,就是标准号。其余参数都是从给的表格里抄的,一个没错。恰恰是这一处,材料里没给,它自己补的。补得非常合理——同类材料的国标编号只差后两位,它按规律推了一个。

这个案例说明两件事。一是幻觉的分布不均匀,给了材料的那些部分它很老实,没给材料的部分才是雷区。二是核验要有方向:不要平均用力核对所有内容,专门去找那些「材料里没有、它自己加进来」的部分。这些部分数量不多,找出来也快。

后来他们的做法改成:让 AI 输出完之后,单独列一份「本回答中没有材料依据的内容清单」。这个清单通常只有三四条,逐条核一遍,五分钟搞定。这个动作加进流程之后,同类问题再没出过。

一句实话

幻觉不是 bug,是这类模型的固有特性。它靠概率生成,就必然在记忆模糊的地方补全。指望某一代模型彻底消灭幻觉,不如把使用习惯改过来:凡是需要准确的地方,给它材料、要它标出处、自己核一遍。

真正危险的不是它编,是它编得像。所以判断标准不能是「读起来像不像真的」,只能是「这一条我有没有独立验证过」。把这条线守住,它依然是个很有用的工具;守不住,它给你的每一个漂亮答案都可能是坑。

桌上的纸质文件被荧光笔划出几行,旁边放着一只放大镜