【第21篇】屏蔽自编码器是可扩展的视觉学习器

这种对数据的需求已经通过自监督预训练在自然语言处理 (NLP) 中成功解决。 基于 GPT [40, 41, 4] 中的自回归语言建模和 BERT [14] 中的掩码自动编码的解决方案在概念上很简单:它们移除了一部分数据并学习预测移除的内容。 这些方法现在可以训练包含超过一千亿个参数的可泛化 NLP 模型 [4]。

掩码自动编码器的思想,一种更通用的去噪自动编码器 [48] 的形式,很自然,也适用于计算机视觉。 事实上,在 BERT 之前,与视觉密切相关的研究 [49, 39]。 然而,尽管随着 BERT 的成功,人们对这个想法产生了浓厚的兴趣,但视觉中自动编码方法的进展落后于 NLP。 我们问:是什么使视觉和语言之间的掩码自动编码不同? 我们尝试从以下几个角度来回答这个问题:

(i) 直到最近,架构还是不同的。 在视觉方面,卷积网络 [29] 在过去十年中占主导地位 [28]。 卷积通常在规则网格上运行,将诸如掩码标记 [14] 或位置嵌入 [47] 之类的“指标”集成到卷积网络中并非易事。 然而,随着 Vision Transformers (ViT) [16] 的引入,这种架构差距已经得到解决,不应再成为障碍。

(ii) 语言和视觉的信息密度不同。 语言是人类生成的具有高度语义和信息密集度的信号。 当训练一个模型来预测每个句子的几个遗漏单词时,这个任务似乎会导致复杂的语言理解。 相反,图像是具有大量空间冗余的自然信号——例如,可以从相邻的补丁中恢复丢失的补丁,而对零件、对象和场景的高级理解很少。 为了克服这种差异并鼓励学习有用的特征,我们展示了一个简单的策略在计算机视觉中效果很好:屏蔽了很大一部分的随机补丁。 这种策略在很大程度上减少了冗余并创建了一项具有挑战性的自我监督任务,需要超越低级图像统计的整体理解。 要对我们的重建任务有一个定性的认识,请参见图 2-4。

image-20211126100805520

image-20211126100821017

(iii) 自动编码器的解码器将潜在表示映射回输入,在重建文本和图像之间扮演不同的角色。 在视觉中,解码器重建像素,因此其输出的语义级别低于普通识别任务。 这与语言相反,在语言中,解码器预测包含丰富语义信息的缺失词。 虽然在 BERT 中,解码器可能很简单(MLP)[14],但我们发现对于图像,解码器设计在确定学习到的潜在表示的语义级别方面起着关键作用。

在此分析的推动下,我们提出了一种简单、有效且可扩展的掩码自编码器 (MAE) 形式,用于视觉表示学习。我们的 MAE 从输入图像中屏蔽了随机补丁,并在像素空间中重建丢失的补丁。它具有非对称编码器解码器设计。我们的编码器只对可见的补丁子集(没有掩码标记)进行操作,我们的解码器是轻量级的,可以从潜在表示和掩码标记中重建输入(图 1)。在我们的非对称编码器-解码器中将掩码标记转移到小型解码器会导致计算量大幅减少。在这种设计下,非常高的掩蔽率(例如 75%)可以实现双赢:它优化了准确性,同时允许编码器仅处理一小部分(例如 25%)的补丁。这可以将整体预训练时间减少 3 倍或更多,同样减少内存消耗,使我们能够轻松地将 MAE 扩展到大型模型。

我们的 MAE 学习了非常高容量的模型,可以很好地泛化。通过 MAE 预训练,我们可以在 ImageNet-1K 上训练 ViT-Large/Huge [16] 等数据饥渴模型,并提高泛化性能。使用普通的 ViT-Huge 模型,我们在 ImageNet-1K 上微调时达到了 87.8% 的准确率。这优于之前仅使用 ImageNet-1K 数据的所有结果。我们还评估了对象检测、实例分割和语义分割的迁移学习。在这些任务中,我们的预训练比其监督预训练获得了更好的结果,更重要的是,我们通过扩大模型观察到了显着的收益。这些观察结果与 NLP [14、40、41、4] 中自监督预训练中所见证的观察结果一致,我们希望它们将使我们的领域能够探索类似的轨迹。

