SLIP: Self-supervision meets Language-Image Pre-training
SLIP:自监督与视觉语言预训练相结合
Paper:2112.12750.pdf (arxiv.org)
Github: https://github.com/facebookresearch/SLIP
本篇 SLIP: Self-supervision meets Language-Image Pre-training
- 首先是对SLIP文章的细节精简理解
- 然后附上原文精读
文章目录
1.背景动机
在视觉领域的视觉识别中,自监督是可用的,自训练比监督训练效果更好:
在计算机视觉领域,图像分类的监督学习和无标记图像的自监督学习是representation学习的两种主要方法。。大多数好的结果仍然依赖于有监督预训练,而使用海量数据去训练仍然是提高下游性能的可靠方法之一。
研究自监督学习的动机是希望取代监督预训练和对人工标注的依赖。自监督预训练在小型数据集上的表现已经超过监督学习了,但直到最近随着对比方法的发展,它才开始在 ImageNet 等大型数据集上提高性能。最近的研究表明,在具有挑战性的视觉识别任务中,自监督预训练比监督学习更有效。
CLIP所使用的语言监督形式:
CLIP采用了视觉表征学习的语言监督,即只需要图像和自由形式的文字标题,通过标题和图像之间的对比学习,学习丰富的视觉表征
SLIP:结合语言监督和自监督(图像自监督)的多任务框架:
SLIP探讨了图像自监督学习是否能应用到语言监督领域,并研究了CLIP 形式的语言监督是否也能从图像自监督中获益。因为这两个目标都要求模型编码关于图像的定性不同且相互冲突的信息,从而导致干扰,因此,这两个训练目标(自监督,语言监督)是否应该同时得到加强并不确定。为了探讨这种问题:
提出了SLIP:这是一个结合了语言监督和自监督的多任务框架。最终通过实验也证明了:SLIP 在大多数评估中都显著提高了性能,说明了图像自监督对视觉语言预训练模型能带来增益。
视觉领域的语言监督—理解,Language supervision:
在视觉领域中,语言监督通常指的是利用自然语言来指导或改进视觉任务的学习和预测能力。这种方法将文本信息与图像数据结合起来,以提高图像理解、图像生成或图像处理任务的性能。例如:
- (Image Captioning):旨在使模型理解图像内容并生成相应的语言描述。通过将图像与对应的文本描述配对进行训练,模型可以学习到图像特征与语言表达之间的对应关系,从而实现自动图像描述的生成。
- (Visual Question Answering, VQA):要求模型根据给定的图像和问题生成相应的答案。语言监督在这里扮演着重要角色,因为问题的表达方式需要与图像内容相对应,而模型需要理解问题的含义以便生成准确的答案。
- (Visual Reasoning):通常需要模型根据图像中的场景和物体关系来解决各种推理问题。语言监督可以用来提供问题或提示,以引导模型进行推理过程。
- (Image Retrieval):语言监督可以用来指导模型根据文本查询来检索与之相关的图像。例如,给定一个文本描述,模型需要找到与之最匹配的图像
视觉领域的自监督学习—理解,Self-supervised learning:
在视觉领域,自监督学习利用图像数据自身的信息进行学习,而无需人工标注的标签。这种方法通过设计自动生成标签或目标,使模型在学习过程中自动生成监督信号,从而实现对图像特征的有效学习。例如:
- 自编码器(Autoencoders):它试图学习将输入数据编码成低维表示,然后再解码回原始数据的映射。在图像领域,自编码器可以通过将图像压缩为低维向量表示,然后重构原始图像来进行训练。
- 图像补全(Image Inpainting):图像补全是一种通过预测图像中缺失部分的内容来学习图像表示的方法。模型被要求根据图像的部分信息来预测缺失的部分,从而迫使其学习到图像中的全局特征和结构。
- 图像旋转预测(Rotation Prediction):模型被要求根据图像的不同旋转角度来预测图像的旋转方向。通过这种方式,模型学习到了图像中的局部和全局特征,并且在不同方向上具有不变性。
- 颜色化(Colorization):颜色化任务要求模型根据图像的灰度版本来预测彩色版本。通过这种任务,模型可以学习到图像中的语义信息和上下文关系,从而提高图像表示的质量。
- 图像重建(Image Reconstruction):在图像重建任务中,模型被要求根据图像的一部分信息来预测原始完整图像。这种方法可以促使模型学习到图像中的局部结构和全局语义信息。
2.Model
CLIP使用的对比学习具体流程:
CLIP 首先用单模态的模型构造图像和文本嵌入向量。然后将这些向量投射到共享的嵌入空间并进行归一化处理。使用这些最终向量计算 InfoNCE 损失,将相应的图像和标题作为正对,将所有不匹配的图像和标题作为负对。
SLIP使用的图像自监督:
基于视图的自监督学习指的是模型被训练来以相似的方式表示同一图像的不同视图或增强,SLIP使用 SimCLR 的改编版作为SLIP中的自监督目标,在训练自监督视觉Transformer的超参数设置上,SLIP遵循 MoCo v3
基于视图的自监督学习:这种方法通过对数据的不同视图或变换进行建模,来学习数据中的固有信息和表示,在基于视图的自监督学习中,通常会使用多个视图或变换来增加数据的多样性和丰富性,同时利用不同视图之间的联系来学习更加具有表征能力的表示。例如,可以通过对图像进行随机剪裁、旋转或颜色变换等操作,生成不同的视图,并要求模型将这些不同视图的表示尽可能靠近,从而促使模型学习到数据的不变性和通用性。
SLIP使用的图像增强:
- 在 CLIP 分支中,SLIP随机调整图像大小,并将其裁剪为原始图像的50%-100%。
- 在自监督分支中,我们使用 MoCo v3的增强功能对两个视图进行采样。
SLIP的模型架构:
图像编码器:SLIP使用ViT-B/16 和 ViT-L/16 架构作为图像编码器,其 FLOPs 和参数与 ResNet-50 相当。
文本编码器,SLIP使用 CLIP 中最小的文本Transformer模型,该模型包含 3800 万个参数,使用字节对编码,标记词汇量为 49K,最大上下文长度为 77。
CLIP目标head:针对 CLIP 目标,SLIP的模型将图像和标题嵌入投射到一个 512 维空间,并分别学习线性投射。
自监督head,使用具有 4096 层隐藏层的 3 层 MLP 投影头,将图像嵌入转化为 256 层输出空间。
CLIP目标和自监督目标计算逻辑:
算法1中概述了用于自监督的 SLIP 与 SimCLR(即 SLIP-SimCLR)。在SLIP的每个前向传递过程中,所有图像都经过同一个编码器。CLIP目标和SSL目标是根据相关的嵌入计算出来的,然后加总成一个单一的标量损失。 自监督目标的比例为 1.0,即不重新缩放,对 SimCLR 来说效果很好。
SLIP 增加了处理图像的数量,导致激活次数增加了约 3 倍。这扩大了模型的内存占用,并减慢了训练过程中的前向传递速度。
算法1解析:
- xi, x1, x2 = crop(img), aug(img), aug(img) - 这里对输入的图像进行了裁剪和增强操作,生成了三个不同的图像视图 xi, x1, x2。(crop:将其裁剪为原始图像的50%-100%,aug:MoCo v3的图像增强)
- yt = tokenize(text) - 这个步骤将输入的文本 text 进行了分词和编码,生成了文本的表示 yt。( CLIP 中最小的文本Transformer模型)
- wi, w1, w2 = fi(xi, x1, x2) - 这里通过一个函数 fi 对图像视图进行处理,生成了三个视图的表示 wi, w1, w2。(使用的是Vit图像编码器,同一个)
- wt = ft(yt) - 通过一个函数 ft 对文本的表示进行处理,生成了文本的表示 wt。
- z1, z2 = hs(w1), hs(w2) - 使用自监督head,使用具有 4096 层隐藏层的 3 层 MLP 投影头,将图像嵌入转化为 256 层输出空间
- zi, zt = hi(wi), ht(wt) - 将图像和标题嵌入投射到一个 512 维空间,并分别学习线性投射。
- loss = c * simclr(z1, z2) + clip(zi, zt) - 最后,计算了一个损失值,包括了基于视图的自监督学习的损失项 simclr(z1, z2) 和基于 CLIP 模型的损失项 clip(zi, zt),其中 c 是一个权重参数。
3.评估结论
- 对于目前使用的最大型视觉Transformer架构,SLIP 仍将比 CLIP 更有优势。
- SLIP 可以继续扩展更大的模型,而 SimCLR 的性能则略有饱和
- CLIP 微调性能不佳的问题可以通过自监督解决
- SLIP 在训练时间更长和模型更大的情况下都能很好地扩展
- 仅靠语言监督来训练特定任务模型的效率很低
- 尽管 BEiT 是本测试中最强的自监督方法,但 SLIP-BEiT 的表现却最差。这可能是由于预训练和部署阶段的输入差异较大
4.原文阅读
Abstract
指出在视觉识别任务中,自训练比监督训练效果更好:
最近的研究表明,在具有挑战性的视觉识别任务中,自监督预训练比监督学习更有效。CLIP 是一种令人兴奋的语言监督学习新方法,在各种基准测试中表现出了良好的性能。
提出的SLIP:将自监督与CLIP相结合:
在这项工作中,我们将探讨自监督学习能否帮助将语言监督用于视觉表征学习。我们介绍了 SLIP,这是一种将自监督学习和 CLIP 预训练相结合的多任务学习框架。
在使用视觉Transformers进行预训练后,我们对表征质量进行了全面评估,并比较了 CLIP 和自监督学习在三种不同设置下的性能:zero-shot迁移、线性分类和端到端微调。在 ImageNet 和其他数据集上,我们发现 SLIP 大幅提高了准确率。我们在不同的模型大小、训练计划和预训练数据集上进行了实验,进一步验证了我们的结果。我们的研究结果表明,SLIP 可实现两全其美的效果:比自我监督(线性准确率+8.1%)和语言监督(zero-shot准确率+5.2%)性能更佳。
1. Introduction
介绍视觉领域前景知识,并说明自监督在视觉领域的可用性:
深度学习最近取得的许多进展都是由预训练强大、通用的表示范式推动的,这些表示可以很好地转移到各种特定应用中。在计算机视觉领域,**图像分类的监督学习和无标记图像的自监督学习是表征学习的两种主要方法。**继 AlexNet之后,研究人员很快意识到,有监督的预训练能产生通用的视觉backbone,可用于许多不同的任务。如今,大多数最先进的结果仍然依赖于有监督的预训练,而扩展到海量数据(如谷歌专有的 JFT 数据集)仍然是提高下游性能的最可靠方法之一。自监督学习是无监督学习的一种形式,首先在语言领域取得了巨大成功,最近在视觉领域也取得了重大进展。研究自监督学习的一个主要动机是希望取代监督预训练及其对劳动密集型人工标注的依赖。事实上,自监督预训练在小型数据集上的表现已经超过监督学习一段时间了,但直到最近随着对比方法的发展,它才开始在 ImageNet 等大型数据集上提高性能。
视觉训练常用数据集:
如今,监督式和自监督式预训练都在很大程度上依赖于 ImageNet(即 ImageNet-1K),这是一个经过高度策划的数据集,具有特殊的特异性和偏差。YFCC100M 数据集于 2015 年发布,目前仍是可公开访问的最大图像集合。迄今为止,表征学习领域还很少使用该数据集。另一方面,包含 1400 万张图像的完整 ImageNet 数据集(即 ImageNet- 22K)因其在训练视觉Transformer模型中的作用而变得非常流行,因为训练视觉Transformer模型需要比 ImageNet-1K 更大的数据量。
为什么未经整理的数据集在表征学习研究中并不常见?
- 未经整理的数据集也缺少标签,而且只要监督预训练对于大多数研究人员来说仍然是更简单、更容易获得的选择。
- 根据冻结特征对 ImageNet 进行分类的标准自监督评估任务会严重影响未在 ImageNet 上预训练的模型的结果。
- 虽然在 ImageNet 上取得的进展令人鼓舞,但并没有强有力的证据表明目前的自监督方法可以很好地扩展到更大的未整合数据集。
介绍CLIP模型,引出CLIP的语言监督:
最近,CLIP引入了一种令人兴奋的表征学习新方法。它重新审视了用于视觉表征学习的语言监督,并将其推向了与标签监督和自监督的竞争中。CLIP 只需要图像和自由形式的文字标题,从而振兴了 YFCC100M 在表征学习中的应用。除了不再需要标签注释外,CLIP 的准确性还能很好地扩展到大型数据集和模型**。CLIP 的最佳结果是在由 4 亿张图片和标题组成的数据集上使用大型模型取得的**,不过在 YFCC100M 的子集上也取得了可喜的结果。CLIP 凭借其灵活的语言引导能力,还能实现许多令人兴奋的新应用。
引出SLIP:结合语言监督和自监督(图像自监督)的多任务框架
在这项工作中,我们探讨了图像自监督学习的势头是否会延续到语言监督领域。特别是,我们研究了 CLIP 形式的语言监督是否也能从图像自监督中获益。我们注意到,这两个训练目标是否应该同时得到加强并不是一目了然的。这两个目标都要求模型编码关于图像的定性不同且相互冲突的信息,从而导致干扰。为了探讨这些问题,我们引入了 SLIP(自我监督与语言图像预训练),这是一个结合了语言监督和自监督的多任务框架。我们在 YFCC100M 的一个子集上预训练了各种 SLIP 模型,并全面评估了三种不同设置下的表示质量:zero-shot迁移、线性分类和端到端微调。我们对 ImageNet 以及其他 25 个分类基准的下游性能进行了评估。此外,我们还在不同的模型大小、训练时间表和预训练数据集上进行了实验,进一步验证了我们的研究结果。我们的研究结果最终表明,SLIP 在大多数评估中都显著提高了性能,这对语言监督中自我监督的普遍实用性来说是一个令人鼓舞的信号。此外,我们还进一步详细分析了我们方法的各个组成部分,例如预训练数据集和数据处理方法的选择。最后,我们将讨论我们的评估结果以及这类方法在伦理和实践方面的局限性。
2. Related Work
语言监督,Language supervision:
早在深度学习出现之前,就有人探索从图像标题中学习视觉表征。DeViSE将图像和文本类别标签联合嵌入一个共享语义空间,使模型能够识别未明确训练的类别。利用 YFCC 数据集进行表征学习的最初尝试包括预测图像中的词袋表征或 n-gram 出现。ICMLM和 VirTex表明,对 COCO 字幕的语言监督产生了有用的视觉呈现。在 CLIP 之前,多模态对比训练为 VirTex增加了对比图像和语言图像损失,从而进一步提高了性能。CLIP因其简单性、规模和强大的结果而迅速赢得了广泛关注。 同时开发的 ALIGN使用了一个更大但噪音更高的未整合数据集,并显示出类似的结果。
自监督学习,Self-supervised learning
早期的自监督学习方法随着数据集规模的扩大而出现了不理想的扩展。 对比学习方法因其简单有效而取得了快速进展。 近期的自监督学习方法还提出了对比目标的多种替代方法,如自馏分或输入重构。
多模式多任务学习,Multi-modal multi-task learning:
MURAL将 ALIGN 扩展到多语言环境,并引入了跨语言目标,以改进多语言图像和文本检索。与此同时,DeCLIP为 CLIP 增加了几个额外的训练目标和更多内部收集的数据,以提高数据效率。
3. SLIP Framework
我们介绍的 SLIP是一种结合语言监督和图像自监督的框架,用于学习无类别标签的视觉表征。在预训练过程中,语言监督和图像自监督分支会分别构建每张输入图像的视图,然后通过共享的图像编码器输入
。通过训练,图像编码器学会了以有语义的方式表示视觉输入
。然后,我们可以通过评估这些学习到的表征在下游任务中的实用性来衡量它们的质量。
3.1. Contrastive Language-Image Pre-training
介绍CLIP使用的对比学习具体流程:
Radford 等人展示了对比学习(CLIP)在相应图像和标题上学习强大视觉表征的能力。CLIP 首先用单独特定模式的模型嵌入图像和文本。然后将这些向量投射到共享的嵌入空间并进行归一化处理。使用这些最终嵌入计算 InfoNCE 损失,将相应的图像和标题作为正对,将所有不匹配的图像和标题作为负对。
语言监督的非对比学习性能较差:
用于语言监督的非对比替代方法包括从图像中预测标题的词袋表示或原始标题。 不过,这些方法的结果似乎比 CLIP 弱。对比目标还能在不重新训练特定数据集分类层的情况下进行图像分类(zero-shot transfer)。
3.2. Image Self-Supervision
图像自监督:
基于视图的自监督学习指的是模型被训练来以相似的方式表示同一图像的不同视图或增强,在各种不同的表述中都取得了很好的效果。在这项工作中,我们主要使用 SimCLR 的改编版作为SLIP中的自监督目标,SimCLR是这些方法的一个代表。 不过,我们也可以很容易地将其他框架替换进来。
我们将重点放在 Vision Transformer架构上,因为它简单易用,性能良好。
在训练自监督视觉Transformer的超参数设置上,我们遵循 MoCo v3。
基于视图的自监督学习:这种方法通过对数据的不同视图或变换进行建模,来学习数据中的固有信息和表示,在基于视图的自监督学习中,通常会使用多个视图或变换来增加数据的多样性和丰富性,同时利用不同视图之间的联系来学习更加具有表征能力的表示。例如,可以通过对图像进行随机剪裁、旋转或颜色变换等操作,生成不同的视图,并要求模型将这些不同视图的表示尽可能靠近,从而促使模型学习到数据的不变性和通用性。
3.3. Our Method
算法流程展示了SLIP—(如何将自监督和语言监督结合):
我们在算法1中概述了用于自监督的 SLIP 与 SimCLR(即 SLIP-SimCLR)。在SLIP的每个前向传递过程中,所有图像都经过同一个编码器。CLIP目标和SSL目标是根据相关的嵌入计算出来的,然后加总成一个单一的标量损失。 可以通过重新调整 SSL 目标来平衡这两个目标。我们发现,自监督目标的比例为 1.0,即不重新缩放,对 SimCLR 来说效果很好。除非另有说明,我们将 SLIP-SimCLR 简称为 SLIP。
SLIP的处理效率降低—(增加图像端数量):
SLIP 增加了处理图像的数量,导致激活次数增加了约 3 倍。这扩大了模型的内存占用,并减慢了训练过程中的前向传递速度。
4. Improved Training Procedure(改进训练程序)
原始CLIP训练无需正则化和增强的需求:
CLIP 的作者主要侧重于使用由4 亿个图像-文本对组成的大型私有数据集进行训练,大规模的数据减少了对正则化和数据增强的需求。
改进训练程序后的性能提升:
在重新实施 CLIP 时,我们发现一些简单的调整(主要是数据扩增)可以显著提高在 YFCC15M 上进行预训练时的性能。我们改进后的训练程序使用修改后的ResNet-50 在 ImageNet 上实现了 34.6% 的zero-shot迁移,超过了最初 31.3% 的结果。 另一个重新实施的程序在 ImageNet 上实现了 32.7% 的准确率。在我们的实验中,我们主要关注 Vision Transformer 模型系列,因为它们具有很强的扩展能力 。我们还使用改进的程序对所有 Vision Transformer 模型进行训练,以便为比较我们的方法设定强有力的基准线。
4.1. Implementation Details
数据集,Datasets:
数据集。我们主要关注由 Radford 等人过滤的 YFCC100M的 15M 子集,其中包括纯英文标题和描述,我们称之为 YFCC15M。我们还对概念性字幕 3M (CC3M) 和概念性字幕 12M (CC12M) 进行了评估。
数据增强,Data Augmentation:
数据增强。在训练过程中,我们会随机抽取每张图片的有效标题(即 YFCC15M 的标题或描述)。
- 在 CLIP 分支中,我们会随机调整图像大小,并将其裁剪为原始图像的50%-100%,我们称之为全局裁剪。
- 在自监督分支中,我们使用 MoCo v3的增强功能对两个视图进行采样。
架构,Architecture:
架构。我们使用 ViT 论文中的原始 ViT-B/16 和 ViT-L/16 架构作为图像编码器,还使用了 ViT-S/16 架构,其 FLOPs 和参数与 ResNet-50 相当。对于文本编码器,我们使用 CLIP 中最小的文本Transformer模型,该模型包含 3800 万个参数,使用字节对编码,标记词汇量为 49K,最大上下文长度为 77。
针对 CLIP 目标,我们的模型将图像和标题嵌入投射到一个 512 维空间,并分别学习线性投射。在自监督分支中,我们使用具有 4096 层隐藏层的 3 层 MLP 投影头,将图像嵌入转化为 256 层输出空间。
训练,Training:
训练。在所有实验中,我们使用 4096 的批量大小和 AdamW 优化器进行训练。在 CLIP 之后,我们设置了 β2 = 0.98 以提高训练的稳定性,但保留了 = 1e-8。CLIP 和 SLIP 的权重衰减分别为 0.5 和 0.1。我们选择使用 PyTorch 内置的自动混合精度库,而不是 CLIP 中使用的自定义混合精度配方。
Zero-shot 迁移评估,Zero-shot Transfer Evaluation:
零镜头转移评估。我们对包括 ImageNet 在内的各种分类基准进行了Zero-shot 迁移评估。我们通过对提示模板中每个类别的标题嵌入取平均值来进行提示集合。然后使用该平均标题嵌入计算与图像嵌入的余弦相似度。CLIP 为这些基准提供了提示模板和类名,我们直接使用这些模板和类名以方便比较。
线性分类评估,Linear Classification Evaluation:
线性分类评估。我们使用与 MoCo v3 相同的设置来评估线性分类性能。 我们使用带动量的 SGD,没有权重衰减。在 ImageNet 上,我们使用 0.01 的学习率,在其他下游数据集上,我们调整学习率并报告最佳结果。我们进行了 100 次历时训练,并执行了标准的裁剪和翻转增强。
端到端微调评估,End-to-end Finetuning Evaluation:
端到端微调评估。为了在 ImageNet 上对我们的模型进行微调,我们使用了 BeiT的训练程序。我们禁用了相对位置嵌入、层缩放和标记平均池。对于ViT-B 和 ViT-S,我们进行了 100 次peoch训练,而对于 ViT-L,我们进行了 50 次peoch训练。
为了在较小的下游数据集上进行微调,我们使用了更简单的 DeiT 训练程序。
5. Empirical Evaluations
5.1. ImageNet Classification
三种不同设置的详细介绍:(Zero-shot Transfer、线性分类和端到端微调)
我们评估了 ImageNet 在三种不同设置下的性能:Zero-shot Transfer、线性分类和端到端微调。
- Zero-shot Transfer任务是在不更新任何模型权重的情况下,在预训练后直接评估模型在分类基准上的性能。通过对比语言监督训练的模型可以用作图像分类器,只需选择标题嵌入与输入图像最接近的类别即可。
- 线性分类,也称为线性探测,是一种标准的评估方法,用于评估无监督或自监督表示法。在冻结所有其他模型权重的同时,对随机初始化的最终分类层进行训练。
- 最后,评估表征质量的另一种方法是,在对模型进行端到端微调时,预训练模型是否能提高有监督学习的性能。
自监督学习文献中常见的一种评估设置是在 ImageNet(即 ImageNet-1K)上训练模型和线性分类器。在表 1 中,我们使用 SimCLR 和 MoCo v3 在 YFCC15M 和 ImageNet 上训练 ViT-B/16。在 ImageNet 上使用线性分类和端到端微调对生成的模型进行了评估。当在 YFCC15M上进行预训练时,SimCLR 和 MoCo v3 的线性分类准确率都下降了 10%以上,性能急剧下降。因此,我们实验中的基线线性结果低于自监督文献中通常报告的结果。同样,我们观察到端到端微调结果也出现了不太严重但却一致的下降。 我们认为,在未验证数据上进行训练是一种更现实、更有参考价值的设置,尤其是考虑到从较少监督中学习视觉的原始动机。
在表 2 中,我们提供了 CLIP、SimCLR 和 SLIP 在三种尺寸的 Vision Transformer 和所有三种 ImageNet 设置下的评估结果。所有模型都在 YFCC15M 上进行了 25 个peoch的训练。我们发现,语言监督和图像自监督在 SLIP 中进行了建设性的互动,提高了这两种方法单独使用时的性能。
Zero-shot Transfer:
Zero-shot Transfer。自监督模型不支持Zero-shot Transfer评估,因为没有办法将学习到的表征直接映射到分类标签上。在所有三种规模的模型中,SLIP 在Zero-shot Transfer方面始终优于 CLIP 约 +5%,相对于原始数字而言,这是一个非常大的差距。在 ViTSmall(2200 万参数)和 ViT-Large(3 亿参数)之间,SLIP 和 CLIP 的差距略有缩小,从 +5.6% 降至 +4.8%。这一趋势表明,即使对于目前使用的最大型视觉Transformer架构,SLIP 仍将比 CLIP 更有优势。
使用 ViT-Large SLIP 后,top-1 准确率为 46.2%,远远低于在大规模数据集上预训练的较小模型的表现。不过,考虑到 YFCC15M 只包含极少量在Zero-shot Transfer评估中出现过的特定形式的数据(即标有 "某类名称的照片 "形式标题的以对象为中心的图像),从绝对值来看,这是一个非常令人惊讶的结果。
Linear Classification:
线性分类。在这种情况下,我们还观察到了语言监督和图像自监督之间的协同作用。CLIP 的表现优于 SimCLR,但比 SLIP 优于 SimCLR 的幅度要小得多。我们看到,在所有三种规模的模型中,SLIP 的线性分类准确率都明显优于 SimCLR。在 ViT-L 中,SLIP 与 SimCLR 的差距最大,几乎达到 +10%,这表明 SLIP 可以继续扩展更大的模型,而 SimCLR 的性能则略有饱和。
End-to-end Finetuning:
端到端微调。从表 1 中我们可以看出,在 YFCC15M 上进行预训练对微调性能的影响比线性性能的影响要小一些,这可能是因为允许模型适应目标分布的缘故。当在 YFCC15M 而不是 ImageNet 上进行预训练时,SimCLR 和 MoCo v3 的微调准确率都下降了-0.3%,这对于这种情况来说仍然是相当可观的。我们再次重申,表 2 中的结果不能直接与在 ImageNet-1K 上预先训练的方法进行比较。
在 ImageNet 上进行微调时,CLIP 的表现尤为乏力:ViT-S 和 ViT-B 的性能甚至低于从随机权重初始化开始的训练。CLIP 的性能也不会随着模型大小的变化而变化,因为 CLIP ViT-L 的性能仅比 CLIP ViT-B 高出 0.5%。另一方面,自监督学习在这种情况下表现相当出色,尤其是在大型模型中。SimCLR ViT-L 比 CLIP ViT-L 的准确率提高了 +3.0%,而 SLIP ViT-L 比 SimCLR ViT-L 略好,但幅度很小。这些结果表明,CLIP 微调性能不佳的问题主要是通过自监督解决的。
5.2. Model and Compute Scaling
我们还研究了 SLIP 在使用更多计算量(更长时间的训练)和更大的视觉模型时的扩展行为。 我们注意到,在 YFCC15M 上进行 100 个epoch的训练相当于在 ImageNet- 1K 上进行约 1200 个epoch的训练。在表 3 中,我们尝试了固定模型大小 (ViT-B/16)、延长训练时间以及在延长的训练计划(100 个epoch)中训练不同大小的模型。我们的结果表明,SLIP 在训练时间更长和模型更大的情况下都能很好地扩展。
5.3. Additional Benchmarks
虽然在 ImageNet 上评估分类性能可以全面了解表征质量,但在各种有针对性的下游数据集上评估性能也很有参考价值。在表 4 中,我们对编制的一系列下游图像分类任务中的zero-shot transfer进行了评估。这些数据集跨越了许多不同的领域,包括日常场景(如交通标志)、专业领域(如医疗和卫星图像)、视频帧、有视觉上下文和无视觉上下文的渲染文本等。我们删除了 Pascal VOC,并用 CUB-200-2011 代替了 NABirds。为了将数据集预处理成一个统一的管道,我们使用了 VISSL中包含的额外脚本。
对于给定的模型大小,各种方法之间的相对排名似乎出奇地不一致。在一些数据集上,如 Rendered SST2、KITTI depth 和 PatchCamelyon (PCAM),乍一看,较小的模型和较少的训练似乎能提高性能。但是我们注意到,这些数据集上的性能仅与偶然性能相当,这可能是因为这些数据集与 YFCC15M 的语义分布几乎没有重叠,因此是表征质量的不可靠指标。在 YFCC15M 中表现较好的类别上,如 Food-101、Oxford Pets、Caltech-101 和 STL-10,表现则更为突出。在这些数据集上,我们可以看到更大的模型和使用 SLIP 进行更长时间的训练更能普遍提高zero-shot transfer的准确性。我们认为,在 YFCC15M 中具有更合理表征的任务上得出的这些结果更能说明表征质量。
在低分辨率数据集(MNIST、CIFAR-10、CIFAR-100)上的zero-shot性能也非常差。在许多数据集上,zero-shot性能是偶然性能的几倍,但仍然远远低于使用少量特定应用数据训练的轻量级模型所能达到的性能。这表明,仅靠语言监督来训练特定任务模型的效率很低。
5.4. Additional Pre-training Datasets
除了 YFCC15M 之外,我们还对另外两个图像-文本数据集进行了实验:CC12M 和 CC3M。在表 5 中,我们使用 SLIP 和 CLIP 在 CC12M 和 CC3M 上训练 ViT-B/16,并与之前在 YFCC15M 上的数据进行比较。在所有 ImageNet 评估设置中,SLIP 都保持了比 CLIP 更大的改进幅度。值得注意的是,在 CC12M 而非 YCC15M 上对 SLIP 进行预训练会降低零点准确率,但实际上会提高线性和微调性能。CLIP 的微调性能提升了 +1.6%,这更令人吃惊。
我们改进的训练方法(见第 4.1 节)在很大程度上缓解了 CLIP 在 YFCC15M 和 CC12M 数据集上的过度拟合,但在较小的 CC3M 数据集上,CLIP 的过度拟合却非常明显。这可能是由于在 CC3M 中使用了hypernymization,使字幕更适合图像字幕。在 CC3M 上,CLIP 在 40 个训练epoch中只用了 15 个epoch就达到了最高的zero-shot ImageNet 准确率,之后我们观察到 ImageNet 准确率持续下降。相比之下,在 CC3M 上,SLIP 在 35 个epoch后就达到了最高的zero-shot ImageNet 性能。
5.5. Alternative Self-Supervised Frameworks
如第 3.2 节所述,SLIP 可以使用多种不同的自我监督方法。我们在 ViT-B/16 上使用 SimCLR 的不同替代方案进行了多次实验,特别是 MoCo v3、BYOL 和 BeiT。与我们调整 SLIPSimCLR 超参数的方法类似,我们在很大程度上保留了原始的自监督超参数,并添加了 CLIP 目标和文本编码器。MoCo v3 和 BeiT 已经针对 ViT 进行了设计,但对于 BYOL,我们在复制 MoCo v3 中的数据增强和投影器/预测器架构的同时,对学习率和权重衰减进行了调整。所有模型都在 YFCC15M 上进行了 25 次epoch训练。
表 6 中的结果显示,所有三种替代方法的性能都低于 SLIP-SimCLR,尽管它们各自都是更强的自监督方法。最令人惊讶的是,尽管 BEiT 是本测试中最强的自监督方法,但 SLIP-BEiT 的表现却最差。这可能是由于预训练和部署阶段的输入差异较大。尽管如此,与 CLIP 相比,SLIP 的所有这些次优变体仍然提高了性能。
6. Further Analysis
为什么不用 SSL 进行预训练,再用 CLIP 进行微调呢?
SLIP 的另一个替代方案是用 SSL 训练过的权重来初始化 CLIP 的图像编码器。我们尝试过在这种设置下训练 CLIP ViT-B/16,但发现其性能不如 CLIP 和 SSL 联合训练。在几个训练epoch后,CLIP ViT-B/16 的进展超过了 SLIP 在相同训练时间点的进展,但在训练的剩余时间(25 个epoch)内,CLIP ViT-B/16 的进展停滞不前。在第 7 章中,我们看到这种方法在所有三种 ImageNet 评估设置中的表现都不如 SLIP。
SLIP 只是数据增强的 CLIP 吗?
我们研究了在 CLIP 的基础上进一步增加数据增强的效果,以及这是否能解释 SLIP 性能提升的原因。SimCLR 增强可分为两个部分:颜色(抖动或灰度)+ 模糊和调整大小裁剪+ 翻转。我们分别使用这两个部分和完整的 SimCLR 增强功能对 CLIP 进行训练。 在使用颜色 + 模糊进行训练时,我们使用原始 CLIP 裁剪策略,将较短边的大小调整为 224px,然后进行随机正方形裁剪。我们的结果如表 8 所示。虽然增强和调整大小裁剪+翻转会损害性能,但颜色+模糊确实将zero-shot transfer性能提高了+0.8%,这仍然远远低于 SLIP 的增益。
我们能否将自监督与语言监督完全解耦呢?
我们对 SLIP 的一个版本进行了实验,我们称之为 SLIP-decoupled,在这个版本中,自监督目标是在一组不相连的 1500 万张图像上计算的,这组图像来自文本监督对象中使用的 YFCC1500 万张图像。在训练过程中,图像从两组图像中独立采样,从而有效地解耦了语言图像监督信号和自监督信号。在表 9 中,我们发现解耦 SLIP 与 SLIP 的效果一样好。
7. Discussion
我们在 ImageNet 和其他分类基准上的研究结果表明,语言监督和自监督确实具有很强的协同作用。 如表 2 所示,SLIP 在各种规模的模型中都能大幅提高 ImageNet 的zero-shot性能,幅度从 +4.8% 到 +5.6%。在线性分类设置中也有类似的改进,在端到端微调设置中也有持续但微弱的改进。
除了 SLIP ViT-L 的线性探测性能会随着训练次数的增加而降低外,这些趋势在更长的训练时间内保持一致。SLIP ViT-L 在 YFCC15M 上预先训练了 100 个 epochs,我们在 ImageNet 上取得了 47.9% zero-shot准确率的最高成绩。SLIP 在 CC3M 和 CC12M 上也有显著改进。最后,我们还在其他下游基准上进行了zero-shot和线性评估,证实了我们的研究结果。
评估表征质量。之前关于表征学习的研究反对端到端微调,因为它对优化超参数非常敏感;反对线性分类,因为它过于刻意。我们注意到,zero-shot tansfer、线性分类和端到端微调可以被视为评估表征质量的一种统一范式。**zero-shot tansfer代表了最严格的设置,其中每个类别的示例向量必须通过自然语言来指定。线性分类是对zero-shot tansfer的一种放松,在这种情况下,类的示例在训练数据上进行了优化。最后,端到端微调是对线性分类的进一步放宽,允许所有模型参数适应训练数据。**表征质量应通过多种设置下的性能来评估,就像 ROC 曲线能更全面地反映模型的性能,而不是在单一操作点上进行评估一样。
zero-shot ImageNet 监视器。SLIP 也可以作为评估自监督学习新方法的有用框架。文本前任务的训练损失不能很好地预测下游性能,因此像 kNN 准确率这样简单的外部指标对于快速估算性能和诊断训练问题(如过度拟合或不稳定)非常重要。不过,kNN 分类需要编码和存储每一张训练图像,而天真推理需要进行非常昂贵的矩阵乘法运算。内存库 kNN 监测器可减轻这一成本,但在 YFCC100M 等未标注数据集上进行预训练时并不可行。相反,ImageNet 上的zero-shot评估几乎与监督环境下的验证准确率评估一样快。
伦理方面的考虑。SLIP 面临着与 CLIP 相同的道德考量,既包括它可能带来的有害应用,也包括在现实世界中放大和延续问题行为的可能性。CLIP 能够利用从开放互联网上获取的嘈杂且过滤程度极低的数据,这已经促使研究人员开始以比以往监督学习更粗心的方式收集数据。采用更谨慎、更负责任的方法来选择训练数据,可能会减轻最恶劣的模型行为。
实际限制。SLIP 为自监督目标和 CLIP 目标计算图像视图的嵌入。这就增加了模型在前传过程中的激活次数和内存占用,导致训练速度变慢(在 64 个 V100 GPU 上训练 ViT-B/16 时,SLIP 需 30.5 小时,而 CLIP 需 22.3 小时)。在预训练后,SLIP 不会产生额外成本,因为其视觉骨干可与 CLIP 或自监督模型以相同方式使用。
从表 4 中的下游结果来看,我们注意到,仅在未经整理的数据上进行预训练似乎是识别特定视觉概念的低效途径,尤其是不太可能在社交媒体或更广泛的互联网上广泛分享的概念。即使有了大量经过整理的数据,CLIP 在许多数据集上的zero-shot性能仍然远远低于在适量标注数据上对小型预训练模型进行微调所能达到的性能。只需针对特定应用对 CLIP 进行微调,甚至加入更多相关领域的预训练数据,就能轻松解决这一问题。