ICLR2022《HOW DO VISION TRANSFORMERS WORK?》

2023-10-29

在这里插入图片描述
论文链接:https://arxiv.org/abs/2202.06709
代码链接:https://github.com/xxxnell/how-do-vits-work

1. 动机

多头自注意力(MSAs)技术在计算机视觉领域的成功已是不争的事实。然而,人们对MSAs的工作原理知之甚少。此外很多工作对MSA工作原理的分析只停留在其具有弱归纳偏置(weak inductive bias)和长距离依赖捕捉(long-range dependency)的能力。本文较为全面的对视觉Transformer的低层原理进行了分析和实验论证。

2. MSA和ViT特性

本篇论文总结了MSA和ViT的三大特性如下:
1)MSA提高了网络的精度,但是这种改善主要归因于训练数据的特异性(data specificity),而不是长距离依赖性
2)MSA与卷积Conv呈现两种不同的操作形式,MSA是低通滤波器,而Conv是高通滤波器。二者是共为互补的。
3) MSA在模型特征融合阶段扮演了非常重要的角色,基于此,作者提出了一种新网络AlterNet,将每个stage末尾的Conv块替换成了MSA。AlterNet在大中小型数据集上的性能表现都超过了单纯的CNN模型和ViT模型。

3. 传统Transformer探究

视觉Transformer的核心部件Self-Attention可以被表示为:
在这里插入图片描述
其中 Q Q Q, K K K V V V分别是查询、键和值向量,d表示查询和键向量的维度。 z j z_j zj是第 j j j个输出token。从卷积神经网络(convolutional neural networks, CNNs)的角度来看,MSAs是所有具有大型和特定于数据的核的特征映射点的转换,即,MSA可以看成是一种特殊的卷积变换,它作用在整个feature map上,具有大尺寸的核参数。因此,MSAs至少与卷积层(Convs)具有同样的表达能力,尽管这并不能保证MSAs会表现得像卷积层。
但是MSA的长距离依赖建模能力对于模型预测性能的提升,本文作者提出了反对意见,作者认为给予模型适当的距离约束可以帮助模型学习更鲁棒的表示,例如一些局部建模MSA的工作,CSAN和Swin Transformer都仅在小窗口内计算自注意力,不仅在小数据集上表现优异,而且在大型数据集例如Imagenet-21K上达到了更好的性能。基于此,作者提出了针对MSA和ViT的三个核心问题:

  • 我们需要MSA中的哪些属性来更好的优化网络,MSA的长期依赖建模到底对模型优化起到了怎样的作用?
  • MSA的操作与Conv有何不同?
  • 如何协调使用MSA和Conv才能更好的发挥它们各自的优势?

4. MSA和ViT的问题分析

问题一:我们需要MSA中的哪些属性来更好的优化网络,MSA的长期依赖建模到底对模型优化起到了怎样的作用?

在这里插入图片描述
作者首先提出了各种证据来支持MSA是广义空间平滑。这意味着MSA提高了性能,因为其公式(1)是一个适当的归纳偏置。这个弱归纳偏置会干扰神经网络的训练。特别是,MSAs的一个关键特性是它们的数据特性,而不是长期依赖关系。MSA之所以能提升模型的整体性能,是因为它使损失平面变得扁平化,这有助于ViT的训练。 上图展示了ViT和ResNet损失函数的平面示意图,如图1所示,损失平面越平坦,模型的性能和泛化能力越好。

但是另一方面,MSA允许模型在接触数据时使用负Hessian特征值,这意味着MSA的损失函数是非凸的,这种这种非凸性在一般情况下会干扰神经网络的优化。这一说法也可以通过上图(c)进行证实,图(c)提供了模型训练阶段的Top-5 Hessian特征值密度,batchsize为16,可以看出,ViT具有非常多的负Hessian特征值,而ResNet只有少数,这种损失优化情况会扰乱网络的优化,尤其是在训练的早期阶段。但是在数据量非常大的情况下,这个缺陷会消失,图(a)通过使用滤波器归一化方法可视化得到的损失函数平面,表明ViT的平面相比ResNet更加平坦,这种趋势在边界区域更加明显。同样,在图(b)中展示着ResNet遵循不规则的优化轨迹,而ViT逐渐沿着平滑的轨迹收敛到最优值,这也说明了为什么ViT在大数据集上表现的比CNN好。

