当前位置: 首页 > news >正文

视觉Transformer(ViT)解析:它们比CNN更好吗?

深入理解计算机视觉任务中突破性架构的工作原理  

图片


1. 引言

自从自注意力机制(Self-Attention Mechanism)被引入以来,Transformer模型一直是自然语言处理(NLP)任务的首选。基于自注意力的模型具有高度并行化的特性,并且所需的参数数量大大减少,使其计算效率更高、不易过拟合,并且更容易针对特定领域的任务进行微调 [1]。

此外,与早期的 NLP 处理模型(如 RNN、LSTM、GRU 等)相比,Transformer 的主要优势在于,它能够在处理任意长度的输入序列时保持上下文信息。这是因为自注意力机制可以在不同的时间点关注输入序列的不同部分,并且理解这些部分之间的相互作用 [2]。
正是由于这些特性,Transformer 使得训练具有超大规模参数(超过 1000 亿参数)的语言模型成为可能,从而催生了当前最先进的 NLP 模型,例如GPT(生成式预训练 Transformer)BERT(双向编码表示 Transformer) [1]。

然而,在**计算机视觉(Computer Vision)**领域,卷积神经网络(CNNs)仍然在大多数(如果不是全部的话)视觉任务中占据主导地位。尽管近年来涌现了越来越多的研究尝试将自注意力机制引入计算机视觉任务,但极少有方法能够在可扩展性方面超越 CNN [3]。

将 Transformer 架构应用于图像处理的主要挑战在于:
Transformer 的自注意力机制的时间复杂度与输入序列的长度呈二次增长(即 O(n²)),如 表 I 所示,并将在 2.1 小节 进一步讨论。

对于 NLP 任务来说,这通常不是问题,因为输入的令牌(token)数量相对较少。例如,一个 1000 词的段落可能只有 1000 个输入 token,即使采用子词单元(sub-word units),令牌数目也不会增加太多。

但在计算机视觉中,图像的 token 数量通常比 NLP 输入序列大得多。例如,一个300 × 300 × 3 的小型图像可能拥有多达 270,000 个 token,如果直接应用自注意力机制,则需要计算一个**包含 72.9 亿个参数(270,000²)**的注意力矩阵,这对计算资源的要求极为苛刻。

表 I:不同层类型的时间复杂度 [2]

图片

因此,大多数研究尝试在计算机视觉任务中使用自注意力架构时,都采用了局部自注意力结合 CNN 的混合模型,或仅替换 CNN 的部分组件,而不是采用纯 Transformer 结构 [3]。

然而,Alexey Dosovitskiy 等人在他们的研究论文 《An Image is Worth 16×16 Words: Transformers for Image Recognition at Scale》 中提出,完全可以在图像分类任务中全局应用自注意力,并且仅使用基本的 Transformer 编码器架构,不仅可以降低训练所需的计算资源,还可以超越最先进的卷积神经网络(如 ResNet)


2. Transformer 模型

Transformer 由 Vaswani 等人 于 2017 年 在论文 《Attention is All You Need》 中提出,是一种彻底改变 NLP 和机器学习任务的神经网络架构。其高层架构如 图 1 所示。

图 1. Transformer 结构,左侧为编码器(Encoder),右侧为解码器(Decoder)[2]

 

图片

自推出以来,Transformer 成为了许多最先进 NLP 模型(如 BERT、GPT 等)的基础。根本上,它们被设计用于处理序列数据,如文本,而不需要使用循环(RNN)或卷积(CNN)层 [2]。

Transformer 之所以能高效处理序列数据,主要依靠自注意力机制(Self-Attention Mechanism)

2.1 自注意力机制(Self-Attention Mechanism)

自注意力机制的核心功能是:
衡量序列中每个元素与其他元素之间的相关性,并动态调整其重要性权重 [2]。

举个例子,假设我们需要翻译以下句子:

“The animal didn’t cross the street because it was too tired.”
(这只动物没有过马路,因为它太累了。)

这里,“it” 指代的是“the animal” 还是“the street”?
对于人类来说,这个问题很容易回答。但对于计算机来说,识别“it”所指的正确对象是一个复杂的问题。

然而,自注意力机制 使得 Transformer 能够计算句子中每个词相对于其他词的权重,从而正确地将“it” 关联到“animal”,如 图 2 所示 [4]。

图 2.  Transformer 第 5 层编码器的自注意力结果,输入单词为 “it”。注意力机制正确地将其关联到 “The Animal” [4]

图片

 

2.1 自注意力机制(Self-Attention Mechanism)

Transformer 通过并行计算的方式处理输入序列,而不是像 RNN 那样逐步处理。具体来说,它会将输入序列中的每个元素(如单词或图像块)转换为向量表示,并通过自注意力机制计算它们之间的关系。

