【NLP】Transformer的中年危机?

共 1895字,需浏览 4分钟

 ·

2021-05-15 16:16

最近Transformer被各种「质疑」,上周CV圈已经杀疯了,多个大佬接连发文,把早已过时的MLP又摆了出来:

  • 5月4日,谷歌挂出《MLP-Mixer An all-MLP Architecture for Vision》
  • 5月5日,清华图形学实验室挂出《Beyond Self-attention: External Attention using Two Linear Layers for Visual Tasks》
  • 5月5日,清华软院挂出《RepMLP: Re-parameterizing Convolutions into Fully-connected Layers for Image Recognition》
  • 5月6日,牛津挂出《Do You Even Need Attention? A Stack of Feed-Forward Layers Does Surprisingly Well on ImageNet》

好家伙,题目一个比一个扎心。

然而CV圈扎完了,娘家的NLPer也不甘示弱,就在昨天我刷Arxiv的时候,一篇谷歌的文章映入眼帘:

大佬们指出,虽然Transformer老哥的效果确实好,但这个效果到底是模型结构带来的、还是预训练带来的呢? 毕竟之前也没人这么暴力地训过对不对。

那既然没人训过,这不idea就来了嘛

接下来我脑补了一下模型选择的问题,经典的就那么几个:

  1. MLP:好!但谷歌18年的USE模型已经证明了MLP没Transformer效果好,毕竟NLP还是需要序列信息的
  2. LSTM:不错!用这个把大模型训出来,今年的kpi就算了,明年的可以冲刺一下
  3. CNN:这个好!速度又快又轻便,根据经验来说在简单任务上表现也不差,稳得一批

结果一训真的是,瞬间ACL+1:

上图中 Lightweight CNN、Dilated CNN、Dynamic CNN 分别是不同的变种,可以得出以下结论:

  1. 不管有没有预训练,CNN的一些变种在NLP分类任务上都有比肩Transformer的效果
  2. 不只是Transformer,预训练对于CNN网络也是有提升的,在1%-18%之间
  3. Dilated CNN、Dynamic CNN 这两个变种的表现更好
  4. 结构、预训练对于最终表现都有影响,可能不预训练的时候A>B,预训练之后A<B

不过,表中数据展示的都是文本分类,虽然附加的一个生成式语义分析上表现也不错,但大佬们也十分清楚CNN在其他更难的任务上表现有限。

CNN在设计上没考虑句子间的交互,只抽取了局部特征。比如在句子pair拼接的分类任务上(MultiNLI、SQuAd),就比Transformer甩掉了10-20个点。有趣的是作者在给CNN加了一层cross-attention之后效果就上去了,在MultiNLI把差距缩小到了1个点。同时他们也指出,在双塔式的分类任务上CNN应该有更好的表现(就像USE模型用MLP也能达到不错的效果)。

所以,文章读到这里,发现Transformer还是稳坐NLP第一把交椅。这也是它的 🐂 🍺 之处,无论别人怎么搞,都没法在general层面打过它。前段时间谷歌还有篇文章分析了Transformer的各种变种,发现大部分都只是在个别任务有所提升(摊手)。

但在做实际落地任务时,还是会有各种速度上的限制,这篇文章就是告诉我们在任务简单、数据量充足、速度受限的情况下可以用CNN及变种来解决问题。TextCNN is all you need。

最后再说几个我疑惑的点,欢迎留言讨论

  1. 文章用的都是CNN变种,为什么没尝试最经典的CNN呢?会不会是表现太差了,不能支持结论
  2. 文章的预训练模型是参考T5的结构,为什么不用更普遍的BERT结构?还提到T5是「current state-of-the-art」,那20年下的GPT3去哪儿了?难道是写的时间太早?为什么现在才发?

这些问题都不得而知了,所以短期内我还是继续无脑精调BERT吧,做个懒人。


往期精彩回顾





本站qq群851320808,加入微信群请扫码:

浏览 59
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报