Vision Transformer 必读系列之图像分类综述(三): MLP、ConvMixer 和架构分析(下)

简介: 在 Vision Transformer 大行其道碾压万物的同时,也有人在尝试非注意力的 Transformer 架构(如果没有注意力模块,那还能称为 Transformer 吗)。这是一个好的现象,总有人要去开拓新方向。相比 Attention-based 结构,MLP-based 顾名思义就是不需要注意力了,将 Transformer 内部的注意力计算模块简单替换为 MLP 全连接结构,也可以达到同样性能。典型代表是 MLP-Mixer 和后续的 ResMLP。


2. ConvMixer-based



ConvMixer 的含义是:

  1. 不包括自注意力层
  2. 不包括 Spatial Mixer MLP 层
  3. 包括 Channel Mixer 层,这个层可以是 1x1 的点卷积,或者 MLP 层

640.png

因为 Channel Mixer MLP 层和 1x1 卷积完全等价,所以这里所说的 ConvMixer-based 是强调 Spatial Mixer 层模块可以替换为 DW 卷积(关于全局自注意力和 DW 卷积的区别和联系,在 3.4.3 中会详细说明)。ConvMixer-based 的典型代表是 ConvMixer,其结构图如下所示:

640.png

在 MLP Mixer 模型中说过, ViT 的编码器层核心结构可以分成全局空间自注意力层(用于 token 和 token 间信息交互),通道混合 MLP 层(用于每个 token 内的 channle 间信息交互)。ConvMixer 也是沿用了同样的分解策略,只不过替换模块不再是 Spatial Mixer MLP 和 Channel Mixer MLP,而是全部替换为了卷积,分别是 DW Conv 和 1x1 Point Conv。使用 Depthwise Convolution(逐通道卷积) 来提取 token 间的相关信息,类似 MLP Mixer 中的 token-mixing MLP,使用 Pointwise Convolution(1x1 卷积) 来提取 channel 间的相关信息,类似 MLP Mixer 中的 channel-mixing MLP,然后将两种卷积交替执行,混合两个维度的信息。性能如下所示:

640.png

本论文核心结论不是强调 DW 卷积的重要性,而是说明 ViT 这种架构的成功不在于是使用了自注意力模块还是 Spatial Mixer MLP,只要有相应的代替结构,性能其实都差不多,我们可能要关注整个 Transformer 架构而不是注意力等模块。这个问题在 3.4.1 中也有详细说明。


3. 通用架构分析


前面所提出的 MLP-Mixer 和 ResMLP 已经证明了 ViT 成功的关键可能并不是注意力机制,而是来自其他地方或者说整体架构。基于这个出发点,有大量学者对整个架构进行深入研究,试图从更高维度来理解 Transformer,典型算法如下所示:

640.png

3.1 MetaFormer


基于 ResMLP 的自注意力不是必备的而是可以通过 MLP 代替的结论,MetaFormer 作者提出了更进一步的架构抽象,如下所示:

640.png

其核心观点和 ResMLP 一致,即 Transformer 模型中自注意力模块不是最核心的(并不是说可以直接去掉),Transformer 的成功来源其整体架构,同时可以将 Transformer 的 Attention 模块和 ResMLP 的 Spatial MLP 层统称为 Token Mixer,进而提出了 MetaFormer 通用结构,Meta 的含义代表 Token Mixer 是一种统称,只要能够实现 Token Mixer 功能的模型都属于 MetaFormer 范畴,例如你也可以将 Token Mixer 换成 3x3 DW 卷积。为了验证这个架构的可行性,作者将  Token Mixer 替换为最简单的无参数的 Pooling 算子,其性能如右边图所示,令人意外的是 PoolFormer 性能居然比 DeiT 和 ResMLP 更好,详细结构如下所示。640.png

由于架构非常简单,不再进行详细描述。以下是基于 PoolFormer 的一些 Ablation。

640.png

Pooling 模块代码如下:

640.png

注意有个减号,原因是 Pooling 模块后面还有一个残差连接线,Pooling 模块中先减掉 x 才能构成可能的恒等变换 x+ (Pool(x)-x) = x,而通常的 Conv 操作是可以通过调整初始化核参数来实现  x+ Conv(x)=x 的。


3.2 Empirical Study


An Empirical Study of CNN, Transformer, and MLP 对现在火热的 CNN、Transformer 和 MLP 之争进行了一些经验性研究,可以带给我们一些启发。
为了能够公平比较,作者首先设计了一个通用的 SPACH 架构,在该框架下引入了 mixing block 概念,其结构如下所示,上面是单阶段 SPACH 表示 ViT 这种直筒结构,多阶段 SPACH 表示 ResNet 这种下采样结构,SPACH-MS 结构可以用于高分辨率图片输入场合,该结构和大部分网络例如 PVT 一样。