在 Transformer 编码器中,每个输入元素都会被映射到三个向量:

  • 查询(Query, Q)

  • 键(Key, K)

  • 值(Value, V)

这些向量通过训练可学习的矩阵W_Q、W_K 和 W_V 计算得到:
[ Q = X W_Q, \quad K = X W_K, \quad V = X W_V ]

其中,X 是输入序列的嵌入矩阵,每一行表示一个元素(如单词或图像块)的向量表示。

图片

然后,我们计算查询(Q)与键(K)之间的点积,并除以 K 维度的平方根,以防止梯度消失或梯度爆炸:
[ \text{Attention Score} = \frac{Q K^T}{\sqrt{d_k}} ]

接着,对注意力得分进行 Softmax 归一化,得到注意力权重:
[ \text{Attention Weights} = \text{Softmax} \left(\frac{Q K^T}{\sqrt{d_k}}\right) ]

图片

最后,我们将注意力权重与 V(值矩阵) 相乘,以得到最终的注意力输出 Z
[ Z = \text{Attention Weights} \times V ]

这个过程的核心思想是:

  • 关注输入序列中哪些部分对当前元素最重要

  • 根据这些重要性权重调整最终的表示

在 NLP 任务中,这种机制可以帮助 Transformer 识别单词之间的依赖关系,例如 “it” 在句子中指代 “animal” 而不是 “street” [4]。

2.2 多头自注意力(Multi-Headed Self-Attention)

Vaswani 等人在论文 [2] 中进一步提出了多头自注意力(Multi-Headed Self-Attention),如 图 4 所示。

图 4. 多头自注意力机制示意图 [4]

图片

与单个注意力头(Single-Head Attention)相比,多头自注意力有两个主要优势:

  1. 增强模型的关注能力

    • 单个注意力头可能会过度关注某些特定的关系,而忽略其他重要信息。

    • 多个注意力头可以并行关注输入序列中的不同部分,从而提高模型的整体理解能力。

  2. 提供多个特征空间的表示

    • 由于每个注意力头的权重矩阵(W_Q, W_K, W_V)是独立初始化的,因此不同的注意力头可以捕捉不同的关系。

    • 例如,一个头可以关注句法关系,另一个头可以关注语义信息

在实际操作中,每个注意力头会分别计算自己的注意力输出 (Z_i),然后拼接(Concat) 这些输出,并通过一个可学习的权重矩阵 (W_O) 进行变换,以得到最终的多头注意力输出:
[ \text{Multi-Head Attention} = \text{Concat}(Z_1, Z_2, ..., Z_h) W_O ]
其中,(h) 是注意力头的数量。

多头自注意力的这一特性使得 Transformer 在 NLP 任务中表现优越,也为其在计算机视觉任务中的应用奠定了基础。


3. 视觉 Transformer(Vision Transformer, ViT)

视觉 Transformer(ViT) 的核心创新是:

将图像处理为令牌序列,而不是像 CNN 那样按像素网格处理 [3]。

在传统的 CNN 结构中,输入图像会被滑动窗口(Sliding Window) 方式分割成重叠的小块,然后通过多个卷积层和池化层进行处理。

而在 ViT 中,图像被分割为不重叠的块(Patches),然后将这些块作为输入 token 送入 Transformer 编码器,如 图 5 所示。

图 5. 视觉 Transformer(ViT)架构(左)和 Transformer 编码器单元(右)[3]

图片

ViT 的工作流程
  1. 图像分块(Patch Embedding)

    • 输入图像 (X \in \mathbb{R}^{H \times W \times C}) 被划分为多个固定大小的块(Patch),如 (16 \times 16) 像素块。

    • 这些块被展平(Flatten)并映射到一个低维向量空间,类似于 NLP 任务中的 词嵌入(Word Embedding)

  2. 添加位置信息(Positional Embedding)

    • 由于 Transformer 不具备 CNN 的平移不变性(Translation Invariance),它无法直接感知图像块的空间位置。

    • 为了解决这个问题,ViT 在每个块的向量表示中添加一个可学习的位置编码(Positional Embedding),以保留空间信息。

  3. Transformer 编码器处理

    • 多头自注意力层(Multi-Head Self-Attention)

    • 前馈神经网络(Feed-Forward Network, FFN)

    • 这些块作为 token 送入多个标准 Transformer 编码器,每个编码器包括:

  4. 分类任务

    • ViT 在输入序列中额外添加一个 CLS(分类)token,类似于 BERT 中的 [CLS] token

    • Transformer 处理所有 token 后,CLS token 的输出向量被送入MLP 分类器进行最终分类。

