作者 | 琰琰、陈大鑫
编辑 | 刘冰一
5月4日,谷歌团队在arXiv上提交了一篇论文《MLP-Mixer: An all-MLP Architecture for Vision》,引起了广大计算机视觉的研究人员的热烈讨论。
昨日AI科技评论也对这篇论文进行了报道:谷歌最新提出无需卷积、注意力 ,纯MLP构成的视觉架构!网友:MLP is All You Need ?
MLP(多层感知机)真的有那么“丝滑”吗,它究竟有多大的潜力?
MLP->CNN->Transformer->MLP 的圈难道要成真?
一石激起千层浪,AI科技评论发现就在5月5日,清华大学图形学实验室Jittor团队在arXiv上也提交了一篇和MLP相关的论文《Beyond Self-attention: External Attention using Two Linear Layers for Visual Tasks》。
这篇论文提出了一种新的注意力机制,称之为External Attention——基于两个外部的、小的、可学习的和共享的存储器,只用两个级联的线性层和归一化层就可以取代了现有流行的学习架构中的“Self-attention”,进一步揭示了线性层和注意力机制之间的关系。
同日,清华大学软件学院丁贵广团队在arXiv上也提交了论文《RepMLP: Re-parameterizing Convolutions into Fully-connected Layers for Image Recognition》,这篇论文展示了结合重参数化技术的MLP也能取得非常不错视觉的效果。
而就在昨天(5月6日),AI科技评论发现,牛津大学的学者提交了一篇名为《Do You Even Need Attention? A Stack of Feed-Forward Layers Does Surprisingly Well on ImageNet》的论文,也提出了Transformer中的attention是不必要的,仅仅使用Feed forward就可以在ImageNet上实现非常高的结果。
以上三篇论文加上谷歌的MLP-Mixer论文,这四篇论文或许真的正在拉开计算机视觉研究的一个新的一角,以下我们就分别来看看这三篇新论文都具体讲了什么。
1 External Attention——清华大学Jittor团队
论文链接:https://arxiv.org/abs/2105.02358
本文提出了一种新的注意机制,称之为“External Attention”,基于两个外部的、小的、可学习的和共享的存储器,只用两个级联的线性层和归一化层就可以取代了现有流行的学习架构中的“Self-attention”,进一步揭示了线性层和注意力机制之间的关系。
从Self-attention到External-attention
自注意力机制在自然语言处理和计算机视觉领域中起到了越来越重要的作用。对于输入的Nxd维空间的特征向量F,自注意力机制使用基于自身线性变换的Query,Key和Value特征去计算自身样本内的注意力,并据此更新特征:
由于QKV是F的线性变换,简单起见,可以将自注意力计算公式简记如下:
这是 F 对 F 的注意力,也就是所谓的 Self-attention。如果希望注意力机制可以考虑到来自其他样本的影响,那么就需要一个所有样本共享的特征。为此,我们引入一个外部的Sxd维空间的记忆单元M,来刻画所有样本最本质的特征,并用M来表示输入特征。
本文称这种新的注意力机制为External-attention。我们可以发现,上面公式中的计算主要是矩阵乘法,就是常见的线性变换,一个自注意力机制就这样被两层线性层和归一化层代替了。
本文还使用了之前工作中提出的Norm方式来避免某一个特征向量的过大而引起的注意力失效问题。
为了增强External-attention的表达能力,与自注意力机制类似,本文采用两个不同的记忆单元。
下图形象地展示了External-attention与Self-attention的区别。
自注意力机制一个明显的缺陷在于计算量非常大,存在一定的计算冗余。通过控制记忆单元的大小,External-attention可以轻松实现线性的复杂度。
其次,自注意力机制仅利用了自身样本内的信息,忽略了不同样本之间的潜在的联系,而这种联系在计算机视觉中是有意义的。打个比方,对于语义分割任务,不同样本中的相同类别的物体应该具有相似的特征。
External-attention通过引入两个外部记忆单元,隐式地学习了整个数据集的特征。这种思想同样在稀疏编码和字典学习中得到了应用。
计图团队在Pascal VOC 的Test set上,可视化了注意力图以及分割的结果,如图2所示,可以发现,使用两层线性层的External attention 的注意力图是合理的。
图2 注意力图以及分割的结果的可视化
为了证明方法的通用性,研究人员在图像分类、分割、生成以及点云的分类和分割上均做了实验,证明了方法的有效性,External-attention在大大减少计算量的同时,可以取得与目前最先进方法相当,甚至更好的结果。以下是实验结果:
1、图像分类
2、图像语义分割(分别在三个数据集上)
3、图像生成
4、点云分类
5、点云分割
2 RepMLP——清华大学丁贵广团队
论文链接:https://arxiv.org/abs/2105.01883
代码和模型开源链接:https://github.com/DingXiaoH/RepMLP
本文的工作主要将MLP作为卷积网络的一种通用组件实现多种任务性能提升(例如,将ResNet50中的3x3卷积替换成只有一半通道数量的RepMLP,可以实现同等精度下超过一半速度提升),不追求抛弃卷积的纯MLP(本文只试验了CIFAR上的纯MLP,只取得了接近卷积网络的效果);恰恰相反,本文利用了卷积去强化FC,使其具备局部性,因而更适用于视觉任务。
本文的方法可以在ImageNet、语义分割、人脸识别等数据集和相应任务上实现涨点,这些任务输入分辨率各不相同,有的具有平移不变性而有的不具备(本文认为FC和卷积主要的区别就在于是否平移不变);而谷歌的论文只做了几个固定分辨率输入的图像分类实验。
具体方法
本文提出了一种多层感知机(MLP)模式的图像识别神经网络构造块RepMLP,它由一系列全连接层(FC)组成。
图注:RepMLP的架构图
与卷积层相比,FC层效率更高,更适合于建模长程(long-range)依赖关系和位置模式,但不适合捕获局部结构,因此通常不太适合用于图像识别。而本文提出了一种结构重新参数化技术,可以将局部先验加入到全连接层(FC)中,使其具有强大的图像识别能力。
具体来说,在训练过程中先在RepMLP中构造卷积层,并将它们合并到FC中进行推理。在CIFAR数据集上,一个简单的纯MLP模型的性能非常接近CNN。通过在传统CNN中插入RepMLP,本文在ImageNet上将ResNets提高了1.8%的准确率,在人脸识别任务上提高了2.9%的准确率,在 Cityscapes with lower FLOPs 上提高了2.3%的mIoU。
本文的发现强调,将FC的全局表征能力和位置感知与卷积的局部先验相结合,可以更快地提高神经网络在具有平移不变性的两个任务上的性能(例如语义分割)以及具有对齐图像和位置模式的图像(例如人脸识别)。
实验
首先在CIFAR-10上通过一个纯MLP来验证RepMLP的有效性,其测试结构如下:
图注:纯MLP模型和卷积部分
先利用RepMLP和FC(1 × 1 conv)构造三个阶段,并通过最大池化进行下采样,然后将RepMLP替换为 3 × 3 conv以构造ConvNet。经过100 epochs的训练之后,结果如下表所示:
可以看出纯MLP模型能够以52.8 FLOPs达到91.11%的精度,相比于Wide ConvNet 91.99%的精度差的不多。
之后以ResNet-50为基础架构,评估了RepMLP作为传统ConvNet构建模型的性能表现。
下表2显示,如果仅对c4中的参数进行更改,当r=8时,RepMLP-Res50具有比ResNet50更少的参数量、更快的推理速度 (快10%);
前两行的结果表明,当前深度学习框架对于groupwise 1 × 1 conv支持程度并不够好,参数量提升59%,但推理速度仅下降了0.7%;更进一步优化groupwise 1 × 1 conv有可能使得RepMLP更高效。
下表3显示,采用RepMLP模块替换ResNet中的模块会导致轻微的减速,但精度会显著提高。比如,仅仅采用RepMLP替换c4即可带来0.94%精度提升,参数量仅增加5M;而c3 c4的替换可以取得最佳的均衡。
以下是与更高输入分辨率的大型Convnet相对比的实验,RepMLP进一步证明了其优越性。
从上表可以看出:
1、与参数量相同的ConNet相比,RepMLP-Res50的计算量更低,速度更快。
2、增加RepMLPs参数量会导致模型轻微的减速。
3、与Nonlocal和GC相比,RepMLP-Res50的推理速度几乎相同,但准确率高出1%左右。
4、 与在GPU上运行效率并不高的EfficientNets相比,RepMLP-Res50在速度和精度上的表现更优。
以下是在MegaFace人脸数据集上的评估结果:
上表显示,相比于MobileFaceNet,FaceResNet表现出了更高的精确度,但运行速度较慢,而RepMLP FaceRes在精确度和速度上都优于MobileFaceNet。与MobileFaceNet相比,RepMLP FaceRes准确率提高了4.91%,运行速度加快了8%。
最后在 Cityscapes 数据集上测试模型的语义分割性能。
结果显示,带有RepMLP-Res50-g4/8的PSPNet在mIoU中的性能比Res-50 backbone高出2.21%。虽然参数较多,但推理速度变得更快。值得注意的是,PSPNet的baseline低于PSPNet-50,因为后者是为语义分割定制的(在最大池化之前增加了两层),但本文不是如此。
3 Feed forward代替Attention ——牛津学者
论文链接:https://arxiv.org/pdf/2105.02723.pdf
视觉transformers在图像分类和其他视觉任务中的强大性能通常归因于其多头(multi-head)注意力机制。在以往的研究中,视觉transformer架构通常由多头注意层和一个沿特征维度应用的前馈层(即线性层或单层MLP)组成。其中注意力层的设计为模型提供了一个全局感受野。它可视为数据相关的线性层,当应用于图像块时,它类似于(并不完全等同于)卷积的作用。
这种体系结构的通用性,加上它在图像分类基准上的强大性能,引起了视觉社区的极大兴趣。不过,有关注意力机制在多大程度上影响了视觉transformer的性能表现,目前还尚不清楚。
但是,注意力网络层一定是必要的吗?
基于这个问题,牛津大学研究团队开展了这项研究。
他们将视觉transformers中的注意力层替换为应用于path维度的前馈层,在ImageNet上的实验中,这种体系架构表现如下:ViT/DeiT-base-sized模型获得74.9%的top-1准确率,相比之下,ViT和DeiT获得了77.9%和79.9%的准确率。这些结果表明,除了注意力之外,视觉transformers的其他因素,如patch嵌入,可能比想象中的更能反映其强大的性能。
具体来说,研究人员从 ViT 中移除了注意力层,并采用patch维度的前馈层取而代之。在这一变化之后,模型的体系结构基本为一系列以交互方式应用于patch和特征维度的前馈层,如下图:
该架构由一个patch嵌入和一系列前馈层组成。这些前馈层交替地应用于图像标记的patch和特征维度。需要注意的是,该体系结构与ViT的体系结构相同,在特征维度上与标准前馈网络结构相同,即将patch维度投影到高维空间,应用非线性,然后投影回原始空间。
下图给出了两层前馈层的transformers的单个块的PyTorch代码。
可以注意到,像vision transformer及其他变体一样,这种仅前馈的网络与卷积网络非常相似。事实上,在patch维度上的前馈层可以被看作是一种不寻常的卷积类型,它具有完全的感受野和单个通道。由于特征维度上的前馈层可视为1x1卷积,因此从技术上说,整个网络可以看做是一种“伪装”的卷积网络。也就是说,它在结构上更类似于transformer,而不是传统设计的卷积网络(例如ResNet/VGG)。
下图为前馈网络在ImageNet数据集上的实验结果。可以看到,仅前馈版本的ViT/Deit base sized达到了74.9%的top-1精度,其性能表现能够与传统的卷积网络(例如VGG 16、ResNet-34)相媲美。另外,大型模型的性能在有注意力和无注意力的情况下都有所下降,其top-1的准确率分别为71.2%和71.4%。
这些结果表明,即使没有使用注意力机制,模型也可以获得相当强的性能。因此,vision transformer的强大性能不太可能归因于注意力机制,而更多地归因于其他因素,如 patch 嵌入和通过训练增强所产生的 inducive bias(诱导性偏差)等。
AI科技评论在之前的一篇报道中也曾提到过类似的观点:
“新论文石锤Transformer:别只看注意力,没有残差和MLP,它啥都不是”
论文地址:https://arxiv.org/pdf/2103.03404v1.pdf
而就在今天,图灵奖得主LeCun也在推特上针对谷歌的MLP-Mixer论文简单的发声了,LeCun表示这篇论文并不是完全的没有卷积网络,其中:
第一层: "Per-patch fully-connected" == "conv layer with 16x16 kernels and 16x16 stride"
其他层: "MLP-Mixer" == "conv layer with 1x1 kernels"
所以说,MLP is All You Need 不一定为真,但是 Attention is not All You Need 却是真的很!
那到底有什么是真的呢?
或许只有下面这个吧:
参考链接:
https://mp.weixin.qq.com/s/L75TsIkB0h_GxQ6fDiVKOQ