在CV界,传统卷积已经彻底输给Transformer了吗?

人工智能与算法学习

共 2925字,需浏览 6分钟

 ·

2022-06-14 21:30

内容转载自知乎,著作权归属原作者


刘斯坦(慕尼黑工业大学 计算机科学)回答:


是,输得很惨,我现在一看到面试者对Transformer一脸热情过度的样子都有点PTSD了。


前面波尔德已经讲得很好了,Transformer冲击SOTA有用,但工业界不可能去用SOTA。既然是工业界,做什么都得考虑个成本,Transformer一上,就意味着推理时间,训练时间,调试时间成倍的增加。


推理时间翻倍,意味着硬件成本翻倍,也意味着同样的硬件能同时跑的模型变少。大部分硬件不支持意味着高效率硬件用不上,只能使用少数厂商的硬件,这就意味着硬件被人卡脖子。功耗成本增加也是问题。


训练时间翻倍,意味着迭代次数减少,迭代次数减少意味着你开发进度慢,意味着被市场淘汰。要跟上步子也可以,那么训练集群和电费都是成倍增加。


Transfomer难训练,意味着调试时间成倍增加,以前随便调调就有,现在得反复调试。训练时间使用的是GPU时间,还能忍,调试时间是是什么?员工的时间。IT企业最大的成本支出是什么?人力成本。


最后,你一个好好的企业,用上了Transformer,导致推理硬件成本翻倍,能耗翻倍,训练集群成本翻倍,耗电翻倍,迭代时间翻倍,员工成本翻倍,然后被市场淘汰。所有这一切的付出,居然只是为了涨那几个点。。。


如果你把Transformer用在刀刃上,比如波尔德说的处理高阶特征,那还行。比如特斯拉用Transformer搞tracking就是不错的思路。



波尔德回答:


首先明确反对斗兽。反对“a完爆b”式引战。


cnn相比vit至少有下列优点:

  1. cnn在数据较少时效果更好,收敛也更快。本质是因为cnn包含的inductive bias于图像数据的性质吻合,而vit只能靠海量数据学习这些性质。现实业务中数据很可能没那么多,vit吃不饱不好好干活。而且训练vit动不动就300、500甚至1000个epoch真的遭不住。用cnn可能100个epoch就完事了。


  2. cnn容易训练。只要用上residual和BN这两个技术,cnn的效果基本就不会差到哪里去。训练vit你需要各种正则化和trick。比如gradient clip,weight decay,random depth,large batch,warm up,各种数据增强……超参数过多意味着换个数据集就重新来过,慢慢调去吧。我听过很多人抱怨vit迁移到自己的数据上效果不好,我怀疑多半是没调出来。


  3. cnn跑得快。卷积已经经历过多年优化,比自注意力的运算效率高。relu也比gelu快的多。


  4. cnn的开销与像素点的数目是线性关系。而vit是平方关系。这意味着vit难以处理高分辨率图像。


  5. cnn天然可以处理任意分辨率的图像。而vit由于位置编码的限制,一般需要固定分辨率。


  6. cnn对硬件更友好。naive的卷积只需要im2col,matmul和reshape。bn和relu还可以融合进卷积核。硬件实现比自注意力简单。


  7. 因为运算简单,cnn的int8量化也容易做。想要量化vit,首先必须搞一个int8的softmax…….怎么看都不是个容易的事情。目前的推理芯片绝大部分只能跑cnn。


最后是一些胡言乱语。


卷积和自注意力不是水火不容的。小孩子才斗兽。大人选择我全都要。例如Swin,吸收了cnn的局部性和层级结构,效果就比原版vit好很多。反过来ConvNeXT从vit里获得了灵感,给cnn来了一波文艺复兴。LeCun说过,他理想中的网络应该是用卷积抓底层的特征,transformer处理高阶的信息。类似于detr那样。vit这个领域现在还是大水漫灌,而我乐观地相信真正的好东西还在后面。


另外一个问题是,cnn到底还有多少潜力可挖。缝合了大量trick之后,老不死的(褒义)ResNet50也能在ImageNet上达到80%以上的准确度。说不定哪天又蹦出来个新技术,给全体cnn再补补身子(就像曾经的BN)。



李宏毅的粉丝回答:


No Free Lunch。我个人觉得这句话无论什么时候说都是对的,没有一个模型能在所有任务所有场景上都能做到最好,Transformer也不例外。


虽然目前cv的各大任务都是被Transformer刷榜了,但我相信还是有一些任务CNN是有一些优势的。

首先我认为CNN和Transformer(MultiHeadAttention)最大的区别在于感受野,CNN在浅层的时候感受野很小,基本上提取的基本都是纹理颜色这种特征(不需要大的感受野),即使深层,虽然感受野较大(但实际上有效感受野并不是很大),理论上能学习到轮廓的特征,但是由于纹理颜色等特征是更容易学习的,因此,在ImageNet数据集上面,模型很容易走捷径,去学习纹理而不是形状,导致产生很大的形状偏见(https://arxiv.org/abs/1811.12231)。


当然最近也有论文提出大卷积核可以得到更大的感受野,从而减小形状偏见,达到和Transformer类似甚至更好的效果(https://arxiv.org/pdf/2203.06717.pdf)。在通用任务(分类,检测,分割),感受野都是非常重要的,人判断一个物体类别主要也是依靠形状而不是纹理,因此通用任务上Transformer的效果比CNN好是符合直觉的。但是材料分类或者瑕疵检测这种通过纹理就能解决的问题,我相信CNN会有一定的优势,因为CNN的限制更为合理。


此外,最近CNN也开始文艺复兴了,ConvNext,VAN,以及上面这篇论文(https://arxiv.org/pdf/2203.06717.pdf)通过增大卷积核在多个任务上取得了和Transformer类似的效果,不过没有达到SOTA就是了。


此外,重要的是,目前工业界,Transformer的落地困难重重,尤其是端边部署,onnx都不支持MultiHeadAttention, LayerNorm,GELU等算子,是将这些算子拆成多个小算子完成的。而绝大多数的AI芯片对这些小算子是不支持,或者推理效率很低的(GPU除外,但GPU实在是太贵了,一般产品是用不起的),这就导致了Transformer模型很难部署。BN可以与卷积融合,3x3的卷积效率比其他算子高得多,导致了目前工业界还是以4,5年前的CNN网络为主。不是工业界的算法工程师不求上进,而是比较了很久之后会发现,新模型真的不一定会比老模型好。


退一万步来讲,Transformer在视觉任务上,Patch Embedding还是通过卷积层来完成的,卷积这种不破坏图像二维信息的算子已然刻入了基于Transformer的模型之中。


推荐阅读


人工智能中的机器学习和模型评价(文末福利赠送)


一本1986年就问世的编程书为何能畅销至今?(文末福利赠送)


Transformer称霸的原因找到了?OpenAI前核心员工揭开注意力头协同工作机理


——The  End——

读者,你好!我们建了微信群,欢迎大家进群学习交流,请加我的微信后,邀请你进群。无关人员请绕道,谢谢合作!

分享

收藏

点赞

在看


浏览 34
点赞
评论
收藏
分享

手机扫一扫分享

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

手机扫一扫分享

分享
举报