ViT 的优势
  • 更长的全局依赖(Long-Range Dependencies)

    • CNN 依赖于局部感受野(Receptive Field),在低层只能关注局部特征,而 ViT 通过自注意力机制可以直接关注全局信息

  • 更好的可扩展性(Scalability)

    • ViT 可以随着数据量的增加不断提高性能,而 CNN 在数据量较小时更具优势,但容易达到性能瓶颈 [3]。

下一部分,我们将讨论 ViT 在实际数据集上的实验结果,以及它与 CNN 的对比。

4. 实验结果(The Result)

在论文 [3] 中,作者们将两个最大规模的 Vision Transformer(ViT)模型——ViT-H/14 和 ViT-L/16,与最先进的CNN 模型进行了对比。

实验使用的数据集包括:

  • JFT-300M(一个 Google 内部的大规模数据集)

  • ImageNet(标准图像分类基准数据集)

  • ImageNet-21k(包含 21000 个类别的扩展版 ImageNet)

对比的 CNN 模型包括:

  • Big Transfer(BiT):一种使用大规模 ResNet 进行有监督迁移学习的 CNN 模型。

  • Noisy Student:一种基于 EfficientNet 的 CNN 模型,使用半监督学习进行训练,曾在 ImageNet 上取得最优结果。

所有模型均在 TPUv3 硬件上训练,并记录了所需的计算资源(TPUv3 核心天数)。

4.1 ViT vs CNN:分类任务的比较

表 II 总结了 ViT 与 CNN 在不同数据集上的分类性能:

图片

观察结果:  

  • ViT 在所有数据集上均超过了基于 ResNet 的 CNN 模型(BiT 和 Noisy Student)。

  • ViT 需要的计算资源远少于 CNN,例如 ViT-H/14 仅用 256 TPUv3-core-days 即可达到 88.55%,而 Noisy Student 需要 960 TPUv3-core-days。

  • ViT-L/16 在更小的数据集 ImageNet-21k 上也能取得竞争性表现,但仍比 CNN 需要更少的计算资源。

这些结果表明,ViT 在大规模数据集上超越了 CNN,同时计算成本更低


4.2 预训练数据规模对 ViT 影响

图 6 展示了 ViT 和 BiT(ResNet)在不同规模预训练数据集上的表现(使用 ImageNet Top-1 准确率衡量)。

图 6. ViT 与 BiT 在不同预训练数据集上的性能对比 [3]

图片

关键发现:  

  • 小数据集(如 ImageNet)上,ViT 的表现不如 CNN

  • 中等规模数据集(ImageNet-21k)上,ViT 和 CNN 表现相当。

  • 大规模数据集(JFT-300M)上,ViT 显著超越 CNN

这表明:

ViT 需要大规模数据集进行预训练,才能真正展现其优势。  

当数据量较小时,CNN 的卷积归纳偏置(Convolutional Inductive Bias) 使其能够更有效地学习特征,而 ViT 则更容易过拟合。


4.3 数据规模 vs 过拟合趋势

研究人员进一步分析了 ViT 和 ResNet 在不同规模的数据集上的过拟合程度

他们在 JFT 数据集中随机抽取不同规模的子集(9M、30M、90M 和 300M),并训练 ViT 和 CNN,然后比较它们在测试集上的表现,如 图 7 所示。

图 7. ViT vs ResNet 在不同规模数据集上的泛化能力 [3]

图片

观察结果:  

  • 小数据集(9M, 30M)上,ViT 比 ResNet 更容易过拟合

  • ResNet 在小数据集上表现更稳健,但在数据量增加后,性能增长变缓(趋于饱和)。

  • ViT 在大数据集上显著超越 ResNet,因为它能够学习到更复杂的全局模式和特征

研究结论:

CNN 在小数据集上具有更好的归纳偏置(Inductive Bias),但 ViT 在大规模数据集上更具优势。  

这意味着,如果数据量不足,ViT 可能不会比 CNN 更好,但在大规模数据下,ViT 可以学习到比 CNN 更强的特征表示。


4.4 计算资源 vs 迁移能力

研究人员还比较了 ViT 和 CNN 在相同计算预算下的性能(单位:ExaFLOPs)。

图 8 显示了不同模型在 JFT-300M 预训练后的迁移性能:

图 8. 计算预算 vs 迁移性能 [3]

图片

关键发现:  

  • ViT 在相同计算预算下,比 ResNet 效率更高

  • ViT 仅需 2-4 倍更少的计算量即可达到与 ResNet 相同的性能

  • 混合模型(Hybrid ViT + CNN)在小型模型上有优势,但在大模型上优势消失

这表明:

ViT 比 CNN 计算效率更高,尤其是当计算资源有限时,ViT 能够在更短时间内达到更好的性能。  


5. ViT 的局限性与未来发展

尽管 ViT 在大规模数据集上的表现优越,但它仍然存在一些局限性