image-20211126101553594

2、相关工作

=================================================================

掩码语言建模及其自回归对应物,例如 BERT [14] 和 GPT [40, 41, 4],是非常成功的 NLP 预训练方法。 这些方法保留一部分输入序列并训练模型来预测缺失的内容。 这些方法已被证明具有出色的扩展性 [4],并且大量证据表明,这些预训练的表示可以很好地推广到各种下游任务。

自编码是学习表征的经典方法。 它有一个将输入映射到潜在表示的编码器和一个重构输入的解码器。 例如,PCA 和 k-means 是自动编码器 [25]。 去噪自动编码器 (DAE) [48] 是一类自动编码器,它破坏输入信号并学习重建原始的、未破坏的信号。 一系列方法可以被认为是不同损坏下的广义 DAE,例如,屏蔽像素 [49, 39, 6] 或去除颜色通道 [59]。 我们的 MAE 是一种去噪自动编码形式,但在许多方面与经典 DAE 不同。

掩码图像编码方法从被掩码损坏的图像中学习表示。 [49] 的开创性工作将掩蔽作为 DAE 中的一种噪声类型。 上下文编码器 [39] 使用卷积网络修复大的缺失区域。 受 NLP 成功的启发,最近相关的方法 [6, 16, 2] 基于 Transformers [47]。 iGPT [6] 对像素序列进行操作并预测未知像素。 ViT 论文 [16] 研究了用于自监督学习的掩码补丁预测。 最近,BEiT [2] 建议预测离散令牌 [37, 43]。

自监督学习方法对计算机视觉产生了浓厚的兴趣,通常侧重于不同的预训练任务 [15, 50, 35, 59, 38, 17]。 最近,对比学习 [3, 21] 很流行,例如 [51, 36, 22, 7],它对两个或多个视图之间的图像相似性和不相似性(或仅相似性 [20, 8])进行建模。 对比和相关方法强烈依赖于数据增强 [7, 20, 8]。 自动编码追求概念上不同的方向,它表现出我们将要展示的不同行为。

3、方法

===============================================================

我们的掩码自编码器 (MAE) 是一种简单的自编码方法,可以在给定部分观察的情况下重建原始信号。 与所有自动编码器一样,我们的方法有一个编码器,将观察到的信号映射到潜在表示,以及一个解码器,从潜在表示重建原始信号。 与经典的自动编码器不同,我们采用非对称设计,允许编码器仅对部分观察到的信号进行操作(没有掩码标记)和一个轻量级解码器,从潜在表示和掩码标记重建完整信号。 图 1 说明了这个想法,接下来介绍。

掩码。 遵循 ViT [16],我们将图像划分为规则的非重叠补丁。 然后我们对补丁的子集进行采样并屏蔽(即删除)剩余的补丁。 我们的采样策略很简单:我们按照均匀分布对随机补丁进行采样,无需替换。 我们简单地将其称为“随机抽样”。

具有高掩蔽率(即移除补丁的比率)的随机采样在很大程度上消除了冗余,从而创建了一项无法通过从可见相邻补丁外推来轻松解决的任务(见图 2-4)。 均匀分布可防止潜在的中心偏差(即在图像中心附近有更多被屏蔽的补丁)。 最后,高度稀疏的输入为设计高效编码器创造了机会,接下来介绍。

MAE 编码器。 我们的编码器是 ViT [16],但仅应用于可见的、未屏蔽的补丁。 就像在标准 ViT 中一样,我们的编码器通过添加位置嵌入的线性投影嵌入补丁,然后通过一系列 Transformer 块处理结果集。 然而,我们的编码器只对整个集合的一小部分(例如 25%)进行操作。 被屏蔽的补丁被移除; 不使用掩码令牌。 这使我们能够仅使用一小部分计算和内存来训练非常大的编码器。 全套由轻量级解码器处理,如下所述。

