1、简介
建模长期的交互作用是机器学习重心所在。注意力机制已经成为捕获远程交互作用的选择范例。然而,自注意力机制的二次内存占用妨碍了它对长序列或多维输入的适用性,比如通常包含数万像素的图像。同时对于不仅仅图像的分辨率,图像的head个数也会带来很大的显存消耗。
基于上述局限,本文提出了termed lambda layers即Lambada Layer,它为捕获模型输入和上下文信息的结构化集合之间的长期交互提供了一个通用框架。它通过将可用上下文转换为线性函数(称为lambda)并将这些线性函数分别应用于每个输入来捕获此类交互。这里使用Lambda层作为注意力机制的替代品。注意力机制在输入和上下文元素之间定义了一个相似核,而Lambda层则是将上下文信息总结为一个固定大小的线性函数,从而绕过了需要大量记忆的注意映射。对比如下:
Lambda层用途广泛,可以实现为在全局,局部或masked contexts中对内容和基于位置的交互进行建模。由于它们避开了对昂贵的注意力图的需求,因此可以将lambda层常规地应用于成千上万个长度的输入,从而使它们可以应用于长序列或高分辨率图像。由此产生的神经网络体系结构LambdaNetworks具有高效的计算能力,并且可以通过直接调用现代神经网络库中可用的操作来轻松实现。
2、Modeling Long-Range InterActions
2.1、queries、contexts和interactions的定义
这里分别用和表示queries和contexts,其中每一个query特征都包含着和position n,同理,每一个context元素都包含和位置m,而(n,m)可以指结构化元素之间的任意类型的成对关系。
考虑在给定上下文C和函数的情况下将query映射到输出向量。当处理结构化输入时,这样一个函数可以作为神经网络中的Layer。这里把定义基于内容交互;定义为基于位置的互动。此外,当输出只有一个限制较小的上下文在n附近被考虑时,依赖于所有交互。最后,如果这些交互包含上下文中的所有元素(m个),则将其定义为稠密交互(dense interaction),否则定义为稀疏交互(sparse interaction)。
2.2、引入Keys来捕获Long-range interactions
在深度学习的背景下,对快速成批线性操作进行优先排序,并通过dot-product操作捕获交互。这促使引入可以通过点积操作与query交互的向量,从而与查询具有相同的维数。特别是基于内容的交互需要依赖的k维向量,通常称为关键。
相反,基于位置的交互作用需要位置嵌入也称为相对键。由于query/key深度k和上下文空间维度m不在输出中,因此需要将这些维度收缩为Layer计算的一部分。因此,捕获远程交互的每一层都可以根据它是收缩查询深度还是首先收缩上下文位置来表征。
2.3、Attentional interactions
收缩查询深度首先在查询和上下文元素之间创建一个相似性内核(注意映射),称为Attention操作。可以将此机制看作是对激发query,key,value-terminology的可区分内存的寻址。随着上下文位置m的数量不断增加,而输入和输出维数k和v保持不变,考虑到层输出是一个维数相对较小的向量v<<m,可以看出Attention Map存在计算的浪费。
2.4、Lambda interactions
相反,通过一个线性函数表示某个线性函数;在这个场景中,上下文被聚合为一个固定大小的线性函数。每个虚拟元数据作为一个小的线性函数,独立于上下文存在(一旦计算出来),并在应用到与其相关的查询后被丢弃。这种机制让人联想到激发lambda术语的函数编程和微积分。相反,通过线性函数将每个查询映射到它的输出可能更高效。在这个场景中,上下文被聚合为一个固定大小的线性函数。每个虚拟元数据作为一个小的线性函数,独立于上下文存在,并在应用到其关联的查询后被丢弃。
3、Lambda Layers
这里记输入为和context为作为input并生成一个lambda线性函数,并将其应用到query和产生Y中。注意:这里、。
3.1、Lambda Layer:将上下文转换为线性函数
1、生成Contextual Lambda Function:lambda层首先通过线性映射上下文来计算键和值,并且通过softmax操作跨上下文位置对键进行标准化,进而得到生成标准化的键。它的实现可以被看作是一种函数传递形式,每个上下文元素贡献一个内容函数和一个位置函数。函数是通过加和context得到的:
式中content lambda为,position lambda为;是对上下文元素的排列不变性,在所有查询位置n之间共享,并编码如何仅基于上下文内容对进行转换;对比之下,编码如何基于内容和位置(n,m)转换查询内容,从而支持对此类图像进行结构化的建模输入。
2、应用lambda到query将输入转换为查询,得到lambda层的输出为:
3、Lambda interpretation:矩阵的列可以看作是|k| |v|-维上下文特征的固定大小的集合。这些上下文特性是从上下文的内容和结构聚合而来的。应用lambda线性函数动态分布上下文特性,以产生的输出。这个过程用来捕捉密集的内容和基于位置的远距离互动,而不产生Attention Map。
4、Normalization:作者实验表明,在计算查询和值之后应用批处理归一化是有帮助的。
3.2、带有结构化上下文的Lambda Layers
这里不进行详细的描述,粗略的罗列以下步骤:
1、Translation equivariance
基于内容的交互是置换等变的,因此已经是平移等变的。通过确保对任意平移t的位置嵌入满足,得到了位置相互作用中的平移-等价方差。
2、Lambda convolution :
从计算的角度来看,使用全局上下文可能会产生噪声。因此,将位置交互的范围限制到查询位置n周围的一个局部邻域,就像局部自注意力和卷积的情况一样,可能是有用的。在上下文被安排在多维网格上的情况下,可以通过使用常规卷积从局部上下文生成位置lambdas,将V中的v维视为额外的extra spatial dimension。
称这个运算为lambda convolution。由于计算现在被限制在一个局部范围,lambda卷积得到线性的时间和内存复杂度。lambda卷积很容易与其他功能一起使用,如dilation和striding,并在专用硬件加速器上享受高度优化的实现。
3.3、使用Multi-Query Lambda减少复杂性
批量Multi-Query Lambda层使用einsum有效实现为:
这里的复杂度分析不再进行描述,更详细的内容可以看论文原文,接下来直接看其再ResNet50上的效果:
4、实验
4.1、基于ImageNet分类的实验
4.2、基于目标检测和实例分割的实验