Local AttentionStride AttentionGlobal AttentionLongFormerLocalAttnStrideAttnGlobalAttnBigBirdLocalAttnStrideAttnGlobalAttnRandomAttnCluster AttentionSinkhorn Sorting Network基本思想首先对N个token预测N个分数根据分数排序之后应用局部注意力就会使得相似分数的之间计算注意力。这个机制可以分解为以下五个清晰的步骤步骤一分块Divide and Conquer和许多高效注意力模型一样它不直接操作单个令牌Token。输入一个很长的令牌序列长度为 N。操作将这个长序列切分成k个连续的、不重叠的块Blocks。例如一个长度为4096的序列可以被切成64个长度为64的块。目的降低后续操作的粒度提高计算效率。保留每个块内部的局部语境信息。步骤二学习排序规则The “SortNet” Brain这是该模型最创新的部分。模型需要学习一个“排序计划”决定这些块应该如何重排。生成块的摘要对于每一个块通过一个池化操作如对块内所有令牌的嵌入向量求和或取平均生成一个代表该块整体语义的向量。现在我们有了k个摘要向量。运行排序网络 (SortNet)这是一个小型的神经网络。它接收这k个摘要向量并输出一个大小为k x k的原始得分矩阵R。得分矩阵R的含义R[i, j]的分值代表了模型认为“将原始的第i个块移动到新序列的第j个位置”的倾向性有多强。分值越高倾向性越强。步骤三可微分排序The Sinkhorn “Magic”我们不能直接根据得分矩阵R进行“硬”排序例如用argmax因为这个操作不可微分模型无法学习。因此需要一个“软”的、可微分的替代方案。输入上一步得到的k x k的原始得分矩阵R。操作对矩阵R应用Sinkhorn-Knopp算法进行迭代归一化。这个过程主要包括对R取指数确保所有值为正。反复地、交替地对矩阵的行和列进行归一化使每行/每列的和为1。输出一个大小为k x k的**“软”排列矩阵S**。矩阵S的特性它是一个双随机矩阵Doubly Stochastic Matrix每行之和为1每列之和也为1。它是“软”的矩阵内的值是0到1之间的连续浮点数而不是离散的0和1。它代表了一个加权的排序方案。S[i, j]的值通常接近0或1代表了第i个原始块在构成新序列的第j个块时所占的“权重”。最关键的是整个过程是可微分的。步骤四执行序列重排Execute the Sort现在我们有了“排序计划”矩阵S可以对原始的块序列进行重排了。操作通过一次简单的矩阵乘法将“软”排列矩阵S与分好块的原始序列X_blocks相乘。Sorted_Blocks S × X_blocks输出一个新的、排好序的块序列。在这个新序列中根据模型学到的规则语义上或功能上相似的块已经被“物理地”移动到了一起成为了邻居。步骤五局部注意力Attend Locally这是最终收获成果的阶段。输入上一步得到的、排好序的块序列。操作在这个“整洁”的新序列上应用一个非常高效且计算量小的局部滑动窗口注意力。目的由于所有相关的信息块已经被排到了一起一个简单的局部窗口就足以捕捉到它们之间的关系。这等同于用局部的计算成本实现了准全局的注意力效果。Linformer基本原理压缩key的数量只选取代表性的key与对应的value针对如何选出K个代表性的key两种做法、Compressed Attention的做法是经过CNNLinformer的做法是经过全连接层Q为什么不把query也压缩了呢A压缩query的话输出长度也会变在部分应用下可以压缩query注意力新的计算方式关于如何将exp(q*k)拆解不同paper不同做法Synthesizer将注意力权重矩阵作为网络的一部分而不是经过QK点积运算