问题二:MSA的操作与Conv有何不同?

在这里插入图片描述
本文认为MSA和Conv的操作基本上呈现相反的效应,其中MSA是低通滤波器,而Conv是高通滤波器MSA在空间上平滑了具有更高自注意力值的特征图区域,因此,其倾向于减少高频信号。为了支持这一论点,作者对MSA和Conv的特征图进行了傅立叶分析,结果如上图所示,其中图(a)的相对对数幅度表明,ViT倾向于减少高频信号,而ResNet会放大。图(b)展示了基于频率计算得到的随机噪声对模型准确率的影响程度,可以看到ResNet非常容易受到高频噪声的影响,而ViT对高频噪声具有一定的鲁棒性,因此将二者结合可以有效提升整体性能。
在这里插入图片描述
此外,作者还分析了二者在特征融合方面的差异,作者认为MSA操作可以有效的对不同层次的特征进行聚合,但是Conv不能。这是因为MSA具有平均化特征图的操作,这会减少特征图点之间的方差,进而对特征图进行集成,为了证明这一论点,作者做实验对ResNet和ViT的特征图的方差进行计算,实验结果如上图所示。从图中可以看出,MSA倾向于减少方差,相反,ResNet中的Conv和ViT中的MLP会增大方差。此外作者还观察到了两个特征图的方差演化模式:

  • 随着网络层数的深入,方差会先在每个层中累积,随着深度的增加而增大。
  • 在ResNet中,特征图方差在每个stage结束时达到峰值,因此可以通过在ResNet每个阶段的末尾插入一个MSA来提高ResNet的特征聚合能力。

问题三:如何协调使用MSA和Conv才能更好的发挥它们各自的优势?

作者在问题二的回答中认为MSA和Conv是互补的,因此在问题三中,作者提出了一种设计规范来将MSA和Conv进行组合,称为AlterNet,下图展示了AlterNet与其他两种组合形式的对比。
在这里插入图片描述
作者首先研究了目前流行的多stage神经层叠加架构的特性,并且设计了一种交替模式,即基于CNN的结构来堆叠MSA。作者通过实验证明,多stage神经层叠加得到的效果接近于单个模型,这在问题二特征图方差的分析图得到了验证,可以观察到,不管在ResNet还是ViT中,特征图方差的演变模式在每个阶段都会重复。下图也展示了ResNet和Swin Transformer在CIFAR-100上的特征相似性,在该实验中,作者使用mini-batch CKA方法来测量相似度。可视化结果显示,CNN的特征图相似性具有块结构,同样,多stage的ViT的特征图相似性也呈现出一定的块结构,但是在单stage的ViT中却没有这种现象,因此块结构应该是多stage结构的本身特性。
在这里插入图片描述
基于以上发现,作者假设MSA放置在网络stage结束的位置可以显著提升性能,而不是放置在整个模型的末尾。作者提出的MSA和Conv交替模式的设计规范如下:

  • 在baseline CNN模型的末尾使用MSA替换Conv块。
  • 如果添加的MSA块不能提高预测性能,就将之前stage末尾的Conv块继续替换为MSA块。
  • 越在后stage的MSA块,给定的head参数和隐藏层维度应该越大。

网络模型AlterNet

根据上述三条规范,作者提出了一个新的网络模型AlterNet,AlterNet通过调整MSA和Conv在整体模型中的占比来统一ViT和CNN。下图展示了基于ResNet-50的AlterNet模型结构。
在这里插入图片描述
下图展示了Alter-ResNet-50与其它基线模型在CIFAR-100的准确率和鲁棒性测试结果,由于CIFAR是一个小型数据集,因此CNN的性能优于规范的ViT,但是本文的Alter-ResNet-50可以看作是一个遵循设计规范的MSA模型,其在小数据集上的性能也优于CNN,这表明MSA操作可以对Conv操作进行补充和增强。
在这里插入图片描述

5. 结论

