1 简介
本文提出新的层:Lambda Layers,一种自注意力的替代方法,主要用于捕获输入和Content结构化的信息(例如一个像素被其他像素包围)之间的远程交互。Lambda Layer通过将Content转换成称为Lambda的线性函数,并将这些线性函数分别应用于每个输入以捕获此类交互。
与线性注意类似,Lambda层绕过了复杂的注意力图,但是相反,它们对内容和基于位置的交互都进行了建模,这使它们可以应用于大型结构化输入(例如图像)。由此产生的神经网络体系结构LambdaNetworks在ImageNet分类,COCO目标检测和COCO实例分割方面明显优于其卷积和注意力,同时具有更高的计算效率。
此外,作者还设计了LambdaResNets,是一个跨尺度的混合体系结构,可显著改善图像分类模型的速度-准确性权衡。LambdaResNets在ImageNet上具有出色的准确性,而其速度是流行的EfficientNets的3.2-4.4倍。在使用额外的130M伪标签图像进行训练时,LambdaResNets在相应的EfficientNet精度上可实现高达9.5倍的加速。
Lambda Layer主要贡献:
- 1、提出了Content-Based和Position-Based的交互建模的Lambda层,而且很容易通过einsum操作和卷积核实现高效的操作;
- 2、Lambda层提供了通Channel、Spatial和Linear Attention的统一视图;
- 3、在ImageNet分类任务上Lambda层显著优于卷积和Attention,同时计算效率更高;
- 4、Lambda层延迟低同时对于内存的需求也比较小;
- 5、提出混合模型方法作为最大限度地权衡Lambdanworks速度-精度的方法;
- 6、通过结合Lambda Layer设计了LambdaResNets,并且达到SOTA水平;
- 7、在半监督学习中,使用额外的1.3亿个伪标签图像进行训练,实现了9.5倍的加速;
- 8、使用Mask-RCNN对LambdaResNets进行COCO对象检测和实例分割的评估。LambdaResNet在2个任务的均有所提升。
2 解决的问题
- 1、模型精度的提升长期依赖于数据集;
- 2、Self-Attention虽然一定程度上解决了问题1,但是其巨大的内存需求阻碍了其在长序列和多维数据上的应用。
本文提出Lambda层主要是解决上诉2个问题,它以降低内存成本的方式对查询和同一组结构化Content元素之间的远程交互进行建模。Lambda层将每个Content转换为一个线性函数,称为Lambda函数,然后直接应用于相应的查询。Self-Attention定义了查询和Content元素之间的相似Kernel,而Lambda层则将Content信息总结为一个固定大小的线性函数(即矩阵),从而绕过了对内存密集型注意映射的需求。
下图中说明了差异:
Global Content中包含3个查询块及其Local Content的示例
Self-Attention将每个查询块与其Content的Attention分布联系起来
Lambda层将每个Content转换为相应查询块的线性函数Lambda函数
本文所提的Lambda层是通用的,可以实现为全局、局部或Mask Content中Content-Based和Position-Based的交互建模。由此设计产生的神经网络(LambdaNetworks)计算效率高,以很小的内存成本模拟了长期依赖关系,因此可以应用于高分辨率图像等大型结构化输入。
3 远程交互建模
3.1 定义说明
符号
表示一个集合的基数,该集合的元素用作索引;表示的第行,表示的第行、第列元素。在可能的情况下,采用self-attention来提高可读性,并突出差异。
Query和Context
这里使用向量来表示Query,使用结构化集合来表示Context;其中每个query 以为Context 和对应位置为特征;类似地,每个Context元素以其Context 和在Context的位置为特征。对可以指结构化元素之间的任何成对关系,例如图中像素之间的相对距离或节点之间边的相对距离。
interactions
这里使用映射函数和给定的Context C 将query 映射输出向量。当处理结构化输入时,此函数可作为神经网络中的一层。参考Context-Based的交互和 Position-Based的交互注意到,虽然绝对位置信息有时直接添加到query(或context元素)content,但作者认为这种类型的交互是Position-Based,因为它忽略了关系查询和Context元素之间的位置。
3.2 引入Keys来捕捉long-range interactions
在深度学习的背景下,优先考虑Fast batched linear操作和使用dot-product操作作为交互。这促使引入向量,这些向量可以通过dot-product操作与query交互,因此具有与query相同的维数。
特别是,Content-Based交互需要依赖于的维向量,通常称为关键。相反,Position-Based交互需要一个相对位置嵌入。由于 query/key 深度和context空间维度不在输出中,所以这些维度需要压缩作为层计算的一部分。
因此,每个捕获远程交互的层都可以根据它是先缩小query深度还是先缩小context位置来描述。
3.3 Attentional interactions
收缩查询深度首先在query元素和Context元素之间创建一个相似核(Attention Map),称为Attention操作。由于Context位置的数量越来越大,而输入和输出维度和保持不变,假设层输出是一个相对小维度的向量,则可以假设计算Attention Map是没必要的。
3.5 Lambda interactions
与Attentional interactions相反,对于一些线性函数来说,简单地将每个query映射为或许是更有效的。在这种情况下,Context被聚合成一个固定大小的线性函数。每个作为一个小的线性函数,独立于Context存在,并在应用到其关联的query 后被丢弃。