幻觉是大语言模型最棘手的问题之一:模型会流畅地编造不存在的文献、虚构API接口、给出似是而非的历史事实。这种“一本正经地胡说八道”并非随机噪声,而是可以从注意力机制的内部结构中找到系统性的成因。本文聚焦两个关键机制——Attention Sink与Softmax瓶颈,分析它们如何共同导致模型在生成时偏离事实。

什么是Attention Sink:注意力为何被“吸”到开头
在使用KV Cache做自回归生成时,研究者发现了一个反直觉的现象:模型会把大量注意力权重分配给序列的第一个token,无论这个token是句号、换行符还是BOS标记。这个token本身几乎不携带语义信息,却成为所有注意力头的“锚点”。这就是Attention Sink现象。
其成因在于Softmax函数的归一化性质。Softmax要求所有注意力权重之和为1,即必须把全部注意力“花完”。当模型某一层的某个头不想关注上下文中的任何内容时(比如纯语法功能的映射),它无法输出全零的注意力分布,只能选择一个“安全”的token来倾泻多余的注意力。而第一个token在因果注意力中会被所有后续位置看到,缓存稳定、位置固定,天然成为最优的“垃圾桶”。
这带来一个直接后果:从第二个token开始,每个位置的隐状态中都混入了大量与开头token相关的信息。模型为了保持输出的正确性,被迫学会在残差流中补偿这部分污染。生成长文本时,这种补偿机制可能逐渐失衡,注意力回卷到Sink token上的权重越来越大,真正承载事实信息的中间token获得的注意力反而被稀释,模型便更容易“忘记”或篡改前文已经确立的事实,幻觉随之产生。简单地移除KV Cache中的开头token会导致模型输出完全崩溃或质量骤降,这也从侧面证明了Sink token的承载功能。
Softmax瓶颈:表达能力受限的数学根源
另一个深层限制来自Softmax本身。在标准注意力中,输出计算可以写为:注意力logit矩阵等于Q与K的乘积,再经过Softmax得到权重矩阵后与V相乘。Softmax bottleneck理论指出,由于Softmax是指数函数与归一化的组合,注意力输出的秩被限制在不超过head维度的水平。
举例来说,若head_dim为64,那么无论上下文长度是4K还是128K,单个注意力头能够表达的上下文关联模式最多只有64维的秩。当任务需要模型区分大量细微不同的上下文组合时——例如区分两个名字相似但事实不同的实体——低秩的注意力表达可能无法拉开足够的差距,模型只能退而求其次,选择统计上更“常见”的答案。这正是许多幻觉在形式上看起来“合理但不正确”的原因:模型输出的不是检索到的事实,而是受限表达能力下的概率妥协。
两者的叠加效应与缓解思路
Attention Sink与Softmax瓶颈往往共同作用。一方面,注意力权重被Sink token占用后,有效上下文表达进一步收缩;另一方面,低秩限制使得模型在长上下文中难以精确回溯关键信息,两者叠加放大了幻觉概率。
工程上有多种缓解方向。训练层面可以引入StreamingLLM式的Sink机制,显式保留开头的若干token作为注意力锚点,让模型不必用第一个token硬扛;也可以在预训练时对注意力施加正则或使用非对称注意力设计。推理层面,滑动窗口加Sink的组合、检索增强生成(RAG)把事实查证交给外部系统、以及事后的事实校验都是实用手段。针对Softmax瓶颈,可以增大head维度、采用多头混合或线性注意力变体(如基于核函数的注意力),提升上下文表达的有效秩。理解这两个机制的原理,有助于在部署大模型时针对性地选择架构与推理策略,从源头降低幻觉发生率。
大模型幻觉Attention SinkSoftmax瓶颈修改时间:2026-09-15 19:20:34