点击上方“视学算法”,选择加"星标"或“置顶

重磅干货,第一时间送达

作者丨Qi Han@知乎(已授权)

来源丨https://zhuanlan.zhihu.com/p/486015646

编辑丨极市平台

二次转载须经原作者授权。

导读

Transformer的文章近两年来可谓是井喷式爆发,大量工作来设计各种任务上的transformer模型,然而,attention作为transformer的核心模块,真的比卷积强吗?这篇文章为你带来了local attention和dynamic depth-wise convolution的新视角,其实设计好的卷积结构,并不比transformer差!

论文链接:https://arxiv.org/abs/2106.04263

代码链接:https://github.com/Atten4Vis/DemystifyLocalViT

1. Local Attention是什么?

2020年的ViT横空出世,席卷了模型设计领域,铺天盖地的各种基于Transformer的结构开始被提出,一些在卷积神经网络中取得成功的先验知识,如local operation、多尺度、shuffled等等各种操作和inductive bias被引入Transformer之中。其中比较成功地将local operation引入ViT当中,利用shift window的Swin Transforerm一举获得多个任务的SOTA结果,并获得了Best Paper Award。而其中最核心的模块,Local Attention,究竟有什么神秘之处呢?

Local attention本质上实在一个2D local window内进行特征聚合,但其每个位置的聚合权重,通过KQV之间计算Attention similarity得到(主要包括dot-production, scaling, softmax),是一个无参数的动态计算的局部特征计算模块。

aij为聚合权重,xij为待聚合的特征

ICLR这篇文章的先前版本 (Demystifing Local Vision Transformer)在2021年六月就首次正在arxiv公布并分析了local attention的三个强大设计原则:

(1) 稀疏连接。指一些输出变量和一些输入变量直接没有相互连接。它有效的减少了模型的复杂度而不减少输入输出变量个数。在Local Attention当中,稀疏连接体现在两个方面:一是Local Attention在图像空间上,每一个output值仅与局部的local window内的input相连接,与ViT的全像素(token)连接不同。二是Local Attention在通道上,每一个output channel仅与一个input channel连接,没有交叉连接,不同于group convolution与normal convolution。

(2) 权重共享。意味着有一些连接的权重是相同且共享的,它降低了模型的参数量,同时不需要增加训练数据即可增强模型。在模型中,一个权重被共享使用,可以被认为针对该权重的训练样本增加,有助于模型的优化。在Local Attention中,权重共享通过multi-head self-attention来实现,通过讲channel分成head(group),在同一个head内共享使用了一组聚合权重,降低了聚合权重的参数量(非模型参数量)。

(3) 动态权重。是指根据不同样本的特征,动态地产生连接权重。它能够增加模型的容量。如果把连接权重看作是隐层变量,这种动态权重可以看作是增加模型的容量的二阶操作。Local Attention的动态权重体现在每一个连接的聚合权重都是根据样本特征使用基于dot-product的方式计算得到的。

通过以上三个模型设计原则,Local Attention表现出优异的效果。然而,这些特性也天然存在于CNN结构当中,尤其是(Dynamic)Depth-wise卷积。

2. (Dynamic)Depth-wise卷积和Local Attention的前世今生

逐步拆解Local Attention的操作,可以发现在稀疏连接、权重共享、动态权重三个维度上,都与历史霸主CNN结构中的(Dynamic)Depth-wise卷积很相似。Depth-wise卷积可谓是一个被长期使用又被渐渐遗忘在历史长河中的结构,那么其在模型设计上又有哪些准则呢?

(1) 稀疏连接。不难发现,Depth-wise卷积的稀疏连接特性与Local Attention完全相同,在图像空间上局部链接,在通道上稀疏连接。

(2) 权重共享。权重共享的概念最初就诞生于卷积操作之中,Depth-wise卷积同样得益于权重共享操作,但与Local Attention略有不同,Depth-wise卷积在图像空间上共享权重,每一个空间位置都是用相同权重的卷积核来进行特征聚合,而在channel上,每一个channel使用独立的聚合权重。

(3) 动态权重。动态权重的设计原则在原始的Depth-wise卷积中并没有被使用,然而,动态卷积作为一个被广泛研究的领域,可以轻易的将dynamic特性引入Depth-wise卷积中,形成feature dependent的聚合权重。

尽管在权重共享上两者的共享方式不同,经过实验,本文发现以Local MLP(去掉dynamic特性的local attention)为例,在channel和spatial维度上共享权重的影响并不大,在任何一个维度共享权重,均可以降低模型的参数量,帮助模型优化。而在动态权重上,虽然两者不同,但Depth-wise卷积仍然可以轻易具备动态特性。

不同结构在稀疏连接、权重共享、动态权重上的对比。D-DW-Conv.表示动态DW卷积

3. Depth-wise卷积的表现力

Depth-wise卷积和Local Attention的设计原则如此相似,然而为什么Local Attention取得了如此高的表现力,而Depth-wise卷积没有呢?为了验证这一问题,文章使用Depth-wise卷积替换Swin Transfomer中的所有Local Attention模块,其他结构保持不变(per-LN修改为post-BN),同时为了验证动态DW卷积的效果,文章构建了两种dynamic特性的Depth-wise卷积:

(1)D-DW-Conv. 第一种dynamic DW卷积,采用和普通DW卷积相同的权重共享方式,图像空间共享卷积核,通道间独立卷积核。并使用Global Average Pooling处理input feature,然后通过FC Layer来dynamic预测出动态卷积核。

(2)I-D-DW-Conv. 第二种dynamic DW卷积,采用和Local Attention相同的权重共享方式,每个像素(token)采用独立的聚合权重,而在channel head(group)中共享权重。称为Inhomogeneous Dynamic DW卷积。

来看一看实验结果如何:

ImageNet1k, COCO, ADE20K对比结果

本文使用与Swin Transformer完全相同的训练参数和网络结构,在ImageNet分类、COCO检测、ADE20K语义分割中,基于Depth-wise卷积的结构取得了和Swin Transformer相同的表现力,而Depth-wise卷积的计算开销还更小。

所以,Depth-wise卷积真的不差!有人会问,是不是在更大的模型和更大的数据集上,Local Attention会更有优势呢?由于计算资源的限制,文章仅在Base模型上进行了部分实验:

ImageNet22k pretraing

在更大的数据集ImageNet22k上预训练的结果可以看出,基于Depth-wise卷积的结构仍然与Local Attention不相上下。近期的ConvNext[1]和repLKNet[2]工作更是给出了证明。

4. 现代卷积强在哪里,如何设计更好的模型

既然Depth-wise卷积的表现力也这么好,那为什么长久以来,没有引起人们的广泛关注呢。通过与传统的CNN对比,发现现代卷积在设计上,一般满足文章指出的三个设计原则。同时Swin Transfomer等结构与传统CNN相比,使用了更大的Kernel Size, 如7x7, 12x12等,远大于CNN中长久使用的3x3卷积。

Depth-wise卷积、配合合理的dynamic特性、配合大kernel size,在加持现代网络训练策略(数据增强、优化、正则化)等策略,将是现代卷积的强大之处。

要说如何设计更好的模型,首先要分析现有优秀模型的共性。在稀疏链接方面,下图展示了不同结构的的稀疏特性,越稀疏的模型,越有助于训练阶段的优化,产生更好的性能,同时降低模型的计算复杂度,使网络可以构建设计更自由的模块。

(a)卷积 (b)global attention (c)local attention、DW卷积 (d)1x1卷积 (e)fully-connected MLP

此外,文章构建了一个Relation Graph来阐述模型结构设计中产生的一些设计原则上的演进过程:

图中ViT和Local ViT指其结构中的attention结构,PVT为低秩形式下的金字塔结构Transformer,Dim. Sep.表示通道维度上稀疏化,Locality Sep.表示空间位置连接稀疏化,LR表示低秩,MS Conv.表示多尺度卷积。

关系图中,从上到下呈现了依次增强的正则化方式或者引入动态权重,随着正则化及动态权重的增加,网络的人为先验也随之增加,这种形式带来了优化上的好处,使得网络更容易训练得到更好的结果,现有实验结果也同样验证了此项结论。最终这种稀疏化与动态性上的演进,会走向基于Depth-wise卷积的动态卷积。结合现代Large kernel的训练原则,能够实现更好的表现效果。

[1] Liu Z, Mao H, Wu C Y, et al. A ConvNet for the 2020s. arXiv preprint arXiv:2201.03545, 2022.

[2] Ding X, Zhang X, Zhou Y, et al. Scaling Up Your Kernels to 31x31: Revisiting Large Kernel Design in CNNs. CVPR, 2022.

点个在看 paper不断!

