留个笔记自用
Linformer: Self-Attention with Linear Complexity
做什么
点云的概念:点云是在同一空间参考系下表达目标空间分布和目标表面特性的海量点集合,在获取物体表面每个采样点的空间坐标后,得到的是点的集合,称之为“点云”(Point Cloud)。
点包含了丰富的信息,包括三维坐标X,Y,Z、颜色、分类值、强度值、时间等等,不一一列举。
一般的3D点云都是使用深度传感器扫描得到的,可以简单理解为相比2维点,点云是3D的采样
做了什么
这里设计了一款transformer变种,证明了自我注意机制也就是self-attention可以用一个低秩矩阵来近似,于是可以将时间复杂度O(n2)缩减至O(n)的线性transformer
怎么做
回忆一下常见的SA计算方法
这里的三个W均是学习的矩阵,QKV就是常见transformer中的查询向量、键向量、值向量,对比之前论文里出现的
这里把括号里的softmax等部分称为P(上下文映射矩阵)∈Rn×n,就是点与点之间的attention矩阵,然而计算这个P非常昂贵,需要O(n2)的时间复杂度
然后画了两张图来进行分析
上面是两张频谱分析图,Y轴是上下文映射矩阵P的归一化累积奇异值,X 轴是最大特征值的索引,也就是将奇异值分解应用到模型的不同层和不同头部的P中,从上面这张图可以看的出,128之前整体曲线效果已经基本饱和,这意味着矩阵P的大部分信息可以从最初几个最大的奇异值中恢复出来
然后是一张不同层和头部的第128个最大特征值的归一化累积特征值的热图,观察到在较高层中,更多的信息集中在最大奇异值中,并且秩较低
简单来说,这里就是绘制了两张图,为了证明一点,高维度数据对处理这个任务来说起到的帮助较小,可以尝试将复杂度降低
为了使SA归为线性时间复杂度,这里说是先是要证明P矩阵是低秩的
提出了一个定理
简单来说就是对于任意的QKV和三个的W矩阵,对任意VW(也就是V)的任意列,都存在一个低秩矩阵P使得
然后开始具体的证明
重新换一个方式定义一下P
softmax的数学计算是
这里就将P的softmax里面假设为矩阵A,形式就可以改写成exp(A),D是一个n×n的对角矩阵
这里证明文中说是用了一个什么distributional Johnson–Lindenstrauss lemma
于是去查了一下这个的意思:严格说来是这样:在 M 维空间中的 N 个点,几乎总是被包含在一个 D 维子空间里的。这里的 D 按照直觉应当等于 N 的阶,可是实际上我们只需要让 D 是 log(N) 的阶就可以了。这里「几乎被包含在」的确切含义是它在这个子空间上的投影几乎是等距的(允许有一个 ε 的误差,而常数 D/log(N) 就依赖于 ε)。很显然,这件事情在高维数据降维时有极重要的意义。
然后构造一个近似低秩矩阵
前面的exp(A)·DA就是前面定义的P,这里的R是一个k×n的矩阵,是一个独立同分布的正态分布(0,1/k),然后就可以利用上面的定理证明对于V的任意列w
当
存在
附录给出了具体的数学证明,太数学了,看看就好
总的来说,还是理解一下JL lemma的道理,这个定理的意思就是在一个高维的欧式空间(距离用欧式距离表示),我们想要把这些点移动到一个低维的空间, 当时要保证空间转换后,每两个点之间的距离几乎不变。就是把一个高维计算能降至低维,大大降低了计算难度
得到了P矩阵的低秩属性后,使用奇异值分解来得到近似
σi、ui和vi是第i大的奇异值及其对应的奇异向量
所以总的来说,这里就是可以利用Plow这个低秩矩阵来近似我们之前使用的P,来近似我们之前使用的A,来简化attention的计算,而得到低秩矩阵的方法,就是对P使用奇异值分解
然后就是具体模型结构的设计
相较于最普通的head计算
主要是多在了两点,第一,映射矩阵P的区别,这里构造了一个相似矩阵P∈Rn×k(原来的映射矩阵P是n×n的),具体方法则是加了一个E层也就是线性投影层linear projection matrices。第二则是在外部V加了一个F层,同样也是线性投影层(使其从从n×d投影到了k×d)
这两步很明显最大的变化就是从n维到k的转换,从o(n2)到o(n×k),然后再根据前面的JL lemma定理可以得到,如果k特别小也就是远小于n,近似等同于时间复杂度为o(n)
接下来就是这种方法的理论和证明
这里又应用了上面的JL lemma,总的来说就是证明了前面能这么假设的可行性和误差性
总结
1.通篇数学实在太恐怖,总的来说就理解了做法,就是加了两层projection层,然后它就变成线性复杂度了!改天再看看代码然后再回来补一下。