本文目前的工作表明,MSAs不仅仅是广义卷积,而是与广义卷积互补的广义空间平滑。MSA通过集成特征图和平滑损失平面来帮助神经网络学习更加鲁棒的特征表示。根据这些分析,作者保留了Conv和MSA本身的结构,并针对他们分别作为高通滤波器和低通滤波器的特性,提出了一系列的组合设计规范,以及复合网络AlterNet,AlterNet可以方便在现有模型中替换主干网络,用于其他视觉任务。本文的另一个关键贡献是,证明了MSA在特征融合方面的优势和特性,这有助于后续的研究者使用MSA集成特征图来改善下游任务的预测结果。

本博文借鉴于:https://mp.weixin.qq.com/s?__biz=MzAxMzc2NDAxOQ==&mid=2650425263&idx=1&sn=e5cff80802237cfc77620a8557dbc76b&chksm=83937373b4e4fa65c5d8c5a0fe0b61f5ce26ccfa9da0f82765bee7d9756906f5638706cbacb0&mpshare=1&scene=23&srcid=0314g8n7eh03BqExI3H8H2ni&sharer_sharetime=1647219957110&sharer_shareid=44fcd7d9db61b1ba350bd08fbf650955#rd
如有任何问题,请指正!!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ICLR2022《HOW DO VISION TRANSFORMERS WORK?》 的相关文章

  • UE4 部分命令知识点梳理

    UE4 部分命令知识点梳理 1 r SSGI Enable 0 1 屏幕空间 全局光照关闭 开启 2 DFO 距离场AO 指数指的是AO强度 遮挡最大距离 指的是距离场AO影响的最大距离 3 r forcelod 1 0 1 等 设置场景模
  • CSS中clear:both的作用

    clear both意思就是清除浮动 例如我们设置了三个div如下
  • es6中let var const 的特点及区别

    首先 var是定义一个变量常用的方法 与其相似的还有let和const 以下介绍他们三个的特点及不同 一 var var的用法很多 没有什么局限 可以对变量进行声明 例如 注意 var let const 是js的关键词 需要写在scrip

