图像也能像文本一样用Transformer!


📖阅读时长:19分钟

🕙发布时间:2025-02-14

近日热文:全网最全的神经网络数学原理(代码和公式)直观解释
欢迎关注知乎和公众号的专栏内容
LLM架构专栏
知乎LLM专栏
知乎【柏企
公众号【柏企科技说】【柏企阅文

受Transformer在自然语言处理(NLP)领域缩放成功的启发,本文的思路是将标准的Transformer直接应用于图像,尽可能少做修改。为此,我们将图像分割成多个补丁(patches),并把这些补丁的线性嵌入序列作为Transformer的输入。在NLP应用中,图像补丁的处理方式与标记(单词)相同。我们以监督学习的方式在图像分类任务上训练模型。

标准的Transformer接收1D的标记嵌入序列作为输入。为了处理2D图像,我们需要对图像进行重塑:

将图像重塑为扁平的2D补丁序列。其中$(H, W)$是原始图像的分辨率,$C$是通道数,$(P, P)$是每个图像补丁的分辨率,而$N=\frac{H\times W}{P^2}$是生成的补丁数量,这个数量同时也作为Transformer的有效输入序列长度。

Transformer在所有层中都使用固定的潜在向量大小$D$,所以我们将补丁展平,并通过可训练的线性投影映射到$D$维。我们把这个投影的输出称为补丁嵌入。

类似于BERT中的[class]标记,我们在嵌入补丁序列的前面添加一个可学习的嵌入,它在Transformer编码器输出端的状态将作为图像表示$y$。

为了保留位置信息,我们将位置嵌入添加到补丁嵌入中。我们使用标准的可学习1D位置嵌入,因为使用更高级的2D感知位置嵌入并没有带来显著的性能提升。最终得到的嵌入向量序列将作为编码器的输入。

Transformer编码器由多头自注意力层和多层感知机(MLP)块交替组成。在每个块之前应用层归一化(LayerNorm),在每个块之后使用残差连接。MLP包含两层,激活函数为GELU。

训练

在中等规模的数据集(如ImageNet)上进行训练时,如果没有强正则化,这些模型的准确率会比类似规模的ResNet低几个百分点。这个看似令人沮丧的结果其实在意料之中:Transformer缺乏卷积神经网络(CNNs)固有的一些归纳偏差,比如平移等变性和局部性,因此在数据量不足的情况下训练时,泛化能力不佳。

然而,如果在更大的数据集(1400万 - 3亿张图像)上训练模型,情况就会有所不同。我们发现大规模训练的效果优于归纳偏差。视觉Transformer(ViT)在经过足够规模的预训练,并迁移到数据点较少的任务上时,能取得优异的成绩。当在公开的ImageNet-21k数据集或内部的JFT-300M数据集上进行预训练时,ViT在多个图像识别基准测试中达到或超越了当前最先进的水平。

论文

《An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale》:2010.11929

代码实现

Masked Autoencoder — Vision Transformer
## 推荐阅读
1. DeepSeek-R1的顿悟时刻是如何出现的? 背后的数学原理
2. 微调 DeepSeek LLM:使用监督微调(SFT)与 Hugging Face 数据
3. 使用 DeepSeek-R1 等推理模型将 RAG 转换为 RAT
4. DeepSeek R1:了解GRPO和多阶段训练
5. 深度探索:DeepSeek-R1 如何从零开始训练
6. DeepSeek 发布 Janus Pro 7B 多模态模型,免费又强大!

本文由mdnice多平台发布


柏企科技圈
15 声望4 粉丝