ViT论文解读
ViT论文解读
本文主要记录Yi Zhu大佬对于ICLR 2021的一篇论文精读
AN IMAGE IS WORTH 16x16 WORDS: TRANSFORMERS FOR IMAGE RECOGNITION AT SCALE
论文链接
标题部分
AN IMAGE IS WORTH 16x16 WORDS: TRANSFORMERS FOR IMAGE RECOGNITION AT SCALE
一张图片等价于很多16X16大小的单词
此处所指的等价关系是指将图像划分为许多大小一致的Patch块,在这种划分下每个Patch块的具体尺寸被定义为16×16像素。因此整个图像可被分解为由多个这样的Patch块构成

摘要
作者探讨了Transformer在自然语言处理领域的显著成效,并指出在计算机视觉领域的应用仍显局限性。研究者们的主要探索方向包括两类方法:一类是将Transformer中的注意力机制与卷积神经网络整合运用;另一类则是采用将卷积操作替换成注意力机制的方式展开研究。值得注意的是,在整体架构上这些研究均未偏离经典的卷积神经网络框架。
研究者在文章中表明了Transformer架构在完全脱离卷积结构的情况下依然表现出色。他们进一步指出,在仅由一个纯粹的Transformer模型构成的情况下可以直接施加到图像块上,并且这种架构在大规模数据集上的性能表现远超基于传统卷积神经网络的结果。
引言
在研究中指出自注意力机制网络已经成为现代NLP领域的核心模型之一。目前主要采用的方法是在大规模数据集上进行预训练,并结合特定领域的小规模微调策略。基于其高效的计算能力和强大的扩展能力,在当前技术条件下已经实现了拥有超过100亿参数的模型训练。然而随着模型规模和数据量的持续增长,在Transformer领域尚未出现饱和现象这一显著特征表明其潜在的发展空间依然广阔。
这里用一个翻译任务简单介绍一下Transformer

由于在线执行自注意力机制时,各序列元素之间的相互作用需要逐一计算其关联性,在这种情况下计算复杂度将与序列长度呈现平方增长的趋势。基于当前计算能力限制,在现有的技术条件下所能处理的最大有效序列长度通常在几百到几千个元素范围内可见。具体而言,在现有的计算能力下所能处理的最大有效序列长度大约在几百到几千个左右。例如,在BERT模型中使用的序列长度为512。
我们现在要将Transformer技术应用于视觉领域的研究,在这一过程中遇到了第一个重大技术挑战:如何有效地将二维图像转化为一维序列形式的数据表示方法。最初的想法是将二维图像中的每个像素依次排列并连接起来形成一个一维序列数据结构,并通过这种方式实现有效的特征提取与处理过程。如图所示的例子展示了这种转换的具体实现方式

这样的想法具有良好的潜力,在实际应用场景中通常情况下,在图像处理任务中使用的图像尺寸为512\times512像素级别进行计算较为常见。然而,在这种设计下将每个像素视为序列中的独立元素进行处理,则会导致生成序列的实际长度达到513\times513= 513×513= 513×513= 513×513= 513×513= 513×具体数值需根据实际情况计算得到该序列的实际长度为 (此处可增加具体数值) 等细节问题仍需进一步探讨和优化考虑
在视觉领域中,卷积神经网络仍然占据主导地位(例如AlexNet和ResNet等模型)。进一步研究表明,由于序列长度的问题限制了Transformer直接应用于图像处理(例如,在Res50模型中得到的特征图尺寸为14×14),因此提出了一种方法,在卷积操作后对特征图进行Transformer处理。然而进一步分析表明,在大规模图像识别任务中该模型表现不佳。
作者提出的方法是将一张尺寸为[公式]像素的照片划分为[公式]块的方式,并按每块大小[公式]进行切割。通过这种方式计算出宽度[公式]等于[计算结果]以及高度[公式]等于[计算结果];因此整张照片会被转变为一个长度为[计算结果] \times [计算结果] = [总长度]的一维序列。这一长度对于Transformer架构来说是一个可处理的数据量范围。并采用有监督学习方法进行模型训练。
在引言的最后一段中作者指出ViT模型在中小型数据集(如ImageNet)上的效果与ResNet相比是较弱的这一观点值得注意这是因为Transformer相较于卷积神经网络缺乏某些特定的能力即不具备一些卷积神经网络特有的归纳先验能力这种差异源于Transformer完全依赖自身学习而无需依赖预先设定的归纳偏置从卷积神经网络的角度来看其通过滑动窗口的方式对图像进行特征提取因此能够假设相邻区域具有相关性这种特性在经过卷积和平移操作后不会因先后顺序而影响结果然而对于Transformer由于缺乏这种先验知识它必须完全依赖于自身的学习过程因此在较大规模的数据集中其表现与ResNet较为接近同时这也体现了Transformer模型较高的稳定性
Method

