选自OpenReview

机器之心编译

机器之心编辑部

Transformer 用在图像识别上会存在计算效率过低的挑战,最近一篇向 ICLR 2021 大会提交的论文似乎很好地解决了这一问题,其研究的 PyTorch 代码也已在 GitHub 上开源。

在自然语言处理领域(NLP)成为重要力量的 Transformer 技术最近已经开始在计算机视觉领域展现自己的实力。不过到目前为止,由于 Transformer 注意力机制对内存的需求是输入图像的二次方,所以这一方向还存在一些挑战。

近日,LambdaNetworks 的出现提供了一种解决此问题的方法,人们可以无需建立昂贵的注意力图即可捕捉长距离交互。这一方法在 ImageNet 上达到了新的业界最佳水平(state-of-the-art)。

论文链接:https://openreview.net/pdf?id=xTJEN-ggl1b

GitHub链接:https://github.com/lucidrains/lambda-networks

对长程交互进行建模在机器学习中至关重要。注意力已成为捕获长程交互的一种常用范式。但是,自注意力二次方式的内存占用已经阻碍了其对长序列或多维输入(例如包含数万个像素的图像)的适用性。例如,将单个多头注意力层应用于一批 256 个64x64 (8 头)输入图像需要32GB的内存,这在实践中是不允许的。

该研究提出了一种名为「lambda」的层,这些层提供了一种捕获输入和一组结构化上下文元素之间长程交互的通用框架。

lambda 层将可用上下文转换为单个线性函数(lambdas)。这些函数直接单独应用于每个输入。研究者认为,lambda 层可以作为注意力机制的自然替代。注意力定义了输入元素和上下文元素之间的相似性核,而 lambda 层将上下文信息汇总为固定大小的线性函数,从而避免了对内存消耗大的注意力图的需求。这种对比如图1所示。

研究者证明了 lambda 层的通用性,展示了它们的实现可以被用来捕获全局、局部或掩模上下文中基于内容和位置的交互。利用lambda生成的神经网络 LambdaNetwork 计算效率很高,能够以很小的内存成本建模长程依赖,因而可用于高分辨率图像等大型结构化输入。

研究者在计算机视觉任务上评估了 LambdaNetwork,在这些任务上,自注意力显示出了希望,但遇到了内存成本高昂和无法实际实现的问题。在 ImageNet 分类、COCO 目标检测和实例分割三方面的对照实验表明,LambdaNetwork 显著优于基于卷积和注意力的同类方法,并且计算效率更高、运行速度更快。

最后,研究者提出了 LambdaResNets,它显著改善了图像分类模型的速度-准确性权衡。具体而言,LambdaResNets 在实现 SOTA ImageNet 准确性的同时,运行速度是 EfficientNets  的4.5 倍左右。

建模长程交互

在论文第二章开头,研究者定义了查询、上下文和交互等概念及各种用到的符号,此处不做赘述。

注意力交互。首先缩小查询深度,创建查询和上下文元素之间的相似性核(注意力图),也就是所谓的注意力操作。该机制可以被看作激发查询、键和数值术语的可微内存的寻址。由于上下文位置 |m| 的数量越来越大,并且输入和输出维数 |k| 和 |v| 保持不变,所以在层输出是较小维数 |v| << |m| 的一个向量时,我们可以假设计算注意力图是不划算的。

相反, 由于 y_n = F((q_n, n), C) = λ(C, n)(q_n) 拟合一些线性函数 λ(C, n),所以通过线性函数将每个查询映射到输出可能更有效率。在这种场景下,上下文聚合到一个固定大小的线性函数 λ_n = λ(C, n)。每个 λ_n作为独立于上下文(计算后)存在的小的线性函数,并在应用于关联查询q_n之后被丢弃。该机制令人联想到与lambda这个术语相关的函数式编程和 λ 演算。

lambda层

lambda层将输入  和上下文  作为输入,生成线性函数lambdas,然后将其应用于查询,从而得到输出 

注意,在自注意力情况下可能有C=X。在不失一般性的前提下,研究者假设d_in=d_c=d_out=d。在论文的其他部分中,研究者将重点放在lambda层的特定实例上,并说明它可以在没有注意力图的情况下,处理密集的长程内容和基于位置的交互。

lambda层:将上下文转换成线性函数

研究者首先在(q_n,n)的上下文中描述lambda层。由于研究者希望生成一个线性函数  或将  矩阵当作函数。

