找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

2194

积分

0

好友

288

主题
发表于 2 小时前 | 查看: 5| 回复: 0

科技论文发现与研究方向示意图

科技感概念图:Attention Sink

Attention Sink 来源于 Transformer 需要 Context Aware 的 Identity Layer,即需要 Attention Block 根据 Context 不输出任何变化的能力。

背景

最早是 Streaming LLM 这篇工作发现了 Attention Sink 这一现象:在 Transformer 模型的较深层中,注意力会越来越聚焦于序列的第一个 token。然而,这篇论文并没有深入解释这一现象背后的原因。

Llama-2-7B模型平均注意力热力图

https://arxiv.org/abs/2309.17453

那么,为什么模型会表现出这种“偏爱”呢?

在我的认知里,似乎一直没有论文能给出一个令人完全信服的解释。直到去年有一项工作专门进行了实证研究,试图探索其中的一些规律:

论文《WHEN ATTENTION SINK EMERGES IN LANGUAGE MODELS: AN EMPIRICAL VIEW》标题页

https://arxiv.org/pdf/2410.10781

Understanding Attention Sink

基于现有的观察,我们尝试提出一个假设,以期解释所有与 Attention Sink 相关的实验现象:

Attention Sink 来源于 Transformer 需要 Context Aware 的 Identity Layer,即需要 Attention Block 根据 Context 不输出任何变化的能力。

证据一:首个 token 的 value 几乎为 0

LLaMA3-8B模型中第一个token的隐藏状态与键值范数分析图

https://arxiv.org/pdf/2410.10781

从上述实证研究论文图中的第一行第三列可以发现,第一个 token 对应 value 的范数(norm)非常小。这意味着即使模型“关注”到了这个 token,它对最终输出结果的贡献也微乎其微。

这就引出了一个核心问题:模型为什么要去关注一个几乎为零的 value 呢?

  • 对于序列开头的两三个 token 而言,模型学习到的可能主要是 bi-gram 或 tri-gram 这类相对简单的模式。我们有理由认为,这些任务在较浅的模型层中就可以完成。
  • 假设浅层网络已经输出了“正确”的表示,那么深层网络需要做的,可能就是保持一种“恒等变换”,即不改变输入。

但是,Attention Block 如何实现这种数据依赖的恒等变换呢?

  • 考虑残差连接结构,Attention Block 要实现恒等变换,就需要其输出接近于 0。
  • 由于每个 token 在每一层是否需要“跳过”(恒等变换)是依赖于具体上下文(data-dependent)的,因此无法通过像 W_O * W_V * W_K 这样固定的静态参数来实现。
  • 那么,就必须通过 Softmax Attention 机制本身来实现。这意味着在 key 空间中必须存在一个特殊的 key:k_zero,这个 key 对应的 value 是 0。模型需要在想输出 0 时,能够精确地 attend 到这个 k_zero
  • 这也意味着模型必须为这个 k_zero 分配一个独立的子空间。这个 k_zero 需要与所有其他正常的 key 向量正交或呈负相关,这样才能保证当 query 与 k_zero 夹角很小时,其注意力分数最高,从而实现 attend 到 sink token 并输出 0 的目的。
  • 同时,这个 k_zero 的模长也必须设计得比较小,以确保在模型不需要进行恒等变换时,它对正常注意力计算的影响降到最低。其原理如下图所示。

sink token key 与普通 token key 的向量关系示意图

▲ sink token 和其余 token 的 key 会有什么区别

LLaMA3-8B模型中注意力分数与余弦相似度关系热力图

https://arxiv.org/pdf/2410.10781

上述实证研究论文中的实验图也佐证了我们的猜想。第二行第二列显示,当发生 sink 时,其他 key 之间的余弦相似度几乎为 0 或负值;同时第一行第二列显示第一个 token 的 key 的模长显著更小。

证据二:模型存在 early decoding,且越深的层 sink 越明显

如果我们使用语言模型头(lm head)去探测中间层特征所预测的 token,可以发现模型确实存在“提前解码”的现象。即从某个中间层开始,其输出的 Top-1 预测结果就已经和最终输出层的 Top-1 相同了。

而如果我们探测不同层的注意力分布图(Attention map),也会发现 Attention Sink 现象确实在更深的层中更为明显。这进一步支持了“深层网络更倾向于执行恒等变换”的猜想。

(部分实验图片可能涉密,无法公开,这里仅分享结论)

证据三:非归一化或者非正定 kernel 会消除 sink

假设我们手动设置一个与所有 key 的相似度都为 1、value 为 0 的虚拟 token(这等价于给 Softmax 分母加上了一个常数 e^1)。理论上,这会缓解 sink 现象。有研究者进行了实验,验证了这一猜想。

论文中关于注意力分数内部依赖的论述截图

https://arxiv.org/pdf/2410.10781

同时,上述实证研究论文也发现,使用非归一化的注意力机制(即注意力分数不一定非负,且加和不一定为 1)的模型没有出现 sink 问题。这同样佐证了我们的猜想:如果模型的注意力分数不一定非负,那么它也可以通过分数组合来实现输出 0,而不必依赖一个专门的 sink token。

证据四:Attention Sink 浪费了 dim,Gate 可以解决

Attention Sink 导致模型必须为 k_zero 分配一个专用的子空间,我们合理怀疑这会带来模型维度(dim)的浪费(即使给分母加常数 e 也无法从根本上解决)。一个想法是使用门控(gating)操作,使得模型可以 data-dependent 地输出 0。恰巧,Qwen 团队最近的相关实验为此提供了证据:

论文《Gated Attention for Large Language Models》标题页

https://arxiv.org/pdf/2505.06708

门控注意力机制结构图与效果对比

基础模型与门控模型注意力分数对比图

先不谈其带来的具体效果提升,他们发现在注意力机制的输出阶段(对应图中的 G1)加入门控最为有效,并且成功消除了 Attention Sink。这与我们的猜想一致(在 key、query、value 投影处加入门控 G2、G3、G4 并不能直接让注意力输出变为 0,但在输出处加入门控 G1 可以)。

总结

Transformer 模型中的 Attention Sink 现象,很可能源于模型对 context-aware 的 identity layer 的内在需求。多项经验性证据支持这一假设:

  • Sink token 的 value 接近于 0,且其 key 拥有专用子空间;
  • Transformer 存在 early decoding 现象,且更深的网络层中 sink 现象更为严重;
  • 通过采用非归一化或非正定的注意力核函数,可以移除 Attention Sink;
  • 门控机制能够有效消除 Attention Sink,并且可能因为解决了子空间浪费问题从而带来性能提升。

这一假设为 Attention Sink 提供了一个连贯的解释框架,并得到了来自多项独立实验的经验性证据支持。关于Transformer等大模型的内部工作机制,仍有诸多值得探讨的奥秘,欢迎大家在云栈社区继续交流讨论。




上一篇:三星Galaxy S26 Ultra体验评测:防窥屏、Bixby AI与影像系统的深度解析
下一篇:UniScientist 30B开源模型:如何实现AI自主科研全流程闭环
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2026-3-13 08:18 , Processed in 0.479686 second(s), 43 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2026 云栈社区.

快速回复 返回顶部 返回列表