5.1 ViT 的局限性
  1. 需要大规模数据才能发挥优势

    • ViT 在小数据集上表现不如 CNN,因为 CNN 具有更强的归纳偏置(Inductive Bias),能更有效地学习局部特征,而 ViT 需要大量数据来学习全局模式。

  2. 缺乏空间归纳偏置

    • CNN 通过卷积操作天然捕捉图像的局部空间信息,而 ViT 需要额外的位置编码(Positional Embedding) 解决这个问题,可能导致 ViT 在目标检测、语义分割等任务上不如 CNN。

  3. 预训练模型较少

    • 目前 CNN 具有大量经过优化的预训练模型(如 ResNet, EfficientNet),可以直接用于小型数据集的迁移学习。

    • ViT 仍然缺乏足够多的高质量预训练权重,限制了其在工业应用中的普及。


5.2 ViT 的未来发展方向
  1. 更高效的 ViT 变体

    • 研究者们正在探索更小、更高效的 ViT 结构,如 Swin TransformerDeiT(Data-Efficient Image Transformer),以降低计算成本。

  2. 结合 CNN 的混合模型

    • 未来可能会出现ViT + CNN 结合的混合架构,利用 CNN 提取局部特征,ViT 处理全局依赖。

  3. 扩展到其他计算机视觉任务

    • 目前 ViT 主要应用于图像分类,未来可能会探索目标检测、语义分割、视频分析等任务。


总结:ViT 是计算机视觉的未来吗?

✅ 在大规模数据集上,ViT 比 CNN 更强大
✅ ViT 计算效率更高,适合大规模训练
❌ ViT 需要大量数据,在小数据集上不如 CNN
❌ ViT 仍然缺乏良好的空间归纳偏置  

ViT 未来仍需要改进,但它无疑为计算机视觉的未来打开了新的大门!🚀

参考文献

  1. N. Pogeant, “Transformers - the NLP revolution,” Medium, https://medium.com/mlearning-ai/transformers-the-nlp-revolution-5c3b6123cfb4 (accessed Sep. 23, 2023).

  2. A. Vaswani, et. al. “Attention is all you need.” NIPS 2017.

  3. A. Dosovitskiy, et. al. “An Image is Worth 16×16 Words: Transformers for Image Recognition at Scale,” ICLR 2021.

  4. X. Wang, G. Chen, G. Qian, P. Gao, X.-Y. Wei, Y. Wang, Y. Tian, and W. Gao, “Large-scale multi-modal pre-trained models: A comprehensive survey,” Machine Intelligence Research, vol. 20, no. 4, pp. 447–482, 2023, doi: 10.1007/s11633-022-1410-8.

  5. H. Wang, “Addressing Syntax-Based Semantic Complementation: Incorporating Entity and Soft Dependency Constraints into Metonymy Resolution”, Scientific Figure on ResearchGate. Available from: https://www.researchgate.net/figure/Attention-matrix-visualization-a-weights-in-BERT-Encoding-Unit-Entity-BERT-b_fig5_359215965 [accessed 24 Sep, 2023]

  6. A. Krizhevsky, et. al. “ImageNet Classification with Deep Convolutional Neural Networks,” NIPS 2012. 

  7. C. Sun, et. al. “Revisiting Unreasonable Effectiveness of Data in Deep Learning Era,” Google Research, ICCV 2017.

相关文章:

  • [python] 类
  • 李国杰院士 “七问” DeepSeek:深度剖析 AI 发展新态势
  • Gin框架从入门到实战:核心用法与最佳实践
  • 深入探索像ChatGPT这样的大语言模型
  • FastGPT 引申:常见 Rerank 实现方案
  • Unity打包到webgl鼠标图标大小不正确
  • leetcode 0018 四数之和-medium
  • 【linux】文件与目录命令 - uniq
  • SpringBoot接入DeepSeek(硅基流动版)+ 前端页面调试(WebSocket连接模式)
  • DELL EMC Unity存储如何让控制器进入service mode和退出service mode
  • SQL进阶技巧:上课时长计算
  • 【C++】模板的改进
  • D3.js-简单入门1
  • Transformer学习
  • 基于模糊PID控制的供热控制系统设计Simulink仿真
  • FPGA学习(一)——DE2-115开发板编程入级
  • 【mysql查询】
  • 高频 SQL 50 题(基础版)_1341. 电影评分
  • Leetcode 二叉搜索树迭代器
  • MWC 2025|紫光展锐联手美格智能发布5G通信模组SRM812
  • 怀来建设银行网站/湖南seo优化首选
  • 网站logo设计标准/电商网站平台搭建
  • go搭建网站/免费网站入口在哪
  • 做app模板网站有哪些内容/2021年网络营销案例
  • 网站的网页设计毕业设计/重庆专业做网站公司
  • 长春宣传片拍摄/厦门seo网络优化公司