MAE 解码器。 MAE 解码器的输入是完整的令牌集,包括 (i) 编码的可见补丁和 (ii) 掩码令牌。参见图 1。每个掩码标记 [14] 是一个共享的、学习的向量,表示存在要预测的缺失补丁。我们为这个完整集合中的所有标记添加了位置嵌入;如果没有这个,掩码令牌将没有关于它们在图像中的位置的信息。解码器有另一系列的 Transformer 模块。

MAE 解码器仅在预训练期间用于执行图像重建任务(仅使用编码器生成用于识别的图像表示)。因此,可以以独立于编码器设计的方式灵活地设计解码器架构。我们试验了非常小的解码器,比编码器更窄更浅。例如,与编码器相比,我们的默认解码器每个令牌的计算量小于 10%。通过这种非对称设计,全套令牌仅由轻量级解码器处理,这显着减少了预训练时间。

重建目标。我们的 MAE 通过预测每个掩码补丁的像素值来重建输入。解码器输出中的每个元素都是一个表示补丁的像素值向量。解码器的最后一层是线性投影,其输出通道的数量等于补丁中像素值的数量。解码器的输出被重新整形以形成重建的图像。我们的损失函数计算像素空间中重建图像和原始图像之间的均方误差 (MSE)。我们计算

仅在屏蔽补丁上的损失,类似于 BERT [14]。

我们还研究了一个变体,其重建目标是每个蒙版块的归一化像素值。具体来说,我们计算一个补丁中所有像素的均值和标准差,并使用它们来规范化这个补丁。在我们的实验中,使用归一化像素作为重建目标可以提高表示质量。

简单的实现。我们的 MAE 预训练可以高效实施,重要的是,不需要任何专门的稀疏操作。首先,我们为每个输入补丁生成一个标记(通过线性投影和添加的位置嵌入)。接下来,我们根据掩蔽率随机打乱令牌列表并删除列表的最后一部分。此过程为编码器生成一小部分标记,相当于采样补丁而无需替换。编码后,我们将掩码标记列表附加到编码补丁列表中,并解散这个完整列表(反转随机洗牌操作)以将所有标记与其目标对齐。解码器应用于此完整列表(添加了位置嵌入)。如前所述,不需要稀疏操作。这个简单的实现引入的开销可以忽略不计,因为 shuffle 和 unshuffling 操作很快。

image-20211126103454757

4、 ImageNet 实验

=========================================================================

我们在 ImageNet-1K (IN1K) [13] 训练集上进行自我监督的预训练。 然后我们进行有监督的训练,以通过 (i) 端到端微调或 (ii) 线性探测来评估表示。 我们报告了单个 224×224 裁剪的 top-1 验证精度。 详情见附录 A.1。

基线:ViT-大。 我们在消融研究中使用 ViT-Large (ViT-L/16) [16] 作为主干。 ViT-L 非常大(比 ResNet-50 [24] 大一个数量级)并且容易过拟合。 以下是从头开始训练的 ViT-L 与从我们的基线 MAE 微调的比较:

| scratch, original [16] | scratch, our impl. | baseline MAE |

| — | — | — |

| 76.5 | 82.5 | 84.9 |

我们注意到从头开始训练有监督的 ViT-L 是很重要的,并且需要一个具有强正则化的良好配方(82.5%,参见附录 A.2)。 尽管如此,我们的 MAE 预训练还是有很大的改进。 此处微调仅针对 50 个 epoch(而从头开始 200 个),这意味着微调精度在很大程度上取决于预训练。

4.1、主要属性


我们使用表 1 中的默认设置烧蚀我们的 MAE(见标题)。 观察到几个有趣的特性。

image-20211126104235160

