收录于话题
#自然语言处理
210个
©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 大佬真可谓一直挖坑不断啊。
把酒话桑麻
那么这系列工作究竟能带来什么启发呢?我们要不要赶紧跟上这系列工作呢?在这部分内容中,我们就来简要地梳理一下上述几篇论文,看看它们是何方神圣,是否有可能造成新一股模型潮流? 要解读上述 MLP 相关的工作,就不得不提到去年五月 Google 发表在《Synthesizer: Rethinking Self-Attention in Transformer Models》 [1] 的 Synthesizer。而事实上,如果你已经了解了 Synthesizer,那么上面列表中的好几篇论文都可以一笔带过了。
其中 是输入序列的变换,这个了解 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-Mixer的部分实验结果
对了,为啥这模型叫 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 呢?
论文标题:
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,所以这篇论文的成文其实更早,只不过这个月才放出来而已。
这篇论文给我们的主要启发是: 预训练改进与模型改进不应该混为一谈,预训练技术本身往往能给各种模型都带来提升,不应该一提到预训练就想到 Transformer,也不应该只把预训练跟 Transformer 结合。 事实上,笔者之前也比较喜欢 CNN,曾通过“膨胀门卷积( DGCNN )”的设计在多个任务上取得不错的效果,而这篇论文则再次肯定了 CNN 的价值。 不过尽管如此,笔者可能依然不会投入主要精力转向 CNN 的研究。
首先,理论上来说,CNN 就无法捕捉足够远的长程依赖,这是根本缺陷,虽然通过膨胀卷积等方式,可以快速增大 CNN 的感受野,但也只是比较大,不是 Transformer 理论上的一步到位;其次,如果单纯看提高效率角度,Transformer 本身也有很多优化空间,如果只是为了执行效率而转向 CNN,那这个理由似乎不那么有说服力;还有,Transformer 的 的复杂度本身也带来更多的折腾空间(比如像 UniLM),可以玩出更多的花样(比如像 K-BERT)。 总的来说,我们不能否定 CNN 的价值,但如果当前已经比较专注 Transformer 了,那么就没必要分出太多精力去转向 CNN 了。
论文标题:
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 的。
论文标题:
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的“预训练+微调”实验结果
▲ FNet的Long-Range Arena实验结果 当然,FNet 这么粗暴的做法能行本来就已经是个奇迹了,它给我们带来的最大冲击无疑是:就这样都行?傅立叶变换为什么能行?笔者也不知道答案。网上有些评论说,这说明了注意力机制其实就是一种坐标基的变换,而傅立叶变换也是一种基的变换,两者的作用是类似的。
这个说法确实有点本质的感觉,在 ICLR 2021 中也有篇论文《Is Attention Better Than Matrix Decomposition?》 [5] 用 SVD 代替 Attention 也能取得不错的效果,这说明基变换的说法确实存在(SVD 也是一种基变换),但是基变换的同时如何保持时序性、哪种基变换更适合,这些问题完全没有头绪。
论文标题:
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 结合起来。
简单来说,就是将收入沿着特征维度分为两半,然后将其中一半传入 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 默认每篇文章都是首发,均会添加“原创”标志
📬 投稿邮箱:
• 投稿邮箱: hr@paperweekly.site
• 所有文章配图,请单独在附件中发送
• 请留下即时联系方式(微信或手机),以便我们在编辑发布时和作者沟通
🔍
现在,在「知乎」 也能找到我们了
进入知乎首页搜索「PaperWeekly」
点击「关注」 订阅我们的专栏吧
关于PaperWeekly
PaperWeekly 是一个推荐、解读、讨论、报道人工智能前沿论文成果的学术平台。如果你研究或从事 AI 领域,欢迎在公众号后台点击「交流群」 ,小助手将把你带入 PaperWeekly 的交流群里。