paper:Unsupervised Learning of Visual Features by Contrasting Cluster Assignments (SwAV)
0. 概述
SwAV是SSL(self-supervised learning)领域中总是被引用的模型。该算法使用传统的对比学习方法(contrastive learning method),但是无需计算成对比较(pairwise comparison),也可以在线(online)使用。
使用“同一图像的多个视图之间切换分配”(Swapping Assignments between multiple Views of the same image)SwAV方法,使得从相同图像生成的表征向量(representation vector)预测相同的原型类别(prototype class),并进行训练。
通过使用原型类别矩阵(prototype class matrix)代替内存库或动量网络(memory bank or momentum network),非常高效。与标准剪裁(standard crop, full resolution crop)不同,使用多剪裁(multi-crop)策略生成的分辨率图像不分配给原型,从而提高了内存和速度。
SwAV是一种无监督学习方法,虽然学习时间较长,但性能最接近监督学习
SSL: 是一种无监督学习的方法,用于从未标记的数据中学习有用的特征表示。无需人工标注,利用数据的内在结构和关系生成标签。例如,可以通过在图像中遮挡一部分内容,然后让模型预测被遮挡部分的内容,让模型学习图的特征。其他常见的自监督任务包括图像的颜色化、图像的旋转预测、文本的掩码语言模型等。
multi-crop:多剪裁是一种数据增强策略,通常在CV任务中使用,与单纯的单一剪裁相比,允许从同一张图中生成多个不同的剪裁,并将它们作为不同的输入样本供模型处理。可以帮助模型更好的学习数据的多样性和变化性,提高其泛化能力。
1. Introduction
self-supervised learning中,基本思想是从同一图像中生成具有不同增强效果的图像,并将它们嵌入到彼此相近且远离其他图像生成的增强图像中。不过,由于实际上不可能对所有实例进行比较,可以通过比较随机子集(random subset)中的实例或通过聚类(clustering)来缓解实例区分问题。例如,在DeepCluster方法中,对比学习不是在实例之间进行,而是在实例组之间进行,即聚类。然而这种方法不具有可扩展性(scalable)。这是因为训练形成的聚类分配(clustering assignments)最终需要使用所有的数据集图像。
因此本文提出了一种新的范式,在线方法计算编码,同时保持同一图像不同增强后编码的一致性。
此外,与传统的对比学习方法的“每张图片值对应一个转换对比进行比较“不同,SwAV使用多剪裁方法生成的小尺寸图像也会在loss计算中得到考虑,从而提升性能。
结果表明,可扩展的在线聚类损失在ImageNet上实现了提供2%的性能,且无需动量编码器或者大型内存库;与其他SSL方法比,使用多剪裁提高了2%-4%;在ImageNet上使用标准ResNet模型进行自监督提高了4.2%;使用有监督的ImageNet预训练的若干下游任务性能也提高了。
2. Related Work
SwAV与其他对比学习方法的竞争能力和差异性。
Instance and contrastive learning
传统SSL中,每张图片被分配到一个类别,使用线性分类器进行分类训练。然而这个过程很快变得难以处理。具体面对的挑战如下:
- 计算复杂度增加:随着数据集增大,分类器需要处理更多的类别和样本,到值计算复杂度迅速增加。
- 类别不平衡:随着类别增加,很可能会出现类别不平衡的情况,某些类别的样本数量远远超过其他类别,会导致分类器更关注样本较多的类别,忽略了样本较少的类别。
- 内存消耗:存储大量的类别和分类器参数需要大量的内存,可能会超过计算资源的限制,从而导致内存消耗问题。
- 训练难度:随着类别数量的增加,训练分类器可能会需要更长的时间来达到收敛,可能会面临梯度消失或爆炸等训练难题。
为解决这些问题,人们使用了存储先前计算的表征的内存库代替分类器来提升效果。通常使用噪声对比估计(noise contrastive estimation),也就是InfoNCE方法,MoCo中将表征存储在动量编码器(momentum encoder)中。在SimSiam中,已经证明在batch size 足够大的情况下,不需要动量编码器就可以训练。与以前的研究“通过成对计算所有实例之间的相似度”不同,SwAV通过将图像特征映射到可学习的原型向量(prototype vector),然后将其用于训练,采用了不同的方法。
原型向量:在学习中,模型自动学习得到的一组向量,每个向量代表一个虚拟的原型或类别中心。这些原型向量的学习是通过模型优化的过程进行的,模型通过调整这些向量的参数,使每个原型向量能捕获数据中的某种特征或架构。在SwAV中,原型向量的学习过程被设计为与图像特征映射的过程结合在一起。
SwAV使用图像的特征作为输入,通过映射机制将这些特征映射到一组原型向量上。这个映射机制是可学习的,训练中,模型会调整映射的参数,使图像的特征能与原型向量进行匹配。通过这种方法,模型学习到一组原型向量。这些向量可用于不同图像的抽象特征,从而实现无监督学习。
Clustering for deep representation learning
DeepCluster使用k-means分配作为伪标签进行训练,被证明对大型未整合数据集具有可扩展性,并可用于下游任务,这种方法的表述并不是很有原则性。后来的研究(如Asano等人)提出了如何将伪标签问题与最优传输问题联系起来的方法。尽管这项研究中也使用了类似的表述,但与Asano的研究不同,它没有将Sinkhorn-Knopp算法的输出近似为硬标签,而是使用软标签来训练原型向量。此外,与Asano的研究不同,本文还使用了在线分配方法,从而在任何大型数据集上都可以使用这种方法。
伪标签问题:SSL中,通常无法获得真实标签信息。为了训练,可能会使用一些方法生成伪标签(pseudo labels)来指示数据的类别或属性,是由模型生成的。
最优传输问题:是一种数学问题,找到将一组数据从一个分布映射到另一个分布的最优映射,使得映射成本最小化。这个问题通常是两个分布之间最优转移计划。
将伪标签生成和使用过程视为在两个分部之间执行最优传输的过程。例如,可以将伪标签视为将生成的伪标签分布与真实标签分布之间最优传输的计划。这样的联系可以帮助优化伪标签的生成过程,使其更加准确的匹配真实分布,从而改善模型的无监督学习性能。
硬标签:是一种二进制、明确的分类标签,每个样本被分配到一个确定的类别或标签,例如对于一个图像分类任务,一个图像可能被标记为🐱或🐶。
软标签:是一种概率分布,表示样本属于各个类别的概率分布。与硬标签不同,软标签允许样本分布在多个类别中,每个类别都有一个对应的概率分数。通常用于模糊的或不确定的分类问题,或者对于表示样本在不同类别之间的相似度或关联程度。
将原型向量的训练目标从硬标签转变为软标签,是模型学习更丰富的信息。
3. Method
从图像的增强版本计算一个代码,然后从同一图像的其他增强版本中预测这个“codes”。
给定来自同一图像的两个不同增强版本的图像特征,通过将这些特征与一组K个原型向量
进行匹配来计算它们的“codes”
。 然后设置一个互换(swapper)预测问题,损失函数如下:
其中测量特征z和“codes”q之间的匹配度。使用中间“codes”
来比较特征
。如果这两个特征捕捉了相同的信息,那么可以从另一个特征中预测“codes”。
下图说明了对比学习和本问提出的方法之间的关系。
对比学习和SwAV:在应用于实例分类的对比学习方法中,来自同一图像不同变换的特征直接相互比较。在SwV中,首先通过将特征分配给原型向量获得“codes”。然后解决了一个“互换“预测问题。其中从一个数据增强视图获得的codes使用另一个视图进行预测。因此,SwAV不直接比较图像特征。原型向量是通过反向传播和ConvNet参数一起学习的。
3.1 Online clustering
每张图片 都通过从图像变换集合 T 中采样的变换
生成增强视图
,
经过非线性映射
后得到
,每个特征都经过归一化处理,投影到单位球面上。
然后通过将映射到一组可训练的原型向量
中来计算一个“codes”
。用C代表矩阵,列是
。下面描述如何计算codes并在线更新原型向量。
图像增强:从一组可能的数据增强变换中随机选择一个特定的变换t。这个变换可以包括旋转、剪裁、缩放、颜色增强等操作,用来生成图像的不同视图或辩题。
举个例子:如果是
,并且存在一个包含两个类向量的矩阵C,每个类向量的值分别是
和
, 那么
将是
,表示
与第一个原型向量最接近。
Swapped prediction problem(互换预测问题)
上面的等式中的损失函数有两项,建立了特征 预测codes
,以及特征
预测代码
的交换预测问题。
每个项表示codes与通过取点积的softmax得到的概率之间的交叉熵损失,其中点积是 与C中所有的原型的点积,损失函数表示为:
其中 是温度参数。对所有图像和增强对应用此损失,得出了以下用于交换预测问题的损失函数:
这个损失函数是为了最小化原型矩阵C和生成特征 的图像编码器
的参数
而设计的。
Computing codes online.在线计算codes
SwAV的方法在线计算图像的codes,而不是在离线的情况下一次性的处理整个数据集。这种在线的计算方法考虑到了批处理的概念,每个批次中的每个图像,SwAV都会使用它们的特征数据生成对应的codes,这样每个图像都会被分配给一个独特的codes表示。
原型C是一种用于表示不同图像特征的参考向量,而SwAV的目标是将多个图像实例与这些原型相关联。这个过程中,SwAV要保证每个批次中的图像实例都与原型之间有关联性,而不是让所有图像实例都具有相同codes。批次内的特征分配给不同的原型。
给定 , 将它们映射给
, 将这种映射或codes表示为
,并优化 Q 最大化特征与原型之间的相似性,即:
其中 H 是交叉熵函数。表示为 ,
是控制映射平滑度的参数。使用较高的熵正则化可能会导致所有样本都被映射到相同的codes中,可能不包含足够的信息区分不同的样本,从而无法考虑它们之间的差异性。此外,这些样本会被均匀分配给所有原型,意味着不管原始样本是什么,它们都会以相同的方式映射到不同的原型,从而失去了原始样本的差异性。在实际问题中,通常希望映射或codes保留足够的信息,来区分不同的样本,并且不会导致所有样本具有相同的表示。
有人提出通过将矩阵Q限制在传输多面体(transportation polytope)中来强制执行等分约束。他们的做法是在完整数据集上工作的,本文是将他们的方案调整为小批量上工作。通过将传输多面体限制为小批量内部的约束,具体表示:
表示K维向量中的所有元素都为1,
表示B维向量中的所有元素都为1。这些约束条件确保在批处理中,平均而言,每个原型被选择
次。
找到连续解 , 就可以通过 舍入过程(rounding procedure)来获得离散的代码。在实验中发现,在完整数据集上离线计算codes时,离散代码表现良好,只使用小批量数据在线中,使用离散codes的性能不如使用连续codes。有种原因是为了获得离散codes所需要的舍入步骤比渐变更新更积极,虽然使模型收敛变快,但是导致了更差的解。因此,本文保留了 soft codes
,而不是对其进行舍入。这些 soft codes
是集合 Q 上的解,采用了归一化的指数矩阵形式:
其中, u 和 v 分别是 的归一化向量。归一化向量使用迭代的Sinkhorn-Knopp算法进行计算,只需要进行少量矩阵乘法即可。实验上使用了3次迭代就可快速获得良好的性能。
Work with small batches.
当批次特征的数量B与原型K的数量相比太小时,将批处理均匀分成K个原型是不可能的,因此使用小批量数据时,使用来自前几个批次的特征增加Z的大小。
3.2 Multi-crop: Augmenting views with smaller images
本文提出多剪裁策略,使用两个标准分辨率剪裁,并采样 V 个额外的低分辨率裁剪,仅覆盖图像的小部分。使用低分辨率图像可以确保计算成本只会略微增加,具体来说:
仅使用全分辨率剪裁来计算codes,事实上对所有剪裁计算codes会增加计算时间。实验所示,多剪裁提高了几种SSL方法的性能,是一种很有前途的增强策略。
4. Main Result
通过SwAV学习特征,然后应用于多个数据集上进行迁移学习,取得了良好的性能,还实现了SimCLR中使用的LARS、余弦学习率、MLP投影头等方法提高性能。
Evaluating the unsupervised features on ImageNet
左图是使用冻结特征时,SwAV相较于先前的最先进技术提高了4.2%的性能,并于监督学习仅相差1.2%(800个epoch,4096大批量)。
右图是在ResNet-50的宽度乘以2、4、5的变种中,SwAV也表现出了与监督学习相似的趋势,并且展现出了相应的性能。
尽管它不是专门为半监督学习设计的模型,但它在自监督学习中表现出色,超越了最先进的半监督学习方法。
Transferring unsupervised features to downstream tasks
为了评估SwAV在没有标签的情况下使用ResNet-50基础进行的训练对ImageNet的泛化能力,我们将其迁移到了一些下游视觉任务上,并进行了性能比较。
左边的监督学习线性分类结果被超越了。
Training with small batches
我们在4个GPU上使用SwAV进行了实验,采用小批量256个图像(先前是大批量4096个图像),并与MoCov2和SimCLR进行了比较。
SwAV在与其他方法的比较中表现出了SOTA的性能。SwAV使用了一个包含3840个特征的队列,而MoCov2则使用了一个包含65536个特征的队列,即使在运行时间方面,每个时期需要的时间更短,但SwAV也能获得更好的下游性能(例如,MoCov2需要800个时期才能达到71.1的性能,而SwAV只需要200个时期就能达到72.0)。最后,SwAV还可以与大批量和动量编码器一起使用,但这被留作将来的研究工作。
5. Ablation study
Clustering based self-supervised learning
improving prior clustering-based approaches
SwAV重新实现了以往的基于聚类的模型,并与当前的对比方法SimCLR进行了比较。
DeepCluster-v2通过添加k-means聚类质心的显式比较来改进了DeepCluster,解决了原始DeepCluster中两个连续的(例如,在第1和第2轮时的)聚类分配之间没有对应关系的问题。这个改进增强了稳定性和性能,避免了每次重新开始时都需要重新从头学习的问题。
comparing clustering with contrastive instance learning
为了与SimCLR进行公平比较,SwAV使用了相同的数据增强、相同的训练轮数、相同的批处理大小等进行了实验。经过改进的传统基于聚类的模型和SwAV在性能方面都超越了SimCLR,这表明了聚类方法在实例分类上具有更高的学习潜力。
advantage of SwAV compared to DeepCluster-v2
DeepCluster-v2在性能方面超越了SwAV,但关键是DeepCluster-v2不是在线算法,因此无法处理大型数据集。此外,DeepCluster-v2可以被视为SwAV中swapping方法的特殊情况,但可以将swapping解释为不是在批处理内部而是跨越不同的epoch之间进行的。
Applying the multi-crop strategy to different methods
看图3的左侧,您可以看到多裁剪策略对性能的改进效果。
以下的损失函数展示了SimCLR如何应用多裁剪策略。这里M代表每个实例的裁剪数量,如果有2x160+4x96个裁剪,那么M=6。
Unsupervised pretraining on a large uncurated dataset
为了证明使用在线算法可以获得的可扩展性,研究团队使用了来自Instagram的10亿张随机公共非欧盟图像(未筛选的数据集)对SwAV进行了预训练,并比较了在ImageNet上进行的冻结特征线性分类器/微调特征线性分类器的性能。
总之,SwAV在与随机初始化模型和SimCLR预训练模型相比表现出更好的性能。即使在微调后,它仍然保持着卓越的性能。此外,对具有扩展容量的模型ResNext的实验表明,SwAV在与从头开始在ImageNet上训练的监督模型相比也表现出更好的性能
参考:[Paper Review] Unsupervised Learning of Visual Features by Contrasting Cluster Assignments (SwAV)