640.png

内部的 Spatial Mixing 可以即插即用的替换为任意 CNN、Transformer 和 MLP ,如下所示:

640.png

作者对上述三种 Spatial Mixing 模块和单阶段、多阶段 SPACH 模块进行实验,得出了如下经验性结论:

  • 无论选择三种网络结构中的哪一种 Spatial Mixing 模块,多阶段框架始终显著优于单阶段框架。这个结论在其他文章中也有相同的描述。
  • CNN 这种局部建模是非常有效且至关重要的在 MLP 和 Transformer 添加一个局部建模旁路,可以在仅增加极少的参数量和计算量的情况下,获得显著的性能提升。这个也同样被大部分论文(例如 CeiT )所证实。
  • MLP 在小模型尺寸下可以获得很强的性能,但是在模型尺寸增加时会出现严重的过拟合。作者认为过拟合是 MLP 获得 SOTA 性能的主要障碍。
  • 卷积和 Transformer 是互补的,卷积结构的泛化能力最好,而 Transformer 结构的模型容量最大。这表明卷积依然是设计轻量级模型的最佳选择,而在设计大模型时,可以充分考虑 Transformer。


可以说上述 4 条结论已经在各个算法中得到了充分验证,是非常可信的,这也能够启发后续相关网络设计。


3.3 Demystifying Local Vision Transformer


Demystifying Local Vision Transformer: Sparse Connectivity, Weight Sharing, and Dynamic Weight 深入分析了注意力和 Conv 的关系,并进行了大量的实验验证,是一篇值得学习的论文。
Conv 是众所周知的局部提取算子,而 Swin Transformer 中虽然没有借助 Conv ,但是提出了类似功能的局部注意力模块 W-MSA,本文试图深入分析局部注意力机制和 Conv (尤其是 depth-wise convolution )的区别和联系,其关系如下所示:

640.png


  • (a) 为标准的 3x3 卷积,其同时作用于空间和通道维度

  • (b) 为 Transformer 中的全局空间注意力和 Spatial Mixing MLP,作用于空间维度
  • (c) 是 Transformer 局部窗口注意力和 3x3 DW 卷积,相比于 (b) 关注空间的局部维度
  • (d) 是常规的 MLP 层 和 1x1 点卷积,作用于通道维度
  • (e) 是全连接层,作用于整个空间和通道维度


这里需要明确 ViT 中我们所说的全局自注意力实际上是全局空间自注意力,是逐通道算的,通道间没有信息混合,通道信息混合是通过后续的 FFN 模块实现。
通过上图可以清晰的发现,局部注意力计算可以采用 3x3 DW 卷积等效替换,并且可以总结出局部注意力的三条特性:

  • Sparse connectivity:每个 Token 的输出只依赖于其所在局部窗口内的 Tokens,而且各个 channel  之间是无联系的 (这里忽略了 attention 中 query,key 和 value 的线性投影,attention 可以看成在计算好的权重下对 Tokens 的特征进行加权求和,而且是 channel-wise 的)。
  • Weight sharing:权重对于各个 channel 是共享的( (1, HW) X (HW, C) = (1, C),通道维度权重共享)。
  • Dynamic weight:权重不是固定的,而是基于各个 Tokens 动态生成的。


DW Conv 具备前两条特性,但是其不是动态权重的,其权重是一旦训练好就固定了,不会随着图片内容不同而改变。下面是汇总表格:

640.png

作者还进一步描述了 MLP、Conv 等层的联系,如下所示:

640.png

从 2d 全连接层 MLP 出发:

  • 将其功能分成 Token Mixer MLP 和 Channel Mixer MLP,将其统称为 Sep. MLP
  • Sep. MLP 如果具备了自适应的动态权重功能,即为 ViT 带注意力的模型
  • 而 ViT 如果引入局部窗口计算能力,则称为 Local ViT,如果有空间尺度缩放的多尺度结构则和 PVT 类似


从 2d 全连接层 MLP 出发:

  • 如果引入稀疏连接功能,则退化为 Conv
  • 如果空间存在缩放,则可以构成金字塔结构的 Pyramid MS Conv
  • 如果通道维度有瓶颈结构,则构成了 Bottleneck


如果同时具备稀疏连接,仅仅在空间维度信息聚合则为逐深度方向可分离 DW-S Conv。
基于上述等价分析,作者基于 Swin Transformer 提出了 DWNet。