表1给出了lambda层的超参数、参数等量化数值。

1.  生成上下文lambda函数

lambda层首先通过线性投影上下文来计算键和值,通过softmax运算对键进行归一化,从而得到归一化键

这种实现能可以看作是函数消息传递的一种形式,每个上下文元素都贡献一个内容函数 和一个位置函数 。λ_n 是通过将上下文贡献求和得到的,如下所示:

其中还定义了内容lambda λ^c和位置lambda λ^p_n。内容lambda λ^c对于上下文元素的排列组合是固定不变的,在所有的查询位置n上共享,并且对如何转换仅基于上下文内容的查询内容q_n进行编码。相比之下,位置lambda λ^p_n对如何根据内容c_m和位置(n, m)转换查询内容q_n,从而可以对诸如图像之类的结构化输入进行建模。

2.  将lambda应用于查询

将输入x_n转换为查询 ,然后获得lambda层的输出为

3.  lambda解释

矩阵的列可以看作是|k|x|v|维的上下文特征的固定大小集合。这些上下文特征是根据上下文的内容和结构汇总得出的。利用lambda线性函数动态分配这些上下文特征,以产生输出 

此过程可以捕获密集内容和基于位置的长程交互,同时不产生注意力图。

4. 归一化

可修改方程式1和2以涵盖非线性或归一化运算。该研究的实验表明,在计算查询和值之后应用批归一化是很有用的。

带有结构化上下文的 lambda 层

这一部分介绍了如何使 lambda 层适应结构化的上下文,如相关上下文和局部上下文。

1. 平移等变性

在很多学习情景中,平移等变性是一种很强的归纳偏置。基于内容的交互是置换等变的,因此它已经具备平移等变性。对于任意的平移 t,研究者通过确保位置嵌入满足 。在位置交互中得到平移不变性。在实践中,研究者定义了相对位置嵌入  的一个张量。其中,r 表示所有 (n, m) 对的可能相对位置,并将其重新索引到 ,从而使得 

2. Lambda 卷积

尽管长程交互有一定的优点,但在很多任务中,局部性依然是一种强大的归纳偏置。从计算的角度来看,使用全局上下文可能会增加噪声,增加算力消耗。因此,将位置交互的范围限制到查询位置 n 周围的一个局部邻域,就像局部自注意和卷积中那样,可能是一种有用的做法。这可以通过对所需范围之外的上下文位置 m 的位置嵌入进行归零来实现。但是,对于较大的 |m| 值,这种策略依然代价高昂,因为计算仍在进行。

在这种上下文被安排在多维网格上的情况下,可以使用一个将 V 中的第 v 维视为一个额外空间维度的常规卷积来从局部上下文中生成位置 lambda。例如,假设我们想在一维序列上生成局部范围大小为 |r| 的位置 lambdas。相对位置嵌入张量 可以变为 ,然后被用作一个二维卷积的卷积核,计算所需的位置 lambda

研究者将这个运算称为 lambda 卷积。由于现在的计算被限制在局部范围内,lambda 卷积可以得到与输入长度相关的线性时间和内存复杂度。lambda 卷积很容易用于 dilation 和 striding 等其他功能,并且在专用硬件加速器上享有高度优化的实现。这与局部自注意力的实现形成鲜明对比,后者需要物化重叠查询和内存块的特征块,从而增加了内存消耗和延迟(见下表4)。

利用多查询 lambda 降低复杂度

对于多个 |b| 元素,每个都包含 |n| 输入。应用 lambda 层所需算数运算和内存占用的数量分别为 Θ(bnmkv) 和 Θ(bnkv + knm)。由于E_nm 参数捕获了基于位置的交互 ,因此相对于输入长度,研究者拥有的内存占用仍是二次的。但是,这个二次项并不随批大小扩展,这与生成每个示例(per-example)注意力图谱的注意力操作一样。在实践中,超参数 |k| 设为很小的值,如 |k| =16,并且在注意力失效的情况下可以处理大批量的大型输入。

多查询 lambdas 可以降低复杂度。lambdas 将注意力图 q_n ∈ R^k映射到输出 y_n ∈ R^d。如公式2所示,这意味着 |v|=d。所以,|v| 的较小值成为了特征向量 y_n上的瓶颈,但考虑到 Θ(bnmkv) 和 Θ(bnkv + knm) 的时间和空间复杂度,更大的输入维数 |v| 将导致非常高昂的计算成本。

