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,我想这应该是学术界有抱负研究者的梦想,能够做出一个对学术界有着经久不息影响的工作,无论是横向上(跨越领域)还是纵向上(跨越时间)。
最后,面对问题,如果我们可以遵循第一性原理,更容易不落窠臼,不形成思维定势,不被其他人的思路牵着鼻子走。
我猜 Google 肯定是上了两个独家的神器:TPU集群的算力、3亿张图片的JFT。大力出奇迹。扫了一眼论文,果然我猜的没错。大家看看就好,你们谁也reproduce不出来。
稍微想一下,这个结果并不surprise。Conv2D 的编程实现是 (i) 切割patch, (ii) patch 拉伸成向量,(iii) 把全连接层用到向量上。Conv2D 其实就是patch level的全连接层。他们用的全连接层看起来就是 Conv2D 的远房亲戚。
本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度,google,bing,sogou 等
© 2025 tinynews.org All Rights Reserved. 百科问答小站 版权所有