大规模数据集对自监督预训练是必要的吗?Meta AI 认为,小数据集也能自监督预训练,效果还不错。
目前,计算机视觉神经网络被大量参数化:它们通常有数千万或数亿个参数,这是它们成功利用大型图像集合 (如 ImageNet) 的关键。然而,这些高容量模型往往会在小型(包含数十万张图像)甚至中型数据集上过度拟合。因此,有研究者指出在 2014 年:学习 CNN 的过程相当于估计模型数百万个参数,这需要大量的带标注的数据。
当今应对数据匮乏问题的主流学习范式是,即先在大型数据集(如 Imagenet )上对模型进行预训练,之后基于特定的任务以较少的数据集微调模型。这一训练过程通常优于从头开始训练(例如,从头随机初始化参数)。
这种学习范式在许多任务中取得了 SOTA 性能,例如检测、分割、动作识别等。尽管这种方法取得了成功,但我们很难将这种大规模标签数据集提供的好处与预训练范式的局限性区分开来。除此以外,在一个数据集上预训练模型并在另一个数据集上对其进行微调会引入差异。
来自 Meta AI 等机构的研究者,考虑了一个仅利用目标任务数据的自监督预训练场景。所用数据集包括如 Stanford Cars、Sketch 或 COCO,它们的数量级小于 Imagenet。
该研究表明,本文介绍的去噪自编码器(如 BEiT 或其变体),对预训练数据的类型和大小更具有鲁棒性。与来自 ImageNet 预训练相比,该研究获得了具有竞争力的性能。在 COCO 上,当仅使用 COCO 图像进行预训练时,在检测和实例分割任务上,性能超过了监督 ImageNet 预训练。
论文地址:https://arxiv.org/pdf/2112.10740.pdf
论文介绍
本文研究了图像的数量及其性质如何影响自监督模型的质量。在这个初步分析中,该研究将 BEiT 和 SplitMask(在第 4 节中的变体)分别作为去噪自编码器和联合嵌入方法 DINO(Facebook 发布的非监督学习) 的代表。
SplitMask 是一种基于视觉 transformer 的去噪自动编码器变体,方法概述如图 4 所示:
SplitMask 架构
SplitMask
SplitMask 基于三个步骤完成:分解(split)、修复(inpaint)和匹配。与标准视觉 transformer 一样,图像首先被分解为 16×16 的 patch,之后 patch 又被分成两个不相交的子集 A 和 B。接下来,研究者使用子集 A 的 patch 表示和浅层解码器,来修复子集 B 的 patch,反之亦然。最后,通过对每个分支对应的解码器输出的 patch 表示进行平均池化,得到全局图像描述符。之后研究者尝试将从子集 A 获得的图像全局描述符与从子集 B 获得的图像全局描述符相匹配。
编码器 - 解码器架构
SplitMask 实现 pipeline 依赖于编码器 - 解码器架构。模型的编码器是一个标准的视觉 transformer,具有绝对位置嵌入。与 BEiT 方法相反,该编码器不处理掩码 token(masked tokens)表示,而只处理观察到的 token 。因此,图像被划分为线性嵌入 patch,并将位置嵌入添加到这些表示中。这些表示分为两个子集 A 和 B,由标准 transformer 层独立处理。
全局对比损失
除了在 patch 级别计算 MIM 损失之外,该研究还在图像级别使用对比损失。为此,该研究对解码器的所有输出表示应用平均池化操作。每个图像获得两个表示 x_a 和 x_b,对应于观察到的 patch 子集 A 和 B。InfoNCE 损失 [59] 应用于这些表示:
实验
首先,实验研究了计算机视觉模型在各种数据集上的预训练和微调,详见表 3,表中列出了数据集名称、训练和测试数据分布等信息。
预测任务
首先,该研究使用 Mask R-CNN pipeline [8] 在 COCO 目标检测和实例分割数据集上对 SplitMask 进行评估,表 4 为评估结果。
由结果可得,在相同的 BEiT 模型上,单独在 COCO 数据集上预训练的模型与在 ImageNet 上预训练模型相比,前者下游任务性能更好。例如,当使用基于 ViT 的主干时,在 COCO 上而不是 ImageNet 上进行预训练会可使 box AP 提升 +0.4。
表 6 为数字分类数据集实证评估结果:
表 7 展示了 SplitMask 方法使用 ViT-S 和 ViT-B 主干以及 300 个 epoch 的预训练与其他最近的基于 Transformer 的自监督学习方法相比的性能: