SPViT:把Transformer中的MSA剪枝成卷积

  • Abstract
  • Section I Introduction
  • Section II Related Work
  • Section III Method
    • Part 1 Weight-sharing between MSA and convolutional operations
    • Part 2 Single Path vision transformer pruning
  • Section IV Experiments
    • Part 1 Main results
    • Part 2 Observations on searched architectures
    • Part 3 Ablation Atudies
  • Section V Conclusion and future work
  • Appendix

Paper
Code

Abstract

ViT在各类计算机视觉任务中取得了令人印象深刻的性能,但是基于MHSA计算也有两大局限:一是庞大的资源消耗,二十缺乏局部归纳偏置。一种统一的解决方案是通过NAS的剪枝方法进行搜索,用类似卷积的归纳偏置来替换一些MSA层。但是如果将MSA和卷积作为单独的候选路径进行训练,又会导致搜索成本大大提升,优化过程也十分困难。


因此本文提出一种新的MSA与卷积之间权重共享的方案,将搜索问题转化为寻找每个MSA层中的参数自己。本文提出的这种SPViT(Single Path Vision Transformer)剪枝的方法使得能够满足一定的效率约束情况下快速的将预训练好的ViT修剪成更加精确、紧凑的混合模型,显著降低了搜索成本。本文在两类代表性的ViT模型上进行了广泛的实验,实验结果表明本文方法能够很好的权衡精度和效率。

Section I Introduction

ViT在分类、检测、识别等诸多领域引起了人们极大的研究兴趣,但是MHSA的两大局限限制了Vit的进一步应用、开发和部署,尤其是对于长序列的建模。因此也有诸多工作致力于高效ViT的研究,比如利用剪枝来修剪并不十分中间的一部分组件;另一问题是MSA缺少局部依赖关系,为了解决这一问题,现有的方法通常是插入卷积层来引入局部哦安置,比如在FFN内部或者encoder之前或者MSA层之前插入卷积。


为了同时解决这两个问题,一种解决方案就是使用NAS自动搜索,将一些MSA通过剪枝替换为卷积操作,这样可以移除一些计算昂贵的MSA层提升模型效率,同时又引入了局部归纳偏置。

因此近期也有一些One-shot的方法提出将MSA,卷积包含到搜索空间中,但是他们是单独的路径进行训练,参见Fig 1(a),这种多路径的方法会大大提升搜索成本,因为每次搜索是独立更新每条路径的。
本文建议将搜索看做一个自己选择问题,其中卷积运算的输出直接从MSA中间结果索引得到,这样可以简化优化过程同时减少搜索成本。

为了解决上述问题,本文提出一种新的单路径ViT剪枝方法——SPViT,通过对预训练好的ViT剪枝获得高性能更精简的紧凑模型。受到MSA层可以关注到局部区域这一实验现象,本文提出一种MSA与卷积之间权重共享的方案;此外还可以使用预训练好的MSA参数来对卷积核进行初始化,在搜索过程中对MSA的中间结果进行索引获得卷积运算的输出。
通过将所有的候选操作都封装在一个MAS层中进行,这样形成了一个单路径搜索方法,参考Fig 1(b),可以通过剪枝的方法将MSA剪枝成卷积,因此不需要想多路径方法一样在不同的候选操作中进行选择,而是将搜索问题转化为在MSA中选择自己的问题。这样就可以大大降低搜索成本,同时优化搜索过程。
除此之外考虑到FFN层也占据很大一部分的计算复杂度,比如对17.5G乘加运算中占据了11,1G,b本文提出一种细粒度的MLP扩展方法来搜索MLP的拓展比例,即SPViT会基于门控机制确定每个FFN hidden dim的权重,然后修剪不那么重要的维度。
本文的贡献总结如下:
(1)本文提出一种MSA与卷积权重共享的方案,这样可以将所有候选操作封装到一层MSA中,这样只需要single-path就会更新全部,将搜索问题转化为寻找MSA参数的罪域子集组合问题,这大大降低了搜索成本;