如上图所示,ViT的工作流程如下:首先将图片划分为n个连续的patch块,在示例中展示了9个这样的patch块划分方案;随后将这些Patch块依次排列形成一个序列,并对其进行特征提取操作以获取图像嵌入表示;在此过程中对每个Patch单元施加位置编码信息以增强序列中的位置感知能力;在序列处理过程中,在最开始的位置插入一个特殊标识符"cls"来标记序列起始点;随后将该带有起始标识符的序列输入到Transformer架构中进行多层交互学习;经过Transformer模块后通过MLP Head结构完成通用分类任务;整个过程均基于交叉熵损失函数进行模型优化训练
在Transformer内部机制中,请注意以下步骤:嵌入后的Patch序列首先经过 laynorm 层进行规范化处理;接着执行 Multi-Head Self-Attention 操作以捕获复杂的特征关联关系;随后再次引入 laynorm 层以稳定各头注意力输出并减少梯度消失问题;最后通过全连接层(MLP)进一步提升模型表达能力并对输出结果进行标准化处理
预处理操作:
假设输入的图像尺寸为:224 \times 224 \times 3
分割后得到n = \frac{224^2}{16^2} = 196个patch块
因此原始图像被划分为196个patch块, 每个patch块具有维度16 \times 16 \times 3 = 768
在此基础上, 经过全连接层(768, D)处理后, 得到长度为197 \times 768的token序列
随后对序列中的每个元素添加位置编码信息, 使用求和操作进行整合后, 序列格式仍保持为197 \times 768
至此图片预处理操作已完成
进入模型:
首先序列输入laynorm层后进行处理,在经过该层运算后输出结果的形状维持在197×768。
随后将进入多头自注意力机制,在本文设定中使用了12个注意力头,在这一过程中Q、K、V矩阵的维度设置为197×64,并且每个头拥有独立的参数化操作。
处理后输出的空间维度恢复至原始形状即为197×768。
接着进入下一个laynorm层并进行前馈网络(MLP)计算。
前馈网络(MLP)将输入的空间维度放大四倍达到197×3072,并通过线性变换将其压缩回原始空间维数完成一次完整的前馈计算流程。
完成一次完整的前馈计算流程后即可输出结果。
因此经过L个Transformer block的信息传递路径实现了整个Transformer编码器模块的功能。
具体公式:

实验结果
使用的数据集为ImageNet-1K




结论
研究者采用NLP领域中标准的Transformer架构来解决计算机视觉问题,在方法论上与以往仅依赖自注意力机制的研究不同的是,在本文中我们避免了对图像归纳偏置的学习依赖,并采取了一种全新的思路:即将图像划分为小块(patch)后输入到模型中进行处理。这种设计使得学习者无需深入掌握计算机视觉领域的复杂理论即可理解其工作原理:将图像视为一个序列数据进行处理既直观又易于操作。此外,在结合大规模数据集进行优化时实验结果表明该方法具有良好的性能表现
