©PaperWeekly 原创 · 作者|苏剑林
单位|追一科技
研究方向|NLP、神经网络
大家最近应该多多少少都被各种 MLP 相关的工作“席卷眼球”了。以 Google 为主的多个研究机构“奇招频出”,试图从多个维度“打击”Transformer 模型,其中势头最猛的就是号称是纯 MLP 的一系列模型了,让人似乎有种“MLP is all you need”时代到来的感觉。
这一顿顿让人眼花缭乱的操作背后,究竟是大道至简下的“返璞归真”,还是江郎才尽后的“冷饭重炒”?让我们也来跟着这股热潮,一起来盘点一些最近的相关工作。
五月人倍忙
怪事天天有,五月特别多。这个月以来,各大机构似乎相约好了一样,各种非 Transformer 的工作纷纷亮相,仿佛“忽如一夜春风来,千树万树梨花开”。单就笔者在 Arxiv 上刷到的相关论文,就已经多达七篇(一个月还没过完,七篇方向极其一致的论文),涵盖了 NLP 和 CV 等多个任务,真的让人应接不暇:
[1] MLP-Mixer: An all-MLP Architecture for Vision - Google Research
[2] Beyond Self-attention: External Attention using Two Linear Layers for Visual Tasks - 清华大学
[3] Do You Even Need Attention? A Stack of Feed-Forward Layers Does Surprisingly Well on ImageNet - 牛津大学
[4] Are Pre-trained Convolutions Better than Pre-trained Transformers? - Google Research
[5] ResMLP: Feedforward networks for image classification with data-efficient training - Facebook AI
[6] FNet: Mixing Tokens with Fourier Transforms - Google Research
[7] Pay Attention to MLPs - Google Research
以上论文是按照出现在 arixv 上的时间排序的。可以看到主力军依旧是 Google 大佬。想当年一手促成了“Attention is all you need”趋势的也是 Google,现在“重拳出击”Transformer 的还是 Google,Google 大佬真可谓一直挖坑不断啊。
把酒话桑麻
那么这系列工作究竟能带来什么启发呢?我们要不要赶紧跟上这系列工作呢?在这部分内容中,我们就来简要地梳理一下上述几篇论文,看看它们是何方神圣,是否有可能造成新一股模型潮流?
2.1 Synthesizer
要解读上述 MLP 相关的工作,就不得不提到去年五月 Google 发表在《Synthesizer: Rethinking Self-Attention in Transformer Models》[1] 的 Synthesizer。而事实上,如果你已经了解了 Synthesizer,那么上面列表中的好几篇论文都可以一笔带过了。
在之前的文章 Google 新作 Synthesizer:我们还不够了解自注意力中,我们已经对 Synthesizer 做了简单的解读。撇开缩放因子不说,那么 Attention 的运算可以分解为:
其中 是输入序列的变换,这个了解 Self Attention 的读者应该都清楚,不再详写。Synthesizer 则是对几种 的新算法做了实验,其中最让人深刻的一种名为 Random,就是将整个 当作一个参数矩阵(随机初始化后更新或者不更新)。
▲ Synthesizer的“预训练+微调”实验结果。实验的baseline是T5,其中“R”即为Random模式,相当于MLP。在 Random 的情况下,Attention 矩阵不再是随样本变化的了,也就是所有样本公用同一个 Attention 矩阵,但是它依然能取得不错的效果,这在当时确实对大家对 Attention 的固有理解造成了强烈冲击。Synthesizer 的实验相当丰富,包括“机器翻译”、“自动摘要”、“对话生成”、“预训练+微调”等,可以说,上面列罗的多数论文,实验都没有 Synthesizer 丰富。
2.2 MLP-Mixer
论文标题:
MLP-Mixer: An all-MLP Architecture for Vision
论文链接:
https://arxiv.org/abs/2105.01601
Synthesizer 也许没想到,一年之后,它换了个名字,然后火起来了。
论文《MLP-Mixer: An all-MLP Architecture for Vision》所提出来的 MLP-Mxier,其实就是 Synthesizer 的 Random 模式并去掉了 softmax 激活,也就是说,它将 设为可训练的参数矩阵,然后直接让 。模型就这样已经介绍完了,除此之外的区别就是 MLP-Mxier 做 CV 任务而 Synthesizer 做 NLP 任务而已。
对了,为啥这模型叫 MLP-Mxier 呢,因为作者把这种直接可训练的 Attention 模式起了个名字叫做“token-mixing MLP”,把原来的 FFN 改叫做“channel-mixing MLP”(以前叫做 Position-wise FC),不管叫啥,反正就是号称只是 MLP,所以模型也叫做 MLP-Mxier。
而事实上,笔者认为这个更标准的叫法是窗口为 1 的一维卷积,但不管是这篇论文还是之前的《Attention Is All You Need》[2] ,都是宁愿把这些常规操作自己另起个名字,也要选择性地减少甚至无视与卷积的联系,可谓是为了“A Good Title Is All You Need”而煞费苦心了。
其实这一点也遭到了 LeCun 的批评,如果真的是标准的 MLP,那应该要将输入展平为一个一维向量,然后再接变换矩阵。
2.3 External Attention
论文标题:
Beyond Self-attention: External Attention using Two Linear Layers for Visual Tasks
论文链接:
https://arxiv.org/abs/2105.02358
从类比的角度看,Synthesizer 的 Random 模式或者 MLP-Mxier,相当于将Attention中的 和 都设为参数矩阵了,而《Beyond Self-attention: External Attention using Two Linear Layers for Visual Tasks》所提出的 External Attention,则是把 和 设为(固定大小的)参数矩阵了,实验任务同样是 CV 的。
本来这也没什么,毕竟深度学习就是效果为王,效果好了就能成文。但是个人认为 External Attention 很多说法就禁不住推敲的。
首先,它把自己称为“两个线性层”,刻意淡化它跟 Attention 的联系(说出它是 Attention 的特例很丢人?);然后它又说“通过引入两个外部记忆单元(也就是设为参数的 和 ),隐式地学习了整个数据集的特征”,这种说法也不能算错,然而其实任意模型的任意参数都可以这样解释,这并不是 External Attention 的特性;
还有它说能实现线性的复杂度,那得固定 的长度,这种情况下其实应该跟也同样是线性复杂的 LinFormer 比比才更有说服力(论文比了 Performer,但是 Performer 的降低复杂度思路是不一样的,LinFormer 更有可比性)。
抛开这些文字上的不说,External Attention 的工作机制似乎有点迷。不难想到 External Attention 对每个特征的编码是孤立的,如果换到 NLP 来说,那就是说每个词都独立编码的,根本不与上下文产生联系,所以肯定是不 work 的,那为什么在 CV 中会 work 呢?
2.4 Stack of FFN
论文标题:
Do You Even Need Attention? A Stack of Feed-Forward Layers Does Surprisingly Well on ImageNet
论文链接:
https://arxiv.org/abs/2105.02723
至于论文《Do You Even Need Attention? A Stack of Feed-Forward Layers Does Surprisingly Well on ImageNet》,其实跟 MLP-Mixer 是高度重合的,不过它写起来就实在多了。它就是将输入过一个常规的 FFN,然后将输出转置,再过一个 FFN,最后转置回来,这样如果本身就熟悉 Transformer 的话,我们很快就清楚它做了啥。
这篇论文本身就很短,一共只有 4 页,还包括 1 页代码和半页参考文献,正文其实就只有 2.5 页,更像是一个简报。也许作者本身也想在这个方面深挖一下,结果 Google 的 MLP-Mixer 先出来了,那么做下去也没意思了,遂草草完事发出。(这部分故事纯粹是笔者自己的猜测。)
2.5 Pre-trained CNN
论文标题:
Are Pre-trained Convolutions Better than Pre-trained Transformers?
收录会议:
ACL 2021
论文链接:
https://arxiv.org/abs/2105.03322
事实上,CNN 才是最早尝试(在 Seq2Seq 任务中)取代 RNN 的模型,Facebook的《Convolutional Sequence to Sequence Learning》[3] 其实更早发表,只不过很快就被 Google 的《Attention Is All You Need》[2] 抢了风头,后来 GPT、BERT 等模型发布之后,Transformer 类模型就成了当前主流,CNN 很少被深入研究了。
论文《Are Pre-trained Convolutions Better than Pre-trained Transformers?》则帮助我们验证了“CNN+预训练”的有效性。论文结果显示,不管是直接用下游数据监督训练,还是先预训练然后微调,基于膨胀卷积或动态卷积的 CNN 模型都略优于 Transformer 模型,并且在速度上 CNN 模型还更加快。对了,这篇论文已经中了 ACL 2021,所以这篇论文的成文其实更早,只不过这个月才放出来而已。
▲ 不管有无预训练,CNN都体现出了自己的优势
这篇论文给我们的主要启发是:预训练改进与模型改进不应该混为一谈,预训练技术本身往往能给各种模型都带来提升,不应该一提到预训练就想到 Transformer,也不应该只把预训练跟 Transformer 结合。事实上,笔者之前也比较喜欢 CNN,曾通过“膨胀门卷积(DGCNN)”的设计在多个任务上取得不错的效果,而这篇论文则再次肯定了 CNN 的价值。不过尽管如此,笔者可能依然不会投入主要精力转向 CNN 的研究。
首先,理论上来说,CNN 就无法捕捉足够远的长程依赖,这是根本缺陷,虽然通过膨胀卷积等方式,可以快速增大 CNN 的感受野,但也只是比较大,不是 Transformer 理论上的一步到位;其次,如果单纯看提高效率角度,Transformer 本身也有很多优化空间,如果只是为了执行效率而转向 CNN,那这个理由似乎不那么有说服力;还有,Transformer 的 的复杂度本身也带来更多的折腾空间(比如像 UniLM),可以玩出更多的花样(比如像 K-BERT)。
总的来说,我们不能否定 CNN 的价值,但如果当前已经比较专注 Transformer 了,那么就没必要分出太多精力去转向 CNN 了。
2.6 ResMLP
论文标题:
ResMLP: Feedforward networks for image classification with data-efficient training
论文链接:
https://arxiv.org/abs/2105.03404
至于 Facebook 在《ResMLP: Feedforward networks for image classification with data-efficient training》提出的 ResMLP,跟前述的 MLP-Mixer 和 Stack of FFN 也没有本质区别,其文字描述也跟 Stack of FFN 很相似,忽略细微的细节差异,甚至可以认为它们三个就是同一个模型。最后,ResMLP 的实验任务同样是 CV 的。
2.7 FNet
论文标题:
FNet: Mixing Tokens with Fourier Transforms
论文链接:
https://arxiv.org/abs/2105.03824
就笔者看来,《FNet: Mixing Tokens with Fourier Transforms》所提出的 FNet,是列表的七篇论文中最有意思的一篇。某种意义上来说,FNet 也是 MLP-Mixer 的一个特例,但它是一个非常有意思的特例:MLP-Mixer 的注意力矩阵是直接参数优化而来的,FNet 的参数矩阵是直接通过傅立叶变换得到的!所以,FNet 的“注意力层”是没有任何优化参数的!
其实我们也可以从注意力的角度来理解 FNet。抛开归一化因子不看,那么注意力运算大致可以写为:
这里的 本来是 的矩阵,FNet 说: 可以换成 矩阵:
是的,你没看错,它就是要将它粗暴地换成 组成的 矩阵。当然,这样一来越到后面 就指数爆炸了。为了避免这种情况,FNet 就改为:
也就是搞成虚指数就不会爆炸了!就这么粗暴,这就得到了基于傅立叶变换的 FNet。原论文对序列长度和特征维度两个方向都做了傅立叶变换,然后只保留实数部分,就用这个运算取代了自注意力。对于傅立叶变换的实现,我们有称之为“快速傅立叶变换(FFT)”的算法,效率是 ,所以 FNet 也能有效处理长序列。
FNet 的部分效果如下表。其实从预训练和下游任务的效果上来看,FNet 并没有什么优势,不过它在 Long-Range Arena [4](一个测试模型长程能力的评测榜单)上的效果倒是不错。
当然,FNet 这么粗暴的做法能行本来就已经是个奇迹了,它给我们带来的最大冲击无疑是:就这样都行?傅立叶变换为什么能行?笔者也不知道答案。网上有些评论说,这说明了注意力机制其实就是一种坐标基的变换,而傅立叶变换也是一种基的变换,两者的作用是类似的。
这个说法确实有点本质的感觉,在 ICLR 2021 中也有篇论文《Is Attention Better Than Matrix Decomposition?》[5] 用 SVD 代替 Attention 也能取得不错的效果,这说明基变换的说法确实存在(SVD 也是一种基变换),但是基变换的同时如何保持时序性、哪种基变换更适合,这些问题完全没有头绪。
2.8 gMLP / aMLP
论文标题:
Pay Attention to MLPs
论文链接:
https://arxiv.org/abs/2105.08050
最后《Pay Attention to MLPs》所给我们带来的 gMLP、aMLP 是比较常规的新结构探索工作,算是 MLP-Mixer 的增强版。gMLP 的 g 是 “gate” 的意思,简单来说 gMLP 就是将 MLP-Mixer 跟门控机制结合起来,而 aMLP 的 a 是 “attention” 的意思,它将 attention 与 gMLP 结合起来。
具体来说,gMLP 大致是如下运算:
简单来说,就是将收入沿着特征维度分为两半,然后将其中一半传入 MLP-Mixer,作为另一半的 gate。而 aMLP 则是将 MLP-Mixer 和一个简单的单头 Self Attention 结合来作为 gate:
论文做的实验比较全面,包括 CV 和 NLP 的。从论文所报告的效果来看,gMLP 略差于标准的 Self Attention,而 aMLP 则是普遍优于 Self Attention,这进一步肯定了门控机制的价值。只不过不管是 gMLP 还是 aMLP,人工堆砌的味道太重了,要水一篇 paper 还可以,但个人认为没有给模型的发展方向带来什么新的启发。
前路在何方
通过以上阅读,我们可以知道,MLP-Mixer、Stack of FFN、ResMLP 这三个模型,事实上可以看成是去年的 Synthesizer 的一个特例,甚至从技术上来说,它们还不如 Synthesizer 的内容丰富,因此真算不上什么有意思的工作;至于它的改进版 gMLP / aMLP,则是非常常规的结构炼丹工作,只要算力足够我们都可以去做,所以也确实没什么意思;External Attention 号称两个线性层,事实上就是Attention的变式,其生效机制和实验对比也不够明朗;比较有意思的就是 CNN 预训练和 FNet 这两个工作了,一个让我们解耦了“预训练改进”和“模型改进”两个概念,一个提出的傅立叶变换也有效给我们带来了较大的思想冲击。
整体而言,这些工作离成熟还远得很,最多是初步验证了有效性,连优雅也说不上。比如,除了 FNet,这些所谓的“all in MLP”的模型,都没有办法比较优雅处理变长输入,像 MLP-Mixer、Stack of FFN、ResMLP 纯粹在(固定大小的)图像上实验,所以不用考虑这个问题,像 Synthesizer / gMLP / aMLP 虽然做了 NLP 的实验,但看上去都是强行截断的,算不上漂亮。所以,这系列工作一定程度上是开拓了新的思路,但其实带来了更多有待解答的问题。
那么我们要不要跟呢?个人认为没必要投入多少精力进去,平时大致关注一下就行了。抛开前面说的优雅性问题不说,这些工作的实用性本身就值得商榷。像将 Attention 换成 MLP 的改进,最大的优点无非就是提速,没错,是会快一点,但理论复杂度还是 ,这说明其实没有本质改进,况且提速的同时通常还会降低一点性能。
如果单从“提速并降低一点性能”的追求来看,Transformer 可做的工作也非常多(最直接的就是减少一两层),没必要换成 MLP,而换成 MLP 探索自由度降低了不少。当然,从“拓荒”的学术角度来看,多角度尝试各种新模型是有意义的,但这也不宜掺入过多的人造因素在里边,不然就变成了一个在结构上过拟合任务的过程了,难登大雅之堂。
此外,对于 NLP 来说,我们可能比较关心的是“预训练+微调”这一块的性能,而很遗憾,从 Synthesizer 开始的一系列 NLP 实验表明,将 Attention 换成 MLP 后的模型也许在某个任务上能取得有竞争性的结果,但是其迁移性往往不好,也就是说可能单看预训练效果还不错,但是“预训练+微调”多数就比不上 Transformer 了。这也不难理解,因为它们把 Attention 矩阵参数化,那么该矩阵更有可能跟具体任务强相关了,不像 Transformer 那样自适应生成的 Attention 矩阵那样具有更好的适应能力。
曲终人散时
本文盘点了最近的一些“非主流”工作,主要是通过以 MLP 为主的非 Transformer 结构来取代 Transformer 并获得了有竞争力的结果。总的来说,这些工作看起来形形色色,但都有迹可循,有“新瓶装旧酒”之感,能给人新启示的并不多。
全文仅乃笔者的闭门造车之言,仅代表笔者的个人观点,如有不当之处,还请读者海涵斧正。
参考文献
[1] https://arxiv.org/abs/2005.00743
[2] https://arxiv.org/abs/1706.03762
[3] https://arxiv.org/abs/1705.03122
[4] https://arxiv.org/abs/2011.04006
[5] https://openreview.net/forum?id=1FvkSpWosOl
更多阅读
#投 稿 通 道#
让你的论文被更多人看到
如何才能让更多的优质内容以更短路径到达读者群体,缩短读者寻找优质内容的成本呢?答案就是:你不认识的人。
总有一些你不认识的人,知道你想知道的东西。PaperWeekly 或许可以成为一座桥梁,促使不同背景、不同方向的学者和学术灵感相互碰撞,迸发出更多的可能性。
PaperWeekly 鼓励高校实验室或个人,在我们的平台上分享各类优质内容,可以是最新论文解读,也可以是学习心得或技术干货。我们的目的只有一个,让知识真正流动起来。
???? 来稿标准:
• 稿件确系个人原创作品,来稿需注明作者个人信息(姓名+学校/工作单位+学历/职位+研究方向)
• 如果文章并非首发,请在投稿时提醒并附上所有已发布链接
• PaperWeekly 默认每篇文章都是首发,均会添加“原创”标志
???? 投稿邮箱:
• 投稿邮箱:[email protected]
• 所有文章配图,请单独在附件中发送
• 请留下即时联系方式(微信或手机),以便我们在编辑发布时和作者沟通
????
现在,在「知乎」也能找到我们了
进入知乎首页搜索「PaperWeekly」
点击「关注」订阅我们的专栏吧
关于PaperWeekly
PaperWeekly 是一个推荐、解读、讨论、报道人工智能前沿论文成果的学术平台。如果你研究或从事 AI 领域,欢迎在公众号后台点击「交流群」,小助手将把你带入 PaperWeekly 的交流群里。