AB
AiBoss站
百科

什么是注意力汇聚点(Attention Sink)?语言模型把注意力堆在首个词元上的现象

注意力汇聚点(Attention Sink)指语言模型把显著的注意力分数分配给序列首个词元的现象,即使该词元在语义上并不重要。arXiv:2309.17453 观察到这一现象并据此提出 StreamingLLM;arXiv:2410.10781 进一步考察了它在预训练中的出现条件,并提出它更像一种存储额外注意力分数的键偏置。

注意力汇聚点(Attention Sink)是语言模型(Language Model, LM)中的一种注意力分配现象:模型会把显著的注意力分数集中分配给序列的第一个词元(token),即便这个词元在语义上并不重要。它要解决的问题是,为什么在窗口注意力(window attention)只保留最近若干词元的键值状态(Key/Value, KV)时,模型性能会急剧下降——把初始词元的 KV 保留下来,性能就能大幅恢复。

为什么重要

在注意力汇聚点被系统研究之前,长文本推理面临两个现实约束。arXiv:2309.17453 指出,在流式应用(例如多轮对话)中部署大语言模型(Large Language Model, LLM)存在两大挑战:其一,解码阶段缓存历史词元的 KV 状态会消耗大量内存;其二,主流 LLM 无法泛化到超过训练序列长度的文本。

一个自然的应对办法是窗口注意力,即只缓存最近的 KV。但该论文表明,当文本长度超过缓存大小时这种做法会失效。注意力汇聚点的意义正在于此:论文观察到,只要保留初始词元的 KV,窗口注意力的性能就能在很大程度上恢复。这一观察把「保留哪一部分历史」从工程直觉变成了有明确依据的设计选择,并被用于流式与长上下文生成、KV 缓存优化、推理加速、模型量化等场景。

另一方面,arXiv:2410.10781 指出,尽管注意力汇聚点已被广泛采用,学界对它的深层理解仍然不足。该论文的贡献在于把这一现象从「可用的技巧」推进到「可考察的预训练行为」:它先证明注意力汇聚点在各种输入下普遍存在于语言模型中,甚至在小模型里也存在,并观察到它是在语言模型预训练过程中出现的。

工作机制

从注意力计算本身看,注意力汇聚点的直接表现是:序列首个词元获得了远超其语义重要性的注意力分数。arXiv:2309.17453 将其描述为一种「汇聚」——注意力分数强烈地流向初始词元,即使这些词元在语义上并不重要。

arXiv:2410.10781 对机制给出了更进一步的刻画,可以分几个要点理解:

  • 出现条件:该论文强调,注意力汇聚点是在对足够训练数据进行有效优化之后才出现的。也就是说,它不是模型结构一被初始化就具备的性质,而与预训练过程相关。
  • 位置相关性:汇聚点的位置与损失函数和数据分布高度相关。这解释了为什么它通常落在序列起始位置,而不是任意位置。
  • 功能解释:该论文发现,注意力汇聚点更像是一种「键偏置」(key bias),用于存储额外的注意力分数;这些分数可能是无信息量的,并不参与值(value)的计算。
  • 来源假设:该论文还观察到,这一现象至少部分源于词元之间通过 softmax 归一化对注意力分数产生的内在依赖。当把 softmax 注意力替换为其他注意力运算(例如不带归一化的 sigmoid 注意力)以放松这种依赖后,在参数量不超过 1B 的语言模型中,注意力汇聚点不再出现。

在应用层面,arXiv:2309.17453 基于上述分析提出了 StreamingLLM:一个让以有限长度注意力窗口训练的 LLM 无需任何微调即可泛化到无限序列长度的框架。该论文还发现,在预训练阶段加入一个占位词元(placeholder token)作为专门的注意力汇聚点,可以进一步改善流式部署效果。

典型例子

素材中出现的具体用法与系统包括:

  • StreamingLLM:arXiv:2309.17453 提出的高效流式语言模型框架。该论文称,StreamingLLM 能让 Llama-2、MPT、Falcon 与 Pythia 在多达 400 万词元及更长的序列上进行稳定高效的语言建模。在流式设置下,该论文报告 StreamingLLM 相比滑动窗口重计算基线最高可达 22.2 倍加速。
  • 占位词元作为专用汇聚点:同一论文发现,在预训练时加入一个占位词元充当专门的注意力汇聚点,可进一步改善流式部署。
  • 小模型中的普遍存在:arXiv:2410.10781 展示,注意力汇聚点在各种输入下普遍存在于语言模型中,甚至在小模型里也能观察到。
  • sigmoid 注意力的对照实验:arXiv:2410.10781 用不带归一化的 sigmoid 注意力替换 softmax 注意力,作为检验其来源假设的对照设置。

需要说明的是,上述效果数字与结论均出自对应论文自身的实验设置,属于论文作者的报告,并非独立复现的结果。

边界与常见误解

第一,注意力汇聚点不等于「首个词元很重要」。两篇论文都明确指出,被汇聚的初始词元在语义上并不重要。把它理解为「模型认为开头那句话特别关键」是一种误读;arXiv:2410.10781 更倾向于把它解释为存储额外注意力分数的键偏置,这些分数可能不携带信息,也不参与值计算。

第二,它不是所有注意力机制的必然性质。arXiv:2410.10781 的对照实验显示,在把 softmax 注意力换成不带归一化的 sigmoid 注意力之后,参数量不超过 1B 的语言模型中不再出现注意力汇聚点。该论文同时把这一结果限定为「至少部分」源于 softmax 归一化带来的词元间依赖,并未声称这是唯一成因。

第三,它的出现依赖预训练条件。按 arXiv:2410.10781 的说法,注意力汇聚点是在对足够训练数据进行有效优化之后才出现的,其位置与损失函数和数据分布高度相关。因此不能把它当作与训练细节无关的固定结构性质。

第四,保留初始词元 KV 是一种有代价的折中。arXiv:2309.17453 的出发点是窗口注意力在文本长度超过缓存大小时失效,而保留初始词元 KV 能大幅恢复性能;这本身意味着缓存预算需要在「初始词元」与「最近词元」之间分配,而不是无代价地扩展上下文。

第五,相关效果数字有明确的适用范围。22.2 倍加速、400 万词元等数据来自 arXiv:2309.17453 在流式设置下与其所选基线的对比,涉及特定模型(Llama-2、MPT、Falcon、Pythia)与特定实验条件,不应外推为所有模型、所有任务上的通用结论。

参考资料