所以,研究者提出将 lambda 层的时间和空间复杂度从输出维数 d 中解耦。他们并没有强制地令 |v|=d,而是创建了 |h| 查询 {q^h _n},将相同的 lambda 函数 λ_n 应用到每个查询 q^h_n,并将输出串连接成 y_n=concat(λ_nq^1_n , · · · ,λ_nq^|h|_n )。

由于每个 lambda 都应用于 |h| 查询,所以研究者将这一操作当做多查询 lambda 层。这也可以理解为将 lambda 约束到具有 |h| 等重复块的更小块矩阵。现在d=|hv|,并且时间和空间复杂度变成了 Θ(bnmkd/h) 和 Θ(bnkd/h + knm)。此外,研究者注意到,这类似于多头或多查询注意力机制,但motivation不同。在注意力操作中使用多个查询增强了表示能力和复杂度。而在本研究中,使用多查询 lambdas 降低了复杂度和表示能力。

下表2比较了多查询 lambda 层和多头注意力操作的时间和空间复杂度:

批量多查询 lambda 层可以使用 einsum 实现高效执行,具体如下

局部位置的 lambdas 可以通过 lambdas 卷积来获得,具体如上文公式3所示。

实验

LambdaNetworks 优于基于卷积和注意力的同类方法

在下表 3 中,研究者进行了控制实验,以比较 LambdaNetworks 与 a)基线 ResNet50、b)通道注意力和 c)以往使用自注意力来补充或替换 ResNet50 中的 3x3 卷积的研究方法。结果显示,在参数成本仅为其他方法一小部分的情况下,lambda 层显著优于这些方法,并且相较于 Squeeze-and-Excitation(通道注意力)实现了 +0.8% 的提升。

在上表 4 中,研究者对比了 lambda 层和自注意力机制,并给出了它们的吞吐量、内存复杂度和 ImageNet 图像识别准确性比较,这一结果展示了注意力机制的不足。相比之下,lambda 层可以捕获高分辨率图像上的全局交互,并可以比局部自注意力机制获得多 1.0% 的提升,同时运行速度几乎是后者的 3 倍。

此外,位置嵌入也可以在 lambda 层之间共享,以最小的降级花费进一步降低了内存使用的需求。最后,lambda 卷积具有线性内存复杂度,这在图像检测和分割任务中遇到非常大的图片时非常有用。

LambdaResNets 明显改善了 ImageNet 分类任务的速度-准确性权衡

下图 2 展示了 LambdaResNets与使用或不使用 channel attention 机制的ResNet 及最流行的 EfficientNets 相比的效果。LambdaResNets 在所有深度和图像尺度上均优于基准水平,最大的 LambdaResNet 实现了 SOTA 水平准确度 84.8。更值得注意的是,LambdaResNets 在准确性一定的情况下比 EfficientNets 要快大概 3.5 倍,速度-准确性曲线提升明显。

计算效率

在下表5和表6中,研究者发现构造 LambdaResNets 来提升大型 EfficientNets 的参数和 flops 效率也是有可能的。

这样的结果表明,lambda层可能非常适合在资源有限的场景中使用,例如嵌入式视觉应用。

目标检测与实例分割

最后,研究人员评估了 LambdaResNets 使用 Mask-RCNN 架构在 COCO 数据集上进行目标检测和实力分割任务的效果。使用 lambda 层会在所有 IoU 阈值和所有对象比例(尤其是难以定位的小对象)上产生一致的增益,这表明 lambda 层容易在需要定位信息的更复杂的视觉任务中实现不错的效果。

© THE END

转载请联系 机器学习 公众号获得授权

投稿或寻求报道:content@jiqizhixin.com