掩蔽比。 图 5 显示了掩蔽比的影响。 最佳比率高得惊人。 75% 的比率对线性探测和微调都有利。 这种行为与 BERT [14] 形成对比,后者的典型掩蔽率为 15%。 我们的掩蔽率也远高于计算机视觉相关工作 [6, 16, 2] 中的掩蔽率(20% 到 50%)。

该模型推断缺失的补丁以产生不同但合理的输出(图 4)。 它使物体和场景的格式塔变得有意义,这不能简单地通过延伸线条或纹理来完成。 我们假设这种类似推理的行为与学习有用的表征有关。

图 5 还显示线性探测和微调结果遵循不同的趋势。 对于线性探测,准确率随着掩蔽率稳步增加,直到最佳点:准确率差距高达 20%(54.6% 对 73.5%)。 对于微调,结果对比率不那么敏感,并且很宽范围的掩蔽比率 (40-80%) 效果很好。 图 5 中的所有微调结果都优于从头开始训练 (82.5%)。

解码器设计。我们的 MAE 解码器可以灵活设计,如表 1a 和 1b 所示。

表 1a 改变了解码器深度(Transformer 块的数量)。足够深的解码器对于线性探测很重要。这可以通过像素重建任务和识别任务之间的差距来解释:自动编码器中的最后几层更专门用于重建,但与识别的相关性较低。一个合理深度的解码器可以解释重建专业化,将潜在表示留在更抽象的层次上。这种设计可使线性探测提高 8%(表 1a,“lin”)。但是,如果使用微调,则可以调整编码器的最后几层以适应识别任务。解码器深度对改进微调的影响较小(表 1a,‘ft’)。

有趣的是,我们的带有单块解码器的 MAE 可以通过微调 (84.8%) 表现得很好。请注意,单个 Transformer 块是将信息从可见标记传播到掩码标记的最低要求。这么小的解码器可以进一步加快训练速度。在表 1b 中,我们研究了解码器宽度(通道数)。我们默认使用 512-d,它在微调和线性探测下表现良好。更窄的解码器也适用于微调。

总的来说,我们默认的 MAE 解码器是轻量级的。 它有 8 个块,宽度为 512-d(表 1 中的灰色)。 与 ViT-L(24 个区块,1024-d)相比,每个代币只有 9% 的 FLOP。 因此,虽然解码器处理所有令牌,但它仍然是整体计算的一小部分。

image-20211126104554336

掩码令牌。我们 MAE 的一个重要设计是跳过编码器中的掩码标记 [M],稍后将其应用到轻量级解码器中。表 1c 研究了这种设计。

如果编码器使用掩码标记,它的性能会更差:在线性探测中其精度下降 14%。在这种情况下,预训练和部署之间存在差距:该编码器在预训练的输入中具有很大一部分掩码标记,这在未损坏的图像中不存在。这种差距可能会降低部署的准确性。通过从编码器中移除掩码标记,我们限制编码器始终看到真实的补丁,从而提高准确性。

此外,通过跳过编码器中的掩码标记,我们大大减少了训练计算。在表 1c 中,我们将整体训练 FLOP 减少了 3.3 倍。这导致我们的实现中 2.8 倍挂钟加速(见表 2)。对于较小的解码器(1 块)、较大的编码器 (ViT-H) 或两者,挂钟加速甚至更大(3.5-4.1 倍)。请注意,对于 75% 的掩蔽率,加速可以大于 4 倍,部分原因是自注意力复杂度是二次的。此外,内存大大减少,可以训练更大的模型或通过大批量训练加快速度。时间和内存效率使我们的 MAE 有利于训练非常大的模型。

image-20211126104819600

重建目标。 我们在表 1d 中比较了不同的重建目标。 到目前为止,我们的结果基于没有(每个补丁)归一化的像素。 使用归一化像素可提高准确性。 这种逐块归一化在局部增强了对比度。 在另一个变体中,我们在补丁空间中执行 PCA 并使用最大的 PCA 系数(此处为 96)作为目标。 这样做会降低准确性。 两个实验都表明高频分量在我们的方法中很有用。