Transformer不比CNN强!Local Attention和动态Depth-wise卷积的前世今生相关推荐

  1. ICLR 2022 | Transformer不比CNN强!Local Attention和动态Depth-wise卷积

    ©作者 | Qer 单位 | 南开大学 研究方向 | 计算机视觉 Transformer 的文章近两年来可谓是井喷式爆发,大量工作来设计各种任务上的 transformer 模型,然而,attenti ...

  2. BOAT: Bilateral Local Attention Vision Transformer

    BOAT Attention 论文标题:BOAT: Bilateral Local Attention Vision Transformer 论文地址:http://arxiv.org/pdf/220 ...

  3. UC 伯克利华人一作:卷积让视觉 Transformer 性能更强,ImageNet 继续刷点!

    转自 | 新智元 来源 | arXiv 编辑 | LQ Priscilla Convolutional stem is all you need! Facebook AI和UC伯克利联手,探究视觉Tr ...

  4. 【TransformerCNNTiDE】从CNN到ViT,再从ViT到TiDE,回顾近十年顶刊和会议发表的关于Attention自注意力、Conv卷积机制以及最新诞生的TiDE模型的发展历程

    目录 一.CV中的Transformer介绍 二.Attention机制增强CNN 前言: 1. Attention Augmented Convolutional Networks(ICCV 201 ...

  5. 最强的Attention函数诞生啦,带给你意想不到的巨大提升!

    Non-invasive Self-attention for Side Information Fusion in Sequential Recommendation(AAAI2021) 一本有仙气 ...

  6. 医学图像领域,是时候用视觉Transformer替代CNN了吗?

    点击下方卡片,关注"CVer"公众号 AI/CV重磅干货,第一时间送达 本文转载自:集智书童 Is it Time to Replace CNNs with Transformer ...

  7. 【深度学习】特征提取器:Transformer,Rnn,CNN之间的相互比较

    在辞旧迎新的时刻,大家都在忙着回顾过去一年的成绩(或者在灶台前含泪数锅),并对2019做着规划,当然也有不少朋友执行力和工作效率比较高,直接把2018年初制定的计划拷贝一下,就能在3秒钟内完成2019 ...

  8. Transformer秒杀CNN,凭什么?

    Transformer 有多厉害? 它只用了短短5年,便在 TensorFlow .PyTorch 等主流深度学习框架支持的 AI 程序中占据一席之地. 有人将 Transfromer 称为是NLP领 ...

  9. Transformer入门Transformer和CNN之间的区别

    跟风,听说最近Transformer很热,那肯定有其过人之处,今天大概看了一下最基础版的Transformer,简单说说体会和理解吧,不一定对,希望路过的大神指点. 要说是革命性的变革,那显然不是,T ...

最新文章

  1. 使用sourceInsight 提高代码编写效率
  2. Android的WebView控件载入网页显示速度慢的究极解决方案
  3. AC日记——Red and Blue Balls codeforces 399b
  4. 英雄无敌3版的仙剑奇侠传
  5. 同一个联盟,同一个梦想 —— 微软 .NET 俱乐部 2006 年在线发布会
  6. java动脑公开课_java课堂动手动脑
  7. android网络框架
  8. 在github上参与开源项目日常流程
  9. 用flash cs4 as 绘制图形、 绘制文本 、创建超链接文本
  10. Excel怎么合并单元格
  11. CSS进阶篇——具体性 (specificity)
  12. Exception in thread “main“ java.lang.NumberFormatException
  13. sqlserver加密隐私字段(不侵入程序)-Always Encrypted
  14. c++·C++游戏——海战棋
  15. matlab编写转台程序,基于Matlab三轴惯导测试转台结构分析.doc
  16. 自媒体:我为什么要写一篇关于睡眠的文章?
  17. Cisco(62)——PBR策略路由案例
  18. 单片机读取EEPROM(AT24C64)值为0xff问题解决方法
  19. 数据仓库系列--维度表技术
  20. Netgear R6220桥接组网设置

热门文章

  1. [Unity3D]Unity3D连衣裙实现游戏开发系统
  2. POJ2387 Til the Cows Come Home -DIJKSTRA 练习
  3. “System.Data.OracleClient.OracleConnection”已过时
  4. YARN集群维护部分问题汇总
  5. ob_get_contents();basename;file_get_contents用法
  6. 【NCEPU】凌亮:Linux实践
  7. 【青少年编程(第27周)】报名考级的小朋友注意截止时间!
  8. 太好玩了,爬虫、部署API、加小程序,一条龙玩转知乎热榜!
  9. 英特尔公布新技术路线图,将为 AWS、高通代工芯片
  10. 神同步!美国三地 Tesla 车主,自动驾驶都撞了警车