为什么模型会「越写越离谱」?为什么「上下文越长越聪明」是个错觉?本文基于《你拼命消除的正是智能》一书中关于「注意力」「概率加权」与「强制补全」的论证,把幻觉这件事从直觉词里拽出来,钉死到数学结构上。
引子:我们一直把「幻觉」用错了
「大模型又幻觉了。」
这句话现在几乎成了所有 AI 翻车现场的兜底解释。但很少有人追问一句:我们说的「幻觉」到底指什么?
是模型记错了一个日期?算错一道算术?还是它兴致勃勃地编出一段根本不存在的论文引用、越写越离谱?
在人工智能领域,「幻觉(hallucination)」这个词从心理学借来,原指「无外部刺激时的虚假知觉」。到了大模型这里,它被塞进了一个越来越大的筐——一切事实性错误都被装了进去。这个用法的问题,和「注意力」一模一样:词借来了,内涵没厘清。
本文想做的,是把「幻觉」从直觉词里拽出来,钉死到它真正的数学原点:softmax 归一化那个必须等于 1 的约束。看完你会明白,模型最致命的幻觉,不是「错了」,而是「越错越离谱」——而且这几乎是被架构逼出来的。
一、幻觉的数学原点:「注意力」的「1」
先说一个常被误解的事实。业界俗称的「注意力(attention)」,严格讲不是一种「东西的多少」,而是一组比例——模型每生成一个 token,给上下文所有位置分配一组权重,这些权重加起来严格等于 1。
Σ αᵢ = 1, αᵢ ≥ 0
就这么简单的一个约束,藏着幻觉的两块砖。
1.1 它是比例,不是「量」
因为总和恒为 1,所以根本不存在一个可以「被增强」「被扩大」的绝对量。「上下文越长,注意力越强」是一个类别错误:变长的只是把同一块固定为 1 的饼切得更细——分配在变,总量(永远是 1)没变。
这直接拆穿一个营销错觉:「上下文越长越聪明」。上下文窗口变大,只说明模型在架构上处理得了这么长的序列——相当于一间屋子从 100 平米扩到 1000 平米,你确实走遍了每个角落(模型「收到了」全部 token)。但这不改变你手里的那份精力:权重总和依旧是 1,屋子越大,每个位置分到的比例反而越薄。变长的只是屋子,封顶的是那一份权重。
1.2 一旦定型,必须加到 1 才停
模型每生成一步,都要把权重归一化到 1 才能吐出下一个 token。这中间没有「先停一下、想想刚才那步对不对」的位置——因为归一化是一步到位的硬操作,没有「保留一部分权重留作监控」的接口(总和恒为 1,没有剩余可留)。
它不能中途喊停,必须一口气把这一整份权重分完、吐出一个字,才能继续。没有「我等等、我再想想」这种动作。
两点合起来,是幻觉的架构原点:单体模型既没法「留出一部分权重」做自我监控(要点一:没有剩余),也没法「中途暂停」去做元认知(要点二:不能停)。这不是「它还不够聪明」,而是归一化约束从数学上封死了「暂停 / 保留」。
一个自攻:有人会想,让模型在输出时「重算一遍前面的注意力,看看还剩多少余量」不行吗?不行。因为「重算」本身也是一次归一化,照样必须 Σ=1、照样不能停——你只是在同一个笼子里又套了一层笼子,无限回归。凡试图「在框架内修补框架」的方案(重算、折旧、审计),最终都被「1」的约束回收。这证明:必须跳出框架,而不是在框架里加补丁。
二、强制补全:幻觉的结构性来源
「1」的约束带来一个具体的、单体模型绕不开的缺陷——幻觉的结构性来源。根因有两层,必须拆开看,不能糊在一起:
- 根因 A(无弃权桶):归一化分布里默认没有架构级的「我不知道」状态。Σ=1 必须分完,没有弃权位;即便模型学会了说「我不知道」,那也只是分布里某个被选中吐出的 token,而非可以中断生成、保留权重去核验的原生机制。
- 根因 B(强制吐字):自回归生成协议强制每一步都必须吐出一个 token 才能继续——这才是「必须选」的真正来源。
于是当某一步相关度已经很低、模型其实「该停」时,它仍被迫从分布里选一个最高概率的 token;这个低相关 token 进入上下文,又在下一步抬高了更多低相关 token 的概率,沿自回归链累积。
这就是长文本中「越写越离谱」的核心机制:初始的小扰动,被强制补全的每一步不断放大,直至显著偏离。
它不能摇头说「这题我不会」。就算它其实已经不会了,也得硬编一个字出来;这个字又带着后面的字一起跑偏,越跑越歪。
需要立刻收住一句过度宣称:这不是「每次生成都是幻觉」。当高概率 token 本就相关时,生成正常;该机制只在分布外 / 相关度塌缩时迫使模型编造。它也不是幻觉的唯一来源——下面一节会拆。
三、把「幻觉」钉死:事实误差 ≠ 幻觉
这是本文最该被记住的一点。
很多人把「记错一个日期」和「编出一段不存在的文献」当成同一种病。但二者机制完全不同:
- 事实误差:知识性或数据性的单点错误。来源是训练数据含假、参数未覆盖真实分布、或概率 ≠ 真实——这些与「人记错一件事」同类,是有界的、静态的错误,人类也会犯。它不来自「1」的循环。
- 幻觉(本文特指):由「1」的强制补全驱动、沿自回归链累积放大直至离谱的错误。它的区分性特征不是「错了」,而是「越错越离谱」——初始小扰动被每一步强制吐字不断放大。
人记错一个名字,是「记岔了」,错就错在那一个点;模型陷进幻觉,是「越编越离谱」,一个错字带着后面全跑偏。前者是单点故障,后者是雪崩。
把两者切开,立论反而干净:我们能从结构上解释的、且区别于人类智能的,正是后者(累积放大的离谱输出);前者(事实误差)是人类也有的局限,不在本文「幻觉」特指义内。
「幻觉」的特指用法是本文的工作定义,不代表领域共识;领域常把事实性错误也称作 hallucination。本文选择窄化,是为了让「「1」→ 累积放大」这条可证伪的链成为唯一讨论对象。
四、一个统一的隐喻:黑屋手电 + 磁铁
把上面几节串起来,最好用一个画面。
「注意力」像在黑屋里用手电找钥匙。 上下文(输入长度)是屋子——「这屋有 1000 平米」只说明你进了屋、走遍了每个角落(模型「收到了」全部 token),不代表你看得更清。你手里的电量(权重总和)始终是固定的一份:Σ=1。屋子越大,照到的角落比例越小、每个角落分到的光越薄。真正决定找不找得到钥匙的,不是屋子多大,而是那点有限的光有没有打在放钥匙的角落上。
而「幻觉」就是:你其实已经照不到钥匙了,但规定你必须再走一步、再指一个方向——于是你随便指了一个,下一步又基于这个错的方向接着指,越指越离谱。
那怎么办?两件事:
(1)多支手电分区域,而不是一支手电复制 N 次。
换多智能体,相当于放进多支手电——但前提是每支各自满电(每个角色带一组独立的「1」)、且分区域(不同角色 / 视角)去找,而不是 N 支重叠扫同一片(那只是把同一支复制 N 次,盲点一模一样、成本翻 N 倍)。分完区域、各自找完,还得有人把 N 份报告汇总校验(一个独立的「1」专司汇总)。这种「多个独立「1」并行、各被外部锚驱动」的结构,可以称作分布式角色注意力(概率加权)——它区别于封闭随机噪音,也区别于模型内部的「多头注意力」(后者是无目的的多视角并行,本身没有任何目的锚)。
(2)找到候选还得验:外部真值锚像一块磁铁。
真钥匙是铁打的,拿磁铁一试便知吸不吸得上。磁铁(工具)利用「铁能被磁吸」(锚)给出概率循环之外的客观否决权:吸不上就是吸不上,不吐 token、不累积。这正是治「强制补全」那把雪球链的关键——在错误尚未累积前,用外部锚把它钉住。
锚分两类,值得点破:
- 外部客观锚:来自世界 / 系统的客观可验证事实(如正确哈希值、数学悖论),必然真。
- 目的性锚:来自用户需求声明(如「我丢的钥匙是铁的」)。它同样给出循环外的客观测试,机制上也能治「硬编」;但它的内容可能随用户的认知出错——若用户记错了,磁铁按「铁」去筛,反而会排除真钥匙。人会犯事实误差,人给的锚也可能带误差,所以可靠的锚应尽量取自独立可验证源。

五、边界(必须诚实)
写到这,有几点不能含糊:
结语
大模型最该被理解的幻觉,不是「它偶尔出错」,而是「因为它被迫每步都选、且无法暂停,一个小错会被自己的生成协议滚成雪崩」。这个机制,根子在 softmax 那个必须等于 1 的归一化约束——它不是训练不足,是架构必然。
所以真正能治幻觉的,不是「把模型训得更乖」,而是跳出那个必须算到 1 才停的循环:用多个独立视角并行去覆盖盲区,用活在概率循环之外的客观锚去验、去掐断累积链。
一句话收口:幻觉的本质,是被「1」逼出来的、无法暂停的、会累积的编造。看清这一点,才知道往哪使劲。
本文观点提炼自书稿《你拼命消除的正是智能》卷三「「1」的两个下游缺陷」、卷四「层次化可靠性」、卷五「结构化不确定性 + 真值锚」及卷八研究议程。术语采用书中纪律:「注意力」打引号、本质是概率加权;「双层概率权重」仅为比喻。