640.png

对 Swin Transformer 的改动包括:

  • 将 W-MSA 和 SW-MSA 替换为 7x7 的 DW 卷积+BN+Relu 模块
  • 将 stage 中的 LN 全部换成 BN
  • 为了进一步提高性能,还提出动态权重版本,即将 DW 卷积替换为带有 SE 模块的动态加权 DW (D-DW)


其性能如下所示:

640.png

可以看出,如此简单的模型性能和 Swin Transformer 差不多,这也和 ConvMixer 相互印证了。
如果说 MetaFormer 还有 Transformer 的影子,那么 ConvNeXt 就是一个更彻底的去 Transformer 的例子了。其核心出发点是纯粹的 Conv 堆叠性能能不能超过 Transformer?ConvNeXt 对 Swin Transformer 进行了逐模块分解,并且将其应用于 ResNet 上,通过不断对比两者差异,作者将 ResNet 改造为 ConvNeXt,性能最终超越 Swin Transformer,证明了纯粹的 Conv 堆叠性能能够超过 Transformer,这也间接说明 Transformer 架构和优化策略的优异性,而不是所谓的 Attention。

640.png



4. 总结



本文对 Vision Transformer 发展进行了详细的综述,由于内容比较多,下面进行简要总结。
在 Attention is all you need 论文中第一次提出 Transformer 架构,ViT 将其第一次成功推广到了视觉任务领域,DeiT 针对 ViT 需要超大数据预训练问题提出了蒸馏学习训练方式,在解决大数据预训练问题的同时也进一步提高了性能,推动了 ViT 在视觉中的进一步应用的可能。
ViT 的核心在于 Attention,但是整个架构也包括多个组件,每个组件都比较关键,有诸多学者对多个组件进行了改进。我们可以简单将 ViT 结构分成 6 个部分:

  1. Token 模块,其中可以分成 Image to Token 模块 和 Token to Token 模块, Image to Token 将图片转化为 Token,通常可以分成非重叠 Patch Embeding 和重叠 Patch Embeding,而  Token to Token 用于各个 Transformer 模块间传递 Token,大部分方案都和 Image to Token 做法一样即 Patch Embeding,后续也有论文提出动态窗口划分方式,本质上是利用了图片级别的语义自动生成最有代表性的采样窗口。

  2. 位置编码模块,其中可以分成显式位置编码和隐式位置编码,显式位置编码表示需要手动设置位置编码,包括绝对位置编码和相对位置编码,而隐式位置编码一般是指的利用网络生成自适应内容的位置编码向量,其提出的主要目的是为了解决显式位置编码中所遇到的当图片尺寸变化时候位置编码插值带来的性能下降问题。

  3. 注意力模块,早期的自注意力模块都是全局注意力,计算量巨大,因此在图片领域会针对性设计减少全局注意力,典型做法是降低 KV 空间维度,但是这种做法没有解决根本问题,因此 Swin Transformer 中提出了局部窗口自注意力层,自注意力计算仅仅在每个窗口内单独计算,不再存在上述问题。

  4. FFN 模块,其改进方向大部分是引入 DW 卷积增强局部特征提取能力,实验也证明了其高效性。

  5. Normalization 模块位置,一般是 pre norm。

  6. 分类预测模块,通常有两种做法,额外引入 Class Token 和采用常规分类做法引入全局池化模块进行信息聚合。


在此之后,我们还分析了如何输出多尺度特征图,方便用于下游密集任务以及如何训练更深的 Transformer。
随着研究的深入,大家发现 attention 可能不是最重要的,进而提出了 MLP-based 和 ConvMixer-based 类算法,这些算法都是为了说明自注意力模块可以采用 MLP 或者 Conv 层代替,这说明 Transformer 的成功可能来自整个架构设计。
进一步,MetaFormer、An Empirical Study of CNN, Transformer, and MLP 和 Demystifying Local Vision Transformer 等论文都详细说明和验证了上面的说法,并都提出了自己各自的看法,这或许也指明了 ViT 的下一步研究方向。
从目前 Vision Transformer 进展来看,目前 CNN 和 attention 的边界已经越来越模糊了,相互可以等价替换,也可以相互增强,谁强谁弱尚未可知,或许 Conv、MLP 和 attention 混合才是最终能够实际落地的出路吧!


文章来源:【OpenMMLab

2022-01-27 18:24

