【超越EfficientNets】LambdaNet让网络无需注意力也能更快更高更强(附paper下载)

点击上方【AI人工智能初学者】,选择【星标】公众号,期待您个人相遇与进步

本文提出新层:Lambda Layers!由其衍生出的LambdaResNets,极大地改善了图像分类模型的速度与准确性权衡。在ImageNet上表现SOTA,同时比EfficientNets快约4.5倍!并在检测和分割任务中性能提高明显,代码刚刚开源!node

一、简介

建模长期的交互做用是机器学习重心所在。注意力机制已经成为捕获远程交互做用的选择范例。然而,自注意力机制的二次内存占用妨碍了它对长序列或多维输入的适用性,好比一般包含数万像素的图像。同时对于不只仅图像的分辨率,图像的head个数也会带来很大的显存消耗。
基于上述局限,本文提出了termed lambda layers即Lambada Layer,它为捕获模型输入和上下文信息的结构化集合之间的长期交互提供了一个通用框架。它经过将可用上下文转换为线性函数(称为lambda)并将这些线性函数分别应用于每一个输入来捕获此类交互。这里使用Lambda层做为注意力机制的替代品。注意力机制在输入和上下文元素之间定义了一个类似核,而Lambda层则是将上下文信息总结为一个固定大小的线性函数,从而绕过了须要大量记忆的注意映射。对好比下:
Lambda层用途普遍,能够实现为在全局,局部或masked contexts中对内容和基于位置的交互进行建模。因为它们避开了对昂贵的注意力图的需求,所以能够将lambda层常规地应用于成千上万个长度的输入,从而使它们能够应用于长序列或高分辨率图像。由此产生的神经网络体系结构LambdaNetworks具备高效的计算能力,而且能够经过直接调用现代神经网络库中可用的操做来轻松实现。web

二、Modeling Long-Range InterActions

2.一、queries、contexts和interactions的定义

这里分别用 表示queries和contexts,其中每个query 特征都包含着 和position n,同理,每个context元素都包含 和位置m,而(n,m)能够指结构化元素之间的任意类型的成对关系。
考虑在给定上下文C和函数 的状况下将query映射到输出向量 。当处理结构化输入时,这样一个函数能够做为神经网络中的Layer。这里把 定义基于内容交互; 定义为基于位置的互动。此外,当输出只有一个限制较小的上下文在n附近被考虑时, 依赖于全部 交互。最后,若是这些交互包含上下文中的全部元素(m个),则将其定义为稠密交互(dense interaction),不然定义为稀疏交互(sparse interaction)。
编程

2.二、引入Keys来捕获Long-range interactions

在深度学习的背景下,对快速成批线性操做进行优先排序,并经过dot-product操做捕获交互。这促使引入能够经过点积操做与query交互的向量,从而与查询具备相同的维数。特别是基于内容的交互 须要依赖 的k维向量,一般称为关键
相反,基于位置的交互做用 须要位置嵌入 也称为相对键。因为query/key深度k和上下文空间维度m不在输出 中,所以须要将这些维度收缩为Layer计算的一部分。所以,捕获远程交互的每一层均可以根据它是收缩查询深度仍是首先收缩上下文位置来表征。微信

2.三、Attentional interactions

收缩查询深度首先在查询和上下文元素之间建立一个类似性内核(注意映射),称为Attention操做。能够将此机制看做是对激发query,key,value-terminology的可区份内存的寻址。随着上下文位置m的数量不断增长,而输入和输出维数k和v保持不变,考虑到层输出是一个维数相对较小的向量v<<m,能够看出Attention Map存在计算的浪费。网络

2.四、Lambda interactions

相反,经过一个线性函数表示某个线性函数;在这个场景中,上下文被聚合为一个固定大小的线性函数。每一个虚拟元数据做为一个小的线性函数,独立于上下文存在(一旦计算出来),并在应用到与其相关的查询 后被丢弃。这种机制让人联想到激发lambda术语的函数编程和微积分。相反,经过线性函数将每一个查询映射到它的输出可能更高效。在这个场景中,上下文被聚合为一个固定大小的线性函数 。每一个虚拟元数据 做为一个小的线性函数,独立于上下文存在,并在应用到其关联的查询 后被丢弃。app

三、Lambda Layers

这里记输入为 和context为 做为input并生成一个lambda线性函数,并将其应用到query和产生Y中。注意:这里 框架

3.一、Lambda Layer:将上下文转换为线性函数

一、生成Contextual Lambda Function:lambda层首先经过线性映射上下文来计算键和值,而且经过softmax操做跨上下文位置对键进行标准化,进而获得生成标准化的键 。它的实现能够被看做是一种函数传递形式,每一个上下文元素贡献一个内容函数 和一个位置函数 函数是经过加和context获得的:式中content lambda为 ,position lambda为 是对上下文元素的排列不变性,在全部查询位置n之间共享,并编码如何仅基于上下文内容对 进行转换;对比之下, 编码如何基于内容 和位置(n,m)转换查询内容 ,从而支持对此类图像进行结构化的建模输入。机器学习

二、应用lambda到query将输入 转换为查询 ,获得lambda层的输出为:编辑器

三、Lambda interpretation: 矩阵的列能够看做是|k| |v|-维上下文特征的固定大小的集合。这些上下文特性是从上下文的内容和结构聚合而来的。应用lambda线性函数动态分布上下文特性,以产生 的输出。这个过程用来捕捉密集的内容和基于位置的远距离互动,而不产生Attention Map。svg

四、Normalization:做者实验代表,在计算查询和值以后应用批处理归一化是有帮助的。

3.二、带有结构化上下文的Lambda Layers

这里不进行详细的描述,粗略的罗列如下步骤:

一、Translation equivariance

基于内容的交互是置换等变的,所以已是平移等变的。经过确保对任意平移t的位置嵌入知足 ,获得了位置相互做用中的平移-等价方差。

二、Lambda convolution :

从计算的角度来看,使用全局上下文可能会产生噪声。所以,将位置交互的范围限制到查询位置n周围的一个局部邻域,就像局部自注意力和卷积的状况同样,多是有用的。在上下文被安排在多维网格上的状况下,能够经过使用常规卷积从局部上下文生成位置lambdas,将V中的v维视为额外的extra spatial dimension。称这个运算为lambda convolution。因为计算如今被限制在一个局部范围,lambda卷积获得线性的时间和内存复杂度。lambda卷积很容易与其余功能一块儿使用,如dilation和striding,并在专用硬件加速器上享受高度优化的实现。

3.三、使用Multi-Query Lambda减小复杂性

批量Multi-Query Lambda层使用einsum有效实现为:

这里的复杂度分析再也不进行描述,更详细的内容能够看论文原文,接下来直接看其再ResNet50上的效果:

四、实验

4.一、基于ImageNet分类的实验

4.二、基于目标检测和实例分割的实验

因为笔者能力有限,其中有理解错误的地方还请担待,若是想了解更多详细信息,能够参考论文原文。
论文的获取方式为:扫描下方二维码回复【lambdanet】便可获取

解读视频:https://www.youtube.com/watch?v=3qxJ2WD8p4w

参考:[1].LAMBDANETWORKS: MODELING LONG-RANGE INTERACTIONS WITHOUT ATTENTION

声明:转载请说明出处

扫描下方二维码关注【AI人工智能初学者】公众号,获取更多实践项目源码和论文解读,很是期待你个人相遇,让咱们以梦为马,砥砺前行!!!

点“在看”给我一朵小黄花呗

本文分享自微信公众号 - AI人工智能初学者(ChaucerG)。
若有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一块儿分享。

相关文章
相关标签/搜索