查看原文
其他

【源头活水】MetaFormer: transformer真正work的地方在哪里?



“问渠那得清如许,为有源头活水来”,通过前沿领域知识的学习,从其他研究领域得到启发,对研究问题的本质有更清晰的认识和理解,是自我提高的不竭源泉。为此,我们特别精选论文阅读笔记,开辟“源头活水”专栏,帮助你广泛而深入的阅读科研文献,敬请关注。

来源:知乎—金天

地址:https://zhuanlan.zhihu.com/p/437667670

这篇MetaFormer就像这样:
这篇文章其实讲的东西很简单,我们知道transformer都有一个Token Mixer的部分,很多人对这部分进行各种魔改,比如什么傅里叶Mixer,各种花里胡哨的Attention,但是他们发现,不管怎么换,整个架构还是很work,虽然有一些结构可以涨点,但是是不是可以反向思考一下:是不是一直没有变得部分才是真正work的部分呢?

整个文章的insight也就是这个,最后对比了一下将里面的attention拿掉,换成一个简单的Pooling,试验了一波分类和检测以及分割的效果,发现确实牛逼,直接吊打Pvt和Vit。

我们先来看一下效果吧:
检测的AP直接从res18的 31.8干到了36.2。不得不说这很牛逼啊,这基本上是拿res18一样的算力,干到了res50的精度啊!而且是APs 更高,对小目标更友好。

我认为这篇文章的意义主要在于两个:
  • 证明了transformer的真正有效的不是attention里面的tokenmixer,而是这个朴实的架构;
  • 它拿掉了transformer里面最耗时的attention,直接用一个Pooling代替,我们现在可以不需要太担心速度了,因为pooling可以优化的很到位。
那说道这里,可能很多人会提出一个问题,你只是测试了一个Pooling,你怎么就一定可以证明是架构work,而不是你这个Pooling也很work呢?

其实作者也做了很多ablation study。大概看看这个表格:
作者发现,即使是改为一个Identity Mapping,也可以达到74.3%的准确度。而其他的不管怎么改,都没有太大的涨点,也没有太大的掉点。
但是有一点值得一提,我们其实也可以把Pooling和attention结合起来,但是结合的方式比较的讲究,一般Pooling可以让网络对更长距离的token具有更强的感知能力。
作者也提到,通过将Pooling和其他的attention结合起来,是更一步提升效果的一个比较好的方向。

https://github.com/sail-sg/poolformer
据了解,论文中提到的目标检测和分割的配置文件还没有完全release。

本文目的在于学术交流,并不代表本公众号赞同其观点或对其内容真实性负责,版权归原作者所有,如有侵权请告知删除。


“源头活水”历史文章


更多源头活水专栏文章,

请点击文章底部“阅读原文”查看



分享、在看,给个三连击呗!

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存