如何评价Google提出的MLP-Mixer:只需要MLP就可以在ImageNet上达到SOTA?

链接:https://www.zhihu.com/question/457926000

编辑:深度学习与计算机视觉

声明:仅做学术分享,侵删

近日,Google团队发布了最新论文:

MLP-Mixer: An all-MLP Architecture for :Visionhttps://arxiv.org/pdf/2105.01601.pdf

Convolutional Neural Networks (CNNs) are the go-to model for computer vision. Recently, attention-based networks, such as the Vision Transformer, have also become popular. In this paper we show that while convolutions and attention are both sufficient for good performance, neither of them are necessary. We present MLP-Mixer, an architecture based exclusively on multi-layer perceptrons (MLPs). MLP-Mixer contains two types of layers: one with MLPs applied independently to image patches (i.e. “mixing” the per-location features), and one with MLPs applied across patches (i.e. “mixing” spatial information). When trained on large datasets, or with modern regularization schemes, MLP-Mixer attains competitive scores on image classification benchmarks, with pre-training and inference cost comparable to state-of-the-art models. We hope that these results spark further research beyond the realms of well established CNNs and Transformers.

MLP-Mixer模型只包含MLP结构,没有任何convolutions和attention,但是在ImageNet上性能却可以达到和CNN及ViT类似的性能:

你怎么看?

作者:国孟昊
https://www.zhihu.com/question/457926000/answer/1871097669

很早之前就和一些朋友交流过用 Linear Layer 代替 self-attention 的想法。这里想说一下我对线性层和自注意力机制以及 Transformer 的理解,希望能有所启发。我个人认为线性层是可以写成一种注意力机制的。

首先我们考虑对于一个输入特征 $F \in N \times d$ , 自注意力可以写成下面的这种形式。

Self-attention

其中 QK 是 F 经过一个线性变换得到的结果。为了表达简单,我们把 self-attention 可以简记为下面公式(3) 和 公式(4) 所示,

简记的 self-attention

对于(3)(4)中这种简记的注意力机制,我们可以认为这是 F 对 F 的注意力,也就是 self-attention。可以想一下,如果有一个矩阵 $M \in S \times d$,M  是随机初始化的。我们可以把上面那个形式,记成一种 F 对 M 的注意力,即如下公式(5)(6)所示。

F对M的attention

用形象的图来表示就是下面所示的三种形式。

上面提及的三种注意力机制的图示

可以发现,公式(5)(6) 中的 $FM^{T}$ 是什么呢 ?是矩阵乘法,也就是是我们常用的线性层 (Linear Layer)。这就是解释了为什么说线性可以写成是一种注意力机制。写成代码就是下面这几行, 就是在线性层。

再说说和题中这篇文章的联系

到这里,我们已经把 attention 写成了 Attention = Linear(Norm(Linear(F))) 的形式,不妨把该式子记为 Attention=G(F) 。考虑多层 attention 的堆叠,也就是现在常用的 Transformer。那么就是 Transformer = G(G’.....G(x)) 。是不是就有 Google 这篇文章的味道了呢 ?不同的地方在于 MLP-Mixer 使用 patch 维度的 Linear Layer 进行全局 patch 的交互,我们使用 softmax norm 进行全局的交互。

再补充一下吧,关于这篇工作的一些可能的 feature work。

我个人非常喜欢这种简单的形式,后面做什么呢 ?

  1. 做成  transformer,这个前面也有提到,能不能做成通过 Linear 做变化,通过 norm 做交互的形式 ?

  2. 第二个,由于写成了这种简单的形式,不妨仔思考一下,Linear 是否真的有用 ?我顺着这个去思考很可能能做成一种全局的 normalization,一种可以弥补 conv 只具有局部性的不足的 norm。以及这种 norm 何时用 ?用在哪 ?

同时我们也在 Pascal VOC test set 上可视化了通过这种方式得到的 attention map 如下图所示,

具体的细节可以看我们的 paper https://arxiv.org/abs/2105.02358 :  ,我们在图像分类、分割、生成以及点云的分类分割上也做了实验,最近也补充了 coco 上的实验,可以比 baseline 高一个 mAP 左右。当然做不起 Google 这种量级的实验。

作者:TniL
https://www.zhihu.com/question/457926000/answer/1870019880

个人感觉能观察到两个趋势,不敢说是好还是坏:

1、以前的工作都努力在通用模型里加归纳偏置,用来减少参数优化需要的资源(数据、计算资源);近期的(一批)工作在反其道行之,逐渐去先验化,让这部分bias通过大量数据学习出来。

2、以前的模型都讲究兼容变长数据,CNN、RNN、Xformer都有处理变长数据的能力,这使得它们非常通用,现在的一些模型(包括问题讨论的这篇)都assume输入的大小是固定的,直观上看不能算太通用的框架(所以不敢苟同MLP is all you need这种观点)。

作者:谢凌曦
https://www.zhihu.com/question/457926000/answer/1871038506

从工程的角度说,这是一次不错的探索,验证了MLP结构的有效性,同时也提出了一些配套的实现技巧。但是要说这是未来的发展方向,甚至上升到all you need的高度,我持相当强的保留态度。

还记得几个月前讨论Transformer是否能替代CNN的时候,我在回答里说:

如何看待Transformer在CV上的应用前景,未来有可能替代CNN吗?https://www.zhihu.com/question/437495132/answer/1668585924

这波Transformer在CV应用上的大爆发,与其说证明了Transformer有多强,不如说证明了CNN有多弱。
这波Transformer的爆发,尤其是ViT和DeiT这种纯Transformer模型,毫不留情地揭下了CNN的遮羞布,把invariance方面的不足清楚地展现给所有人看。

在评论里,不少人对“遮羞布”这种说法表示质疑。然而几个月过去,虽然业界刷出了一大波Transformer的paper,我的观点并未发生变化。这次All-MLP能在ImageNet上达到不错的精度,似乎也再次验证了这种观点:卷积这种手工设计的学习模式,在当前的视觉任务上,相比于attention甚至MLP,已经看不出太大优势了。

然而问题真的在卷积本身吗?我认为不是。

从更大的发展角度看,计算机视觉的主要基石是模型数据。上面讨论的,都是模型这个分支,而数据在其中发挥的作用,还没有被充分重视。这里我强调的不仅是数据量(JFT这个东西,大家好像都懒得吐槽了),更是任务上的问题。当前所有的视觉任务(包括分类、检测、分割),都在逐渐接近瓶颈,其中目标越简单、bias越大的任务(比如分类),瓶颈出现的时间就越早。瓶颈出现之后,自然就没法继续靠刷点来写paper,只能另辟蹊径,比如尝试用以往已经放弃的MLP,来证实“啊,原来这样做也能work”。

OK,这样做也能work,但是so what?不要忘记了,其实CNN就是在全连接的基础上,利用局部性假设来减少一些分支,然后共享一部分参数。现在用MLP来替代CNN,至少从局部性假设看,我不认为这种替代是正确的。All-MLP在分类上的成功,只能说明分类这个任务,在任务层面上被过拟合了。当然,未来可能会有更多的任务,都达到这个“任务层面过拟合”的状态——但是CV的本质问题解决了吗?并没有。

然而现实是,大家也不知道如何推进“CV的本质问题”,所以搞些怪力乱神的事情,也挺欢乐的。

如果All-MLP真的孵出了一堆paper,我不觉得这是什么好事:这意味着CV研究出现了比想象中更大的瓶颈——瓶颈期越长,这样的paper就会越有影响力。

(再次强调,没有贬低这个研究的意思,只是不希望这样的研究成为主流)

最后,期待被打脸——打脸也是research的必要一环。

作者:知乎用户
https://www.zhihu.com/question/457926000/answer/1872140570

我猜 Google 肯定是上了两个独家的神器:TPU集群的算力、3亿张图片的JFT。大力出奇迹。扫了一眼论文,果然我猜的没错。大家看看就好,你们谁也reproduce不出来。

稍微想一下,这个结果并不surprise。Conv2D 的编程实现是 (i) 切割patch, (ii) patch 拉伸成向量,(iii) 把全连接层用到向量上。Conv2D 其实就是patch level的全连接层。他们用的全连接层看起来就是 Conv2D 的远房亲戚。

作者:mileistone
https://www.zhihu.com/question/457926000/answer/1872010008

2020年11月6号的时候,我在《关于Vision Transformer的一些思考》中写道:

如果后面有研究者想在尽量减少inductive bias的路上一路狂奔,也许可以直接用全连接层替换self-attention。然后我们绕了个大圈又回到了几十年前的MLP:CNN和RNN的提出本来是将领域的知识作为inductive bias,融入到MLP之中,以加速深度学习在CV和NLP等特定领域的落地,我们现在数据量大了,计算资源强了,钱包鼓了,桌子一掀——要什么领域知识,让机器自己学去。

没想到到2021年5月份真的有人这么干了。

缘起

在图像分辨率较大的情况下,我们没法直接上MLP,因为计算量太大,参数量也太大。前者使得计算效率过低,后者会召来过拟合这个梦魇。针对这两个问题研究者们八仙过海,各显神通。

Conv

有研究者根据图像的局部相关性和空间平稳性提出了conv,其实就是把图像分成多个patch,对每个patch上全连接,而且不同patch之间参数共享,这样缓解计算量和参数量太大两个问题。

MLP-Mixer

而MLP-Mixer这篇文章面对MLP计算量太大,参数量太大两大问题,换了一个解决思路。

这个解决思路跟depthwise separable conv是一致的,depthwise separable conv把经典的conv分解为两步,depthwise conv和pointwise conv,这样就降低了经典conv的计算量和参数量。

而如果直接把depthwise separable conv的思路运用到MLP中,那就是先上一个全局的depthwise conv(kernel大小与feature map同样大),再上pointwise conv。然后再让全局的depthwise conv每个channel之间的参数共享,这就是MLP-Mixer了(这个地方不太严谨,还要加一个patch embedding,这也是为了降低计算量和参数量)。

具体来说,depthwise conv对应MLP-Mixer中的cross-location operation(token-mixing),pointwise conv对应per-location operation(channel-mixing)。

启示

MLP-Mixer这篇文章的方法情理之中,意料之外,思路早就在以前的文章里埋下了伏笔,但是让这个方法work还是会让大家直呼“神奇”、“厉害”、“有意思”。

这篇文章里出现了很多次sweep:

sweep the batch sizes in {32, 64, . . . , 8192}
sweep magnitude, m, parameter in a set {0, 10, 15, 20}
sweep mixing strength, p, in a set {0.0, 0.2, 0.5, 0.8}
sweep learning rate, lr, and weight decay, wd, from {0.003, 0.001} and {0.1, 0.01} respectively

不知道这个方法能够work跟这些sweep有多大关系,但是普通公司和实验室应该是sweep不起的。打仗的时候“大炮一响,黄金万两”,现在是“实验一跑,黄金万两”。

Transformer、ViT、MLP-Mixer都用了何恺明的skip-connnections,我想这应该是学术界有抱负研究者的梦想,能够做出一个对学术界有着经久不息影响的工作,无论是横向上(跨越领域)还是纵向上(跨越时间)。

最后,面对问题,如果我们可以遵循第一性原理,更容易不落窠臼,不形成思维定势,不被其他人的思路牵着鼻子走。

作者:袁进辉
https://www.zhihu.com/question/457926000/answer/1876266525

想到了一点对深度学习编译器,框架和AI芯片的影响:

如果这种MLP 架构大行其道,未来神经网络的结构就太简单了,不需要那么多类的算子了,只需要矩阵乘和非线性变换就够了。

如果只有有限的几类计算,那么是不是直接全部手工写算子的代码就可以了,还需要深度学习编译器呢?

如果只有有限的几类算子,AI芯片支持了这几类计算,那么算子的代码也不需要写了,只要调用API就可以了。

作者:丶favor
https://www.zhihu.com/question/457926000/answer/1869936105

思路不错,算力也够,工程能力也强。出来的MLP网络在GPU latency上估计有巨大优势,毕竟不用滑窗了,也不用attention了。但是估计泛化能力还有待观察,尤其是对尺度变化上,图片分辨率发生变化时,这玩意还好使么还有待考究。不过有待考究不代表它不行,因为图片变大它可以resize patch emebdding来适应,如果训练中包含了这样的多尺度训练,我觉得有可能也是能行的。

论文里也出现了一个小小的疑点:为啥序列长度变长了,参数居然没变,有人破下案吗?

☆ END ☆

如果看到这里,说明你喜欢这篇文章,请转发、点赞。微信搜索「uncle_pn」,欢迎添加小编微信「 mthler」,每日朋友圈更新一篇高质量博文。

扫描二维码添加小编↓

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值