(2)基于single-path方案,本文提出的SPViT会自动对一些不重要的MSA剪枝成卷积操作,并且对MLP层的hidden dim也进行搜索;

(3)在CIFAR-10和ImageNet-1k上的实验结果表明SPViT可以显著降低搜索成本,性能优于基线方法,同时还对一些搜索结果进行分析,得到一些Vit设计的经验性结果。

Section II Related Work

Pruning Transformers
为了降低Transformer的计算成本,常使用剪枝。目前对Transformer的剪枝大致有两类,分别是模块剪枝和token剪枝。模块剪枝主要调整head number,linear projection的通道数,weight等,近期Zhu等人则提出可以动态计算、修剪不那么重要的token特征;Chen等人则基于彩票算法来修剪Transformer参数。token的修剪则是会动态计算、修剪 不那么重要的token使得模型满足一些FLOPs的要求;但也因为token的减少,如果要将其应用到一些密集的预测任务,如分割任务,就十分有挑战性。

本文也是兼职,但与之前的工作区别在于专注于剪枝没那么重要的全局的MSA,将MSA修剪为卷积,这样可以以较低的搜索成本快速部署搜索Transformer模型。


Convolutional vs self-attention layers


本文的另一方面工作则是探究卷积核SA,因为卷积更适合提取局部纹理特征,SA更适合建模全局相关性,提取物体整体形状,为了获得二者优点,许多工作尝试将二者单独处理组成混合模型,比如听过向ViT中插入卷积层,或者在CNN之外堆叠SA层;另一类思路则是探究两种操作的相关性,比如SA结合可学习的位置编码可以表征任意卷积层,ConViT则是将软性的归纳偏执作为注意力分组的一部分,本文的工作也属于后面这一类。



本文提出的权重共享表明MSA的子集可以表示卷积运算,这样就能将候选操作集合在MSA中,从而大大降低搜索成本。

Section III Method

Part 1 Weight-sharing between MSA and convolutional operations

权重共享指的是不同操作之间共享参数子集,比如在候选卷积操作之间共享权重可以大大降低搜索成本,本文使用了一种新的MSA与卷积共享权重的方法。
回顾卷积和MSA
卷积是CNN的基础模块,标准的卷积层会将感受野内的信息进行聚合,最终的输出可以表示为:

而MSA则是Transformer的基础模块,但是其感受野是整个输入序列也就是其感受野是全局的,MSA计算过程可以表示为:

MSA计算复杂度为:

因此当输入分辨率很高的时候计算复杂度会成指数增长;

但是卷积的计算复杂度一直都是:


权重共享策略
接下来叙述MSA如何与卷积进行参数共享,通过逐步消除MSA独有的参数,得到最后二者共享的参数。

首先,因为卷积只处理感受野内的局部信息,因此再用MSA表示卷积时需要将非局部部分的注意力分数置零,将局部区域的分数固定为1:

因此MSA计算式子变为:

注意到MSA(

[Transformer]SPViT:Pruning Self-attentions into Convolutional Layers in Single Path相关推荐

  1. 深度模型压缩论文(01)- Meta Filter Pruning to Accelerate Deep Convolutional Neural Networks

    文章目录 1.摘要和介绍 1.1摘要部分 2.背景和方法 2.1 背景 2.2 贡献 2.3 方法 3.实验和结果 3.1 实验 3.2 结果 4.总结和展望 4.1 总结 4.2 展望 本系列是在阅 ...

  2. 《Soft Filter Pruning for Accelerating Deep Convolutional Neural Networks》论文笔记

    1. 概述 这篇文章中给出了一种叫作SFP(Soft Filter Pruning),它具有如下两点优点: 1)Larger model capacity.相比直接剪裁掉网络中的filters,再在这 ...

  3. [Transformer]On the Relationship between Self-Attention and Convolutional Layers

    卷积与自注意力之间的关系:MHSA可以表示任意卷积操作 Abstract Section I Introduction Section II Background of Attention Mecha ...

  4. DCANet: Learning Connected Attentions for Convolutional Neural Networks

    论文链接:https://arxiv.org/pdf/2007.05099.pdf 源码:https://github.com/ma-xu/DCANet/blob/master/models/resn ...

  5. DCANet:Learning Connected Attentions for Convolutional Neural Networks

    摘要 在本文中,我们提出了深度连接注意力网络(DCANet),这是一种新的设计,它在不改变CNN模型内部结构的情况下,增强了CNN模型中的注意力模块.(原文写到,所有代码和模型都是公开的.) Intr ...

  6. 减少参数!SPViT:视觉Transformer剪枝新方法

    点击下方卡片,关注"CVer"公众号 AI/CV重磅干货,第一时间送达 转载自:集智书童 Pruning Self-attentions into Convolutional La ...

  7. Vision Transformer在CV任务中的速度如何保证?

    本文作者丨盘子正@知乎    编辑丨极市平台 来源丨https://zhuanlan.zhihu.com/p/569482746 我(盘子正@知乎)的PhD课题是Vision Transformer的 ...

  8. Transformer合集1

    最近Transformer文章太多了 索性一起发了得~~  以后关于这个的都不单发了 如何提高ViT的效率?可以是让模型更容易训练,减少训练时间,也可以减少模型部署在硬件上的功耗等等.本文主要讲inf ...

  9. vision transformer 剪枝论文汇总

    Vision Transformer Pruning 这篇论文的核心思想很简单,就是剪维度,也就是说剪的是这个d. 具体方法就是通过一个gate,如图中的dimension pruning,输出0或者 ...

  10. 【论文解读】医学AI论文解读 | 超声心动图在临床中的自动化检测 | Circulation | 2018 | 中英双语...

    参考目录: 0 论文 1 概述 2 pipeline 3 技术细节 3.1 预处理 3.2 卷积网络 3.3 VGG分类网络结构 3.4 图像分割 4 遇到的问题 0 论文 论文是2018年的,发表在 ...

最新文章

  1. Python进程multiprocessing. Process()的使用
  2. 分段式多级离心泵_离心泵与多级离心泵工作原理
  3. java对象持久化技术_Java对象持久化技术Hibernate 一
  4. 【Jmeter篇】Linux环境下安装部署运行Jmeter
  5. H5实现拍照及相册图片上传
  6. ES6学习笔记第一章
  7. html转word 图片丢失 java_Java 实现 Word 转 pdf 文档的工具来了
  8. Batch Normalization 算法解析
  9. jQuery源码解析(30)
  10. SCTP协议与程序设计案例
  11. matlab构建boost电路,基于matlab的boost电路仿真.doc
  12. java for 死循环_关于java编程死循环的应用
  13. 彻底搞懂数据库内连接、外连接
  14. 从张家界火车站如何去张家界玻璃桥游玩,最详细的张家界攻略
  15. Discuz!论坛教程之去掉帖子列表页的附件图标的方法
  16. STM32F103C8T6详细引脚表
  17. 教授专栏31 | 许佳龙: 疫下3观察--看香港科技应用短板
  18. 跨境早报| 亚马逊FBA推配送新服务!Shopee全面开放巴西站点广告功能
  19. 【机器学习系列】概率图模型第一讲:从概率和图的角度理解概率图模型
  20. 计算机数字音乐软件,《计算机音乐制作与数字音频》.pdf

热门文章

  1. 零基础SQL教程: 什么是SQL 01
  2. SSIM PSNR db
  3. C#基础之vs2010安装与使用教程
  4. Imputation:用于数据插补的SPSS宏
  5. 安防区块链技术的落地应用
  6. cesium接入加载倾斜摄影(cesium篇.16)
  7. Java链表与数组间的相互转换
  8. Java单链表头插法和尾插法以及增删改查方法
  9. Python暴力破解WIFI(超详细破解教程+UI设计教程+步步解析)
  10. 缺陷管理工具(jira,禅道)