为什么 AI 会一本正经地胡说?

事情是这样的。

前阵子我让 Claude 帮我查一个比较冷门的 Python 库的某个方法,它啪啪啪给我写出一段调用代码,方法名、参数、返回值,写得有模有样,还顺手注释了一句「这个方法在 1.2 版本之后可用」。

我当时心想,行啊,挺专业。

复制,粘贴,运行,报错。

我盯着那个方法名看了半天,去翻了官方文档,翻遍了 changelog,根本没有这个方法。它从头到尾,包括那个煞有介事的版本号,全是编的。编得还特别自信,特别真诚,你要是不较真,真的会被骗过去。

???

这件事让我开始琢磨,AI 为什么会一本正经地胡说。它到底是真的「知道」然后记岔了,还是压根不知道自己在说什么。

它不是在「回答」,它在「接话」

很多人对 AI 有一个误解,觉得它像一本百科全书,你问它问题,它去翻目录,找到对应的那一页,然后把内容念给你。

不是的。

它的运作方式,说到底就是一个动作,猜下一个词。

你给它一段话,它根据这段话算出接下来最可能出现的词是哪个,吐出来,然后再根据前面的所有内容算下一个,再吐出来。一个词一个词地往后接,接到你看到的那段完整回答。

这个过程里没有「查询」这个环节。它没有在某个数据库里翻找事实,它只是在算概率。

你想想看,这跟我们平时「回忆」一件事完全不一样。你问我昨天午饭吃了什么,我会去记忆里找。但 AI 不是这么干的,它更像一个读了一屋子书的人,你起个头,它凭语感往下接,接得越顺的、概率越高的,它就越可能那么说。

问题就出在这。

概率高,不等于事实对。

「李白是唐代诗人」这句话在它见过的文本里出现频率极高,所以它接得准。但你问一个特别冷门、特别具体的细节,它见过的样本少,就靠语言的模式去「补」,补出一个看起来最通顺、最合理的答案。这个答案语法上完美,逻辑上自洽,但事实层面,可能是它编的。

这就是幻觉的根。

它不区分「我知道」和「我编得通顺」。对它来说,这俩是一回事。

训练数据,本来就一肚子脏东西

再往深一层想,它用来学习的那些文本,本身就是一锅大杂烩。

互联网上什么都有。有写得严谨的论文,也有满嘴跑火车的论坛帖子。有十年前早就过时的技术文档,也有昨天刚发的、跟旧文档互相矛盾的版本。同一个问题三篇文章三个答案,都挺自信,它全吞下去了。

所以它脑子里存着的,不是「经过核实的事实」,是「人类语言里各种说法的统计分布」。

你问它一个有争议的问题,它可能把几种说法揉在一起,给你一个谁都没说过、但听起来特别像那么回事的答案。你问它时效性强的问题,它可能用三年前的信息一本正经地回答你,因为它根本不知道世界已经往前走了。

我自己就踩过这个坑。问它某个框架的用法,它给我一套 API,我照着写,全报错。后来才发现那套 API 是两个大版本之前的,早废了。它还活在旧时光里,但语气跟讲最新版一模一样。

这就是数据过时和冲突带来的幻觉。它不是故意骗你,它只是分不清新旧、分不清对错,它只会接话。

人类也教过它「装得像样」

说到这,有人会问,现在这些大模型不是都做了什么人类反馈强化学习吗,就是那个 RLHF,让它学会讨人喜欢、回答有用。那为什么不顺手也教教它别说谎。

这事儿我琢磨过,觉得挺有意思。

RLHF 干的事,是让人类给 AI 的回答打分,哪个好哪个差,然后用这些分数去调整它。问题是,人类打分的时候看的是什么。

看的是顺不顺眼,像不像回事,有没有帮助感。

注意,是「帮助感」,不是「准确性」。

一段回答如果条理清晰、语气笃定、结构完整,人类天然就会给它高分。而那种犹犹豫豫、动不动就说「我不确定」的回答,哪怕它才是诚实的,也容易被打个低分。

你发现这个矛盾了吗。

RLHF 在某种程度上,是在奖励 AI「看起来很懂」。它教会了 AI 怎么把话说得更漂亮、更像一个靠谱的助手,但它没法真正教会 AI「我到底知不知道这个事」。

