**视觉Transformer(Vision Transformer,ViT)**是一种将Transformer架构应用于计算机视觉的深度学习架构。它不再主要通过卷积层处理图像,而是将图像块转换为向量表示序列,再使用基于注意力的网络层进行处理。这一设计最初用于图像分类,也为学习可迁移的视觉表征提供了基础。“视觉Transformer”既指最初的ViT架构,也泛指相关的、基于Transformer的视觉模型。(research.google)
起源与发展
最初的Transformer于2017年提出,用于自然语言处理。其基于注意力的设计,无需循环层或卷积层即可处理序列。ViT将其编码器改用于图像识别,在改变输入表示方式的同时,保留了序列处理架构的大部分结构。(arxiv.org)
Google Research的Alexey Dosovitskiy及其同事撰写的论文《一幅图像相当于16×16个词:用于大规模图像识别的Transformer》(An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale)于2020年10月22日首次提交,并于2021年在ICLR上发表。论文表明,在预训练规模足够大的情况下,采用相对标准的Transformer处理图像块,可以达到或超过性能强劲的卷积神经网络基线模型。此前已有研究探索视觉注意力和基于图像块的Transformer;ViT的贡献尤其体现在大规模训练和迁移方面。(doi.org)
图像表示
ViT将图像划分为大小固定、互不重叠的正方形图像块。每个图像块的像素值被展平,并通过学习得到的线性映射投影到相同维度的嵌入空间,从而生成输入Transformer编码器的序列。对于高度为 、宽度为 、图像块边长为 的图像,假设高和宽均可被图像块边长整除,图像块数量为
例如,一幅 像素的图像划分为 像素的图像块后,会生成196个图像块标记。这些标记表示的是图像区域,而非语言中的词。(research.google)
模型会加入学习得到的位置编码,以保留图像块的位置信息。原始模型还在序列开头添加一个可训练的分类标记。序列处理完成后,该标记的表示被送入预测头。官方实现提供了预训练模型,以及将这些模型适配到其他数据集的代码,展示了ViT作为可复用图像编码器的用途,而不只是作为固定的分类器。(github.com)
编码器与注意力
每个编码器块将多头注意力形式的自注意力与前馈多层感知机相结合。原始ViT在每个子层之前应用层归一化,并为这两个子层分别设置残差连接。其前馈部分包含两个线性层,中间使用高斯误差线性单元作为激活函数。与分层特征金字塔不同,原始编码器在各层中保持标记嵌入维度不变。(arxiv.org)
在自注意力中,标记表示被投影为查询、键和值。对于单个注意力头,其运算为
其中, 为键向量的维度。Softmax函数将相似度分数转换为权重,用于对值向量进行加权组合。多个注意力头在不同的、学习得到的表示空间中执行这一运算。因此,一个图像块在单个注意力层内就能融合远处图像块的信息,而不必完全依赖连续的局部操作。(arxiv.org)
训练与数据效率
早期ViT实验侧重于先在大型图像集合上进行监督学习,再适配到规模较小的识别基准。与CNN相比,原始架构内置的局部性和平移等变性假设更少。因此,其结果高度依赖训练数据的数量:大规模预训练能够提升性能,而在较小数据集上训练且未采用较强正则化时,其竞争力可能较弱。这是针对特定训练条件的经验性观察,并不意味着所有视觉Transformer都必须满足同样的要求。(research.google)
数据高效图像Transformer(Data-efficient Image Transformers,DeiT)证明,仅使用ImageNet 数据集、不借助外部图像数据,也能训练出具有竞争力的模型。其训练流程采用了数据增强和正则化。另一项贡献是基于标记的知识蒸馏:蒸馏标记使学生Transformer能够向教师模型学习,教师模型也可以是卷积网络。DeiT表明,训练方案的设计能够显著降低模型对超大规模预训练数据集的依赖。(proceedings.mlr.press)
ViT也支持自监督学习。**掩码自编码器(Masked Autoencoders,MAE)**随机遮蔽大比例的图像块,并训练编码器—解码器系统重建缺失的像素。编码器仅处理可见的图像块,轻量级解码器则负责重建。预训练完成后,可以丢弃解码器,并通过微调适配编码器。这使视觉表征的学习与人工类别标签的获取相分离。(arxiv.org)
计算特性与变体
全局注意力需要计算标记之间的两两交互,其计算复杂性随标记数量呈二次增长。在嵌入维度固定的情况下,减小图像块尺寸或提高图像分辨率,都会显著增加注意力计算的开销。常规实现还需要存储大型注意力矩阵。FlashAttention通过分块执行精确的注意力计算来减少内存访问量,但并未消除稠密注意力底层的二次算术运算量。(arxiv.org)
Swin Transformer从另一个角度提升效率:它将注意力限制在局部窗口内,并在相邻的网络块之间移动这些窗口。图像块合并操作构建出分层、多尺度的表示。在窗口大小固定时,其注意力计算量随图像大小呈线性增长。这种结构适用于目标检测和语义分割等密集预测任务;这些任务需要具有空间组织结构的特征,而不只是单个图像级分类输出。(arxiv.org)
架构、数据集规模和计算预算相互影响,共同决定模型性能。有关ViT规模扩展的研究考察了这些关系,并通过调整训练方法和架构来提高准确率、改善内存使用。因此,模型之间的比较取决于其预训练数据、图像分辨率、训练流程和评估设置,而不只是取决于模型使用注意力还是卷积。(research.google)