抛弃注意力,比EfficientNet快3.5倍,类Transformer新模型跨界视觉任务实现新SOTA相关推荐

  1. 谷歌出品EfficientNet:比现有卷积网络小84倍,比GPipe快6.1倍

    https://www.toutiao.com/a6697763565677314573/ [新智元导读]谷歌AI研究部门华人科学家再发论文<EfficientNet:重新思考CNN模型缩放&g ...

  2. 苹果让Transformer抛弃注意力机制,一切只为效率,项目已开源丨华人一作

    点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 博雯 发自 凹非寺 量子位 报道 | 公众号 QbitAI 2017 ...

  3. 碾压谷歌量子霸权!中国量子计算原型机 九章 问世,比超级计算机快百万亿倍...

    量子优越性实验并不是一个一蹴而就的工作. " 作者 | 李帅飞 在量子计算领域,我国再次实现了里程碑式的重大突破! 12 月 4 日,中国科学技术大学宣布,该校中国科学技术大学潘建伟.陆朝阳 ...

  4. 高糊视频秒变4K,速度比TecoGAN快了9倍!东南大学提出新的视频超分辨率系统

    博雯 发自 凹非寺 量子位 报道 | 公众号 QbitAI 把高糊视频变清晰,对于AI而言算不上新鲜事. 但如果是实时处理,而且速度比主流方法还快了9倍呢? 而且计算量降低了,重建图像的质量却还非常能 ...

  5. 让Windows XP系统快上几倍的三个绝招

    让Windows XP系统快上几倍的三个绝招 1.减少开机磁盘扫描等待时间,开始→运行,键入chkntfs /t:0 2.删除系统备份文件: 在各种软硬件安装妥当之后,其实XP需要更新文件的时候就很少 ...

  6. 计算机视觉方向博后,直播回顾 | 深圳大学龚元浩:比几何流快一万倍的曲率滤波算法(附博后招聘)...

    在深度学习.图像处理.流形学习等领域日益发展的今天,曲率作为一种数学方法扮演着至关重要的角色.那么对于离散样本如何进行曲率处理?传统优化曲率的几何流算法又存在什么弊端?面对这些问题,如何找到稳定性好, ...

  7. 使Windows XP快上几倍的三招

    使Windows XP快上几倍的三招,设置起来非常简单,但是文章又不乏实用性. 1.减少开机磁盘扫描等待时间,开始→运行,键入:chkntfs /t:0 2.删除系统备份文件: 在各种软硬件安装妥当之 ...

  8. 外媒中国量子计算机,比美国快100亿倍,中国量子计算机赢得霸权!外媒致敬

    据新华社12月4日报道,中国科学技术大学潘建伟.陆朝阳等组成的研究团队与国内合作,构建了76个光子的量子计算原型机"九章",实现了具有实用前景的"高斯玻色取样" ...

  9. 悬铃木超级计算机,陈根:“九章”攻擂“悬铃木”,快一百亿倍的量子霸权

    文/陈根 2019年,谷歌率先宣布实现"量子霸权"(量子优越性),一把把量子计算推入公众视野,激起量子计算领域的千层浪.就在近日,中国团队宣布量子计算机"九章" ...

最新文章

  1. 无准备,不编程——计算机达人成长之路(15)连载
  2. [NOIP2016] 组合数问题
  3. spring boot 系列之四:spring boot 整合JPA
  4. yolo算法_吴恩达深度学习笔记(100)-目标检测之YOLO 算法讲解
  5. java并发面试题(一)基础
  6. 3000米排名预测(全排列+判断)
  7. ansible备份mysql_ansible做mysql备份和安全加固
  8. Linux一定需要文件系统吗?
  9. 快手与2020央视春晚达成独家互动合作:大年三十发红包
  10. 在anaconda中为jupyter安装扩展插件
  11. 十万个为什么之为什么大家都说dubbo
  12. 解决PHP不打印任何东西浏览器输出字符串
  13. ASCII码对照表(二进制、十进制、十六进制)
  14. 2022年【CSDN毎周小结】
  15. 【李宏毅机器学习学习1】
  16. 电脑鼠标箭头一直转圈的解决办法
  17. 盘点买房贷款的八大注意事项
  18. 织梦data搬家后后台打开空白的解决方法
  19. 用计算机来画出整个方格图,怎么画小学数学中的方格图
  20. 使用Microsoft Azure 门户 创建win 2012虚拟机

热门文章

  1. 【转】C语言的memset函数
  2. 【青少年编程】【一级】森林的一天
  3. LeetCode实战:二叉树中的最大路径和
  4. 技术图文:进一步完善自动化交易系统 - 01
  5. 了解机器学习的八大专业术语
  6. 20 个 Pandas 数据实战案例,干货多多
  7. 用 Python 制作酷炫的可视化大屏,特简单!
  8. 中关村开源创新大赛-达闼赛道如火如荼进行中
  9. AI进军服装零售产业:微软小冰与特步推出定制化服装设计生产及零售平台
  10. 2020 AI产业图谱启动,勾勒中国AI技术与行业生态