因为这个边界,连人类标注员自己都划不清。你给标注员一段冷门知识的回答,他自己都不一定知道这答案对不对,他怎么打分。他只能凭感觉,凭「这话说得像不像真的」。

所以 RLHF 把 AI 的表达打磨得很光滑,但底层那个「猜下一个词」的机制没变。它还是那个会接话接飞了的机器,只不过现在接得更体面了。

这就是为什么幻觉没被彻底解决。甚至在某些场景下,AI 越是「体面」,你越容易被它骗过去。

那我们拿它怎么办

搞清楚原因,不是为了吓唬自己,是为了知道怎么跟它打交道。我自己用下来,有几个办法确实管用。

第一,别让它单方面拍板。它给你的任何具体事实,数字、引用、API、人名、论文标题,只要你要拿去用,就去别的地方对一眼。我自己写技术的东西,它给的代码我会真跑一遍,它引用的文档我会真去翻。慢一点,但不会被坑。这玩意不是不能信,是不能全信。

第二,直接跟它说,不知道就说不知道。你会发现,很多模型你要是不特别强调,它倾向于硬编一个答案给你。但你要是在提问里加一句,「不确定的地方请明确告诉我,不要猜测」,它老实话多了。它会把不确定的地方标出来,甚至直接说「我没有这方面的确切信息」。这个习惯一旦养成,踩坑的概率会小很多。

第三,给它喂靠谱的来源。这就是现在很多人在用的 RAG,检索增强生成。你先去找一批你信得过的文档,让它只在这些文档里找答案,找到就说,找不到就说没有。等于给一个只会接话的人塞一本标准答案在手里,让它照着念。

这个办法对事实性强的场景特别有用。我自己搭过一个查内部文档的小助手,就是 RAG 的路子,它老老实实只说文档里有的东西,幻觉几乎没了。当然它也变笨了,文档里没写的一概不答。但轴一点,总比张嘴就来强。

说真的,工具是死的,用法是活的。你搞清楚了它的脾性,它就是个能干的帮手,搞不清楚,它就是个高级一点的坑货。

它是来「生成」的,不是来「检索」的

聊到这我想把话说得更透一点。

我们之所以对幻觉这么恼火,是因为心里默认 AI 是一个搜索引擎。你问它,它应该给你一个对的答案,就像你 Google 一个东西,排第一的就是最相关的。

但 AI 从来不是搜索引擎。

它的底层是生成,不是检索。它被造出来,是为了续写人类语言,是为了能跟你聊天、能写诗、能编故事、能把一段模糊的想法扩写成一篇通顺的文章。这些事情,本身就需要它「编」。

你让它写一首关于月亮的诗,它编出来的意象,李白没写过,苏轼也没写过,但那首诗是美的,是有意义的。这时候你觉得这是才华,是创造。

你让它给你一个 API 的用法,它编了一个不存在的方法,你气得跳脚,觉得这是 bug。

但这俩,在它的机制里,是同一件事。

都是根据上下文,生成最通顺、最合理的内容。区别只在于,你想要的是「事实」还是「创意」。想要事实的时候,编,就是幻觉。想要创意的时候,编,就是创造。

所以我一直觉得,把幻觉单纯当成一个技术缺陷,是一种偷懒的看法。它更像是生成式 AI 这个物种的基因特征,是它能力的另一面。能创造的那个机制,跟会编的那个机制,是同一个。

你没法只要它的才华,不要它的胡说。这俩是一枚硬币的两面。

我有时候会想,人又何尝不是这样。你身边肯定有那种特别能聊的人,什么话题都能接,聊得头头是道,你听着觉得特有道理。但你要是真去查,他说的那些细节,一半是自己加工过的,一半是记岔了的,还有一半,纯粹是现编的。

。。。但你还是爱听他聊,因为他聊得有启发,聊得有意思。

AI 也有点这个意思。它是个特别能聊的家伙,聊得通顺,聊得自信,偶尔聊得让你拍大腿,偶尔也把你带沟里。

你要做的是当个明白的听众,知道哪句该信,哪句该核实,哪句听听就好。而不是指望它变成一个永不犯错的百科全书。

它不会变成那样的。它本来就不是。

保持好奇,知道边界,然后大胆去用。我觉得这就是面对幻觉,最该有的姿态。

评论区

暂无评论,快来抢沙发吧