我们还比较了预测令牌的 MAE 变体,即 BEiT [2] 中使用的目标。特别是对于这个变体,我们使用 DALLE 预训练的 dVAE [43] 作为标记器,遵循 [2]。这里 MAE 解码器使用交叉熵损失预测令牌索引。这种标记化与非标准化像素相比将微调精度提高了 0.4%,但与标准化像素相比没有优势。它还降低了线性探测精度。在第 5 节中,我们进一步表明在转移学习中不需要标记化。

我们基于像素的 MAE 比标记化简单得多。 dVAE 分词器需要一个额外的预训练阶段,这可能取决于额外的数据(250M 图像 [43])。 dVAE 编码器是一个大型卷积网络(ViT-L 的 40% FLOPs)并增加了非平凡的开销。使用像素不会遇到这些问题。

数据增强。表 1e 研究了数据增强对我们的 MAE 预训练的影响。我们的 MAE 使用仅裁剪增强效果很好,无论是固定大小还是随机大小(两者都具有随机水平翻转)。添加颜色抖动会降低结果,因此我们不会在其他实验中使用它。

image-20211126105046087

令人惊讶的是,即使没有使用数据增强(只有中心裁剪,没有翻转),我们的 MAE 也表现得很好。这一特性与对比学习和相关方法 [51, 22, 7, 20] 截然不同,后者严重依赖于数据增强。据观察 [20],对于 BYOL [20] 和 SimCLR [7],使用仅裁剪增强分别将准确度降低了 13% 和 28%。此外,没有证据表明对比学习可以在没有增强的情况下工作:图像的两个视图是相同的,可以很容易地满足一个简单的解决方案。

在 MAE 中,数据增强的作用主要是通过随机掩码来实现的(下一个消融)。每次迭代的掩码都不同,因此无论数据增强如何,它们都会生成新的训练样本。掩蔽使借口任务变得困难,并且需要较少的增强来规范训练。

掩码采样策略。在表 1f 中,我们比较了不同的掩码采样策略,如图 6 所示。

[2] 中提出的逐块屏蔽策略倾向于移除大块(图 6 中)。我们的带块屏蔽的 MAE 在 50% 的比率下工作得相当好,但在 75% 的比率下性能下降。这项任务比随机抽样更难,因为观察到更高的训练损失。重建也更模糊。

我们还研究了网格采样,它定期保留每四个补丁中的一个(图 6 右)。这是一项更简单的任务,并且具有更低的训练损失。重建更加清晰。但是,表示质量较低。

简单随机抽样最适合我们的 MAE。它允许更高的掩蔽率,这提供了更大的加速优势,同时还享有良好的准确性。

训练进度。 到目前为止,我们的消融是基于 800 epoch 的预训练。 图 7 显示了训练计划长度的影响。 随着训练时间的延长,准确率稳步提高。 事实上,即使在 1600 个时期,我们也没有观察到线性探测精度的饱和。 这种行为与对比学习方法不同,例如,MoCo v3 [9] 在 ViT-L 的 300 个 epoch 时饱和。 请注意,MAE 编码器每个 epoch 只能看到 25% 的补丁,而在对比学习中,编码器每个 epoch 看到 200%(twocrop)甚至更多(multi-crop)补丁。

(1)Python所有方向的学习路线(新版)

这是我花了几天的时间去把Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。

最近我才对这些路线做了一下新的更新,知识体系更全面了。

在这里插入图片描述

(2)Python学习视频

包含了Python入门、爬虫、数据分析和web开发的学习视频,总共100多个,虽然没有那么全面,但是对于入门来说是没问题的,学完这些之后,你可以按照我上面的学习路线去网上找其他的知识资源进行进阶。

在这里插入图片描述

(3)100多个练手项目

我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了,只是里面的项目比较多,水平也是参差不齐,大家可以挑自己能做的项目去练练。

在这里插入图片描述

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里无偿获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 8
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值