目录
相关文章
|
24天前
|
人工智能 测试技术 数据处理
首个Mamba+Transformer混合架构多模态大模型来了,实现单卡千图推理
【10月更文挑战第18天】《LongLLaVA: Scaling Multi-modal LLMs to 1000 Images Efficiently via Hybrid Architecture》提出了一种新型多模态大模型LongLLaVA,结合了Mamba和Transformer架构,通过系统优化实现在单张A100 80GB GPU上处理近千张图像的突破。该模型在视频理解、高分辨率图像分析和多模态智能体任务中表现出色,显著提升了计算效率。
144 64
|
2月前
|
安全 数据处理 数据安全/隐私保护
C/S架构与B/S架构的适用场景分析
C/S架构(客户端/服务器架构)与B/S架构(浏览器/服务器架构)在适用场景上各有特点,主要取决于应用的具体需求、用户群体、系统维护成本、跨平台需求等因素。
221 6
|
14天前
|
存储 SQL Apache
Apache Doris 开源最顶级基于MPP架构的高性能实时分析数据库
Apache Doris 是一个基于 MPP 架构的高性能实时分析数据库,以其极高的速度和易用性著称。它支持高并发点查询和复杂分析场景,适用于报表分析、即席查询、数据仓库和数据湖查询加速等。最新发布的 2.0.2 版本在性能、稳定性和多租户支持方面有显著提升。社区活跃,已广泛应用于电商、广告、用户行为分析等领域。
Apache Doris 开源最顶级基于MPP架构的高性能实时分析数据库
|
15天前
|
运维 NoSQL Java
后端架构演进:微服务架构的优缺点与实战案例分析
【10月更文挑战第28天】本文探讨了微服务架构与单体架构的优缺点,并通过实战案例分析了微服务架构在实际应用中的表现。微服务架构具有高内聚、低耦合、独立部署等优势,但也面临分布式系统的复杂性和较高的运维成本。通过某电商平台的实际案例,展示了微服务架构在提升系统性能和团队协作效率方面的显著效果,同时也指出了其带来的挑战。
55 4
|
8天前
|
机器学习/深度学习 自然语言处理 计算机视觉
探索深度学习中的Transformer架构
探索深度学习中的Transformer架构
22 0
|
1月前
|
存储 SQL 分布式计算
湖仓一体架构深度解析:构建企业级数据管理与分析的新基石
【10月更文挑战第7天】湖仓一体架构深度解析:构建企业级数据管理与分析的新基石
67 1
|
15天前
|
机器学习/深度学习 人工智能 自然语言处理
Tokenformer:基于参数标记化的高效可扩展Transformer架构
本文是对发表于arXiv的论文 "TOKENFORMER: RETHINKING TRANSFORMER SCALING WITH TOKENIZED MODEL PARAMETERS" 的深入解读与扩展分析。主要探讨了一种革新性的Transformer架构设计方案,该方案通过参数标记化实现了模型的高效扩展和计算优化。
73 0
|
2月前
|
机器学习/深度学习 存储 算法
Transformer、RNN和SSM的相似性探究:揭示看似不相关的LLM架构之间的联系
通过探索大语言模型(LLM)架构之间的潜在联系,我们可能开辟新途径,促进不同模型间的知识交流并提高整体效率。尽管Transformer仍是主流,但Mamba等线性循环神经网络(RNN)和状态空间模型(SSM)展现出巨大潜力。近期研究揭示了Transformer、RNN、SSM和矩阵混合器之间的深层联系,为跨架构的思想迁移提供了可能。本文深入探讨了这些架构间的相似性和差异,包括Transformer与RNN的关系、状态空间模型在自注意力机制中的隐含作用以及Mamba在特定条件下的重写方式。
121 7
Transformer、RNN和SSM的相似性探究:揭示看似不相关的LLM架构之间的联系
|
2月前
|
存储 监控 安全
SaaS业务架构:业务能力分析
【9月更文挑战第20天】在数字化时代,软件即服务(SaaS)模式逐渐成为企业软件解决方案的首选。SaaS 业务架构设计对于提供高效、可靠的服务至关重要。其核心业务能力包括:用户管理(注册登录、角色权限)、数据管理(存储备份、安全共享)、业务流程管理(设计定制、工作流自动化)、应用集成(第三方应用、移动应用)及客户服务(支持培训、反馈改进)。通过优化这些能力,可为企业提供更高效、可靠的 SaaS 服务。
57 11
|
1月前
|
机器学习/深度学习 人工智能
【AI大模型】深入Transformer架构:编码器部分的实现与解析(下)
【AI大模型】深入Transformer架构:编码器部分的实现与解析(下)