PowerAttention: 更准确高效的静态稀疏注意力

论文标题:
PowerAttention: Exponentially Scaling of Receptive Fields for Effective Sparse Attention

论文地址:
https://arxiv.org/pdf/2503.0287

一、动机

Self-attention的O(N^2)复杂度极大地拖累了模型性能,稀疏注意力机制通过减少token之间的交互来改进计算效率。稀疏注意力可分为动态和静态两种类型,前者会动态地挑选更合适的key来与query交互,后者则遵循固定的挑选模式。目前的实践中,一般采用动静结合的方式,例如deepseek的Native Sparse Attention

作者认为当前的静态稀疏注意力模式,要么存在信息遗漏,要么不能快速地扩展上下文“视野”,希望找到一个更加完整、高效的静态稀疏注意力模式
在这里插入图片描述

二、相关工作及缺陷

1. Sliding Window Attention 滑动窗口

在这里插入图片描述
覆盖度

每个token可与窗口范围内的token直接交互,与其他token间接交互

视野扩张

随着窗口线性扩张,假设目标token与当前token的距离是N,需要堆叠的attention层数为:
N / w i n d o w _ s i z e = O ( N ) N/window\_size = O(N) N/window_size=O(N)

2. Stride Slash Attention 跨步注意力

Stride Slash Attention原文是一篇CV工作,它选择了两类token来与当前query交互(如下图所示),二维的图像拉平成长度为N的序列,可知行模式和列模式所选择token的数量都是√N
Stride Slash Attention 跨步注意力原文

此篇论文中展示的Stride Slash Attention略有不同:行模式是一个常数长度的window,而非原文中的√N长度

在这里插入图片描述
覆盖度

由于行模式的存在,和上述滑动窗口一样,每个token能够与所有token相关联,不会遗漏信息

视野扩张

当前token首先找到距离目标token最近的列模式token,然后访问与此token交互的最远的行模式token,最终找到目标token,需要堆叠的attention层数为:

1 + √ N / ( 2 ∗ w i n d o w _ s i z e ) = O ( √ N ) 1+√N / (2*window\_size) = O(√N) 1+N/(2window_size)=O(N)

解释:
首次到达列模式距离目标最近的token需要一层attention;由于列模式每次向前跨越√N步,所以此时与目标token的距离为不会再超过√N(否则列模式便可以继续向前跨步),平均为√N/2;此后每层attention最多能扩展window_size步,还需要√N / (2*window_size)层attention

3. Dilated Attention 膨胀注意力

类似于膨胀CNN,感受野留出空洞从而扩大视野范围
打勾方块表示当前token能访问到的所有token
覆盖度

每次以固定间隔挑选交互的token,留下的空洞永远无法与当前token建立联系

视野扩张

和滑动窗口一样,虽然通过留出空洞扩大了单层视野范围,但依然是线性扩张速度,找到目标token需要的attention层数为:
N / d i l a t e d _ w i n d o w _ s i z e = O ( N ) N / dilated\_window\_size = O(N) N/dilated_window_size=O(N)
其中dilated_window_size = windows_size / dilated_rate

4. LongNet

LongNet在多个窗口范围内应用膨胀注意力,并且窗口大小与膨胀率成等比例关系
longNet原理
黑色方框表示当前token无法访问到的token

覆盖度

如上图所示,存在访问不到的token,损失了信息

视野扩张

膨胀率不断倍增,视野范围以指数函数增长,所以到达目标token需要logN层attention模块

三、本文方法

提出PowerAttention:以2^k(k=0~logN)为间隔选择需要交互的token
在这里插入图片描述

覆盖度

如上图所示,每个位置的token都能建立关系

视野扩张

间隔范围以指数形式扩张,到达目标token需要logN层attention

分析

按照以上attention的邻接矩阵视角,在每层选择关联token数量相等的情况下,蓝色方块的数量以指数函数增长,所以我们为了更有效地扩展视野范围,需要在每层预留出指数增长的“空白”,让蓝色方块更均匀地填充进去,牺牲近距离的直接关系,来置换更多远距离的间接关系;

这里其实忽视了远、近距离依赖的重要性差异,也忽视了直接、间接依赖的重要性差异

四、实验结果

1. 困惑度

所有方法在4k~32k上下文上都保持了较低的困惑度,只有LongNet和Dilated在32k上下文效果微差

在这里插入图片描述

2. 大海捞针实验

不外推(测试数据长度不超过训练数据长度)
PowerAttention方法最接近于Full Attention的效果
在这里插入图片描述

外推(测试数据长度超过训练数据长度)

Sliding Window和LongNet方法在上下文长度超过8k后效果便急剧下降,这里就不再拿它们做外推实验;Dilated在所有上下文尺度上表现都不好,也不做后续外推实验

在这里插入图片描述

3. 长文本基准测试

在RULER基准上进行测试,它包含13个长上下文任务。PowerAttention在每个上下文尺度上的平均分都最好
在这里插入图片描述

4. 性能测试

PowerAttention的性能与滑动窗口attention相当
在这里插入图片描述

5. 视野范围可视化

为了验证各稀疏attention方案的视野扩张,与理论分析是否一致,作者设计了以下实验:

  • 在一个固定位置设置passkey,passkey是一个单词,有6种可能的取值(苹果、葡萄等)
  • 把每一层的attention结果切分成block
  • 训练一个简单的逻辑回归分类器,输入不同位置block的attention向量,预测passkey(六分类任务)
  • 统计每一层、每一个位置的attention向量,输入到上述分类器后预测passkey的准确率

实验结果如下:
在这里插入图片描述
解释:

  • 每张图一开始有一根纯白的柱子,表示此位置放置了passkey线索
  • 在Full Attention中,浅层的attention结果便可准确预测出passkey,说明模型一开始便与之建立了关系,和理论分析一致
  • 在Sliding Window中,浅层的attention只有在距离很近时才能预测passkey,表明视野受限,然后随着layer的加深,视野范围线性扩张,和理论分析一致。堆叠到28层时,最远位置的准确率只有48%
  • 在PowerAttention中(未经继续预训练和微调),浅层的attention间隔着能准确预测并且间隔呈指数阔大;随着layer的加深,深色间隔越来越少,这样的现象与理论分析一致。最终到28层时,最远位置的准确为56%
  • 如果PowerAttention经过了继续与训练和微调,那么最后在此任务上能达到100%的准确率

五、总结

此工作提出了一种新的大模型静态稀疏注意力模式,实现简单,实验结果证明了其有效性。此方法本质上是让交互token的选择更平均,牺牲了部分近距离直接交互,换取了更多远距离间接交互,从实验结果和视野范围可视化来看,这样的置换是划算的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值