随机推荐

  • CSDN笔记

    拉普拉斯变换的收敛域 ROC 与逆变换 ILT 1 是否可积即是否收敛 如果可收敛 面积 拉氏值即为收敛域 1 收敛的条件 e jwt 积分为振荡函数 2 常系数线性微分方程对应线性时不变系统 其分析步骤有三 3 拉氏逆变换 ILT 的方法
  • Linux僵尸进程怎么处理,Linux 僵尸进程如何处理

    Linux 允许进程查询内核以获得其父进程的 PID 或者其任何子进程的执行状态 例如 进程可以创建一个子进程来执行特定的任务 然后调用诸如 wait 这样的一些库函数检查子进程是否终止 如果子进程已经终止 那么 它的终止代号将告诉父进程这
  • js求时间差

    js求时间差 var date1 new Date 开始时间 alert aa var date2 new Date 结束时间 var date3 date2 getTime date1 getTime 时间差的毫秒数 计算出相差天数 va
  • 基于SpringBoot的购票系统的设计与实现

    博主介绍 在职Java研发工程师 专注于程序设计 源码分享 技术交流 专注于Java技术领域和毕业设计 温馨提示 文末有 CSDN 平台官方提供的老师 Wechat QQ 名片 项目名称 基于SpringBoot的购票系统的设计与实现 演示
  • 十五分钟带你学会 Electron

    文章目录 什么是 Electron 为什么要选择 Electron 安装 Electron 桌面CSDN实战 Electron 基础配置 Electron 进程 主进程 渲染进程 主进程与渲染进程的区别 主进程与渲染进程的通信 Electr
  • 孔乙己:new的五种写法

    孔乙己 new的五种写法 这个是目标类 INT 拥有一个字面常量构造函数 和一个平凡析构函数 可以从int构造 也可以隐式转换为int 也可以和int比较大小 class INT private int value public const
  • 【CNC——第6篇】PMAC上位机编程基础篇(上位机和下位机如何通信)

    拓展链接 PAMC官网 DELTA TAU 官网手册 手册大全 PMAC官网 PCOMM32PRO用户手册 PMAC 的内部变量 内部变量分为四种 I 变量为电机等常用基本控制变量 P 变量为全局用户常量 Q 变量为坐标系变量 M 变量为地
  • 华为OD机试 C++ 打卡统计

    题目 任务 你的工作是帮我们找出打卡次数最多的前五名员工 有些小细节需要注意 如果两位员工打卡次数一样多 那么先打卡的员工排名更靠前 如果他们开始打卡的时间也一样 那就按照员工id的大小排序 id小的员工排在前面 输入 第一行是员工的数量N
  • osgFBO(十)多pass-3,pass3,shader将背景从绿色变为蓝色

    pass3和pass2类似 只是再熟悉下 这个Pass设定为最后一步 可以不再输出纹理 即 1 pass3摄像机输入tex2 osg ref ptr
  • matplotlib之饼状图

    import matplotlib pyplot as plt labels A B C D fracs 35 20 45 10 plt pie x fracs labels labels plt show 圆形饼图 import matp
  • 数据结构顺序表与链表(查找,插入,删除)

    目录 顺序表 链表 顺序表 顺序表是在计算机内存中以数组的形式保存的线性表 线性表的顺序存储是指用一组地址连续的存储单元依次存储线性表中的各个元素 使得线性表中在逻辑结构上相邻的数据元素存储在相邻的物理存储单元中 即通过数据元素物理存储的相
  • JVM调优实战

    1 当项目运行一段时间以后 产生了OOM的问题 我们该如何排查问题呢 用top命令 看看是哪个进程CPU占用率高 获取它的进程ID 再根据具体的进程id 执行 top HP 进程id号 命令 看看哪个线程的CPU占用率高 如果是业务线程出现
  • WIN7打开方式列表无法添加某个程序

    win7打开方式不能添加程序 你问我答网 原因 程序移动了位置 解决 开始 运行 regedit 在 HKEY CLASSES ROOT Applications 中找到无法添加的程序 例如 ColorStorm exe 看一下它的 she
  • STM32CubeMX之RTC电子钟

    STM32CubeMX之RTC电子钟 1 简介 实时时钟是一个独立的定时器 RTC模块拥有一组连续计数的计数器 在相应软件配置下 可提供时钟日历的功能 修改计数器的值可以重新设置系统当前的时间和日期 2 特性 可编程的预分频系数 分频系数最
  • 《消息队列高手课》如何实现高性能的异步网络传输?

    我们开发的绝大多数业务系统 它都是 IO 密集型系统 跟 IO 密集型系统相对的另一种系统叫计算密集型系统 通过这两种系统的名字 估计你也能大概猜出来 IO 密集型系统是什么意思 IO 密集型系统大部分时间都在执行 IO 操作 这个 IO
  • mysql 查找表中某个字段相同的数据_怎么查看数据库表中某个字段的值有哪些重复记录...

    展开全部 下面以 sqlserver数据库为例进行说明 select from TableA where b in select b from TableA group by b having count b gt 1 这样就列举出了b字段
  • Kryo 使用指南

    1 Kryo 的简介 Kryo 是一个快速序列化 反序列化工具 其使用了字节码生成机制 底层依赖了 ASM 库 因此具有比较好的运行速度 Kryo 序列化出来的结果 是其自定义的 独有的一种格式 不再是 JSON 或者其他现有的通用格式 而
  • 【OSG】OSG环境部署 OSG3.6.5+vs2017+win10_x64(超详细)

    最近开始了OSG的学习 开始搭建OSG开发环境 期间遇到了很多问题 也查阅了很多资料 最终搭建成功 OSG本来就是开源的 不应该敝帚自珍 应该多交流多分享 所以在此记录一下环境搭建的过程 方便以后查阅和交流 1 下载文件 1 1 OSG源码
  • spring-security--基础--4.4--案例:资源权限访问

    spring security 基础 4 4 案例 资源权限访问 代码位置 https gitee com DanShenGuiZu learnDemo tree master spring security learn 1 授权 1 1
  • ICLR2022《HOW DO VISION TRANSFORMERS WORK?》

    论文链接 https arxiv org abs 2202 06709 代码链接 https github com xxxnell how do vits work 1 动机 多头自注意力 MSAs 技术在计算机视觉领域的成功已是不争的事实