facebook新无监督论文-Unsupervised Learning of Visual Features by Contrasting Cluster Assignments

最近比较关注无监督论文,因此只要发现有新的文章都会读一遍,facebook近期刚出了一篇Unsupervised Learning of Visual Features by Contrasting Cluster Assignments,这是记录的第二篇讲无监督的文章,和之前那篇思路差别还是比较大的,文章也很良心,有git代码,也顺便看了下实现,文档很详细,代码写的也比较规范,准备后面有时间实验一下效果~

概述

unsupervised image representations在近些年的工作中已经缩小了和有监督之间的距离,这其中contrastive learning有很不错的进展,但是contrastive learning由于需要显示的去对pair对进行feature级别对比导致计算量非常大,因此文章主要就提出一种online的算法,swAV能够借鉴contrastive learning的思路但是又可以避免大量的计算,主要贡献如下:

  • 提出了一种scalable online clustering loss能够在imagenet上相比现有的self-supervision方法至少提升2%以上,并且能够在大和小的batch size上训练,同时不需要很大的内存开销或者momentum encoder
  • 引进了multi-crop的策略能够在不增加过多的内存和计算开销下提升一张图片的views的数量,使用这种技术在多个self-supervised 方法上能够一致提升2%-4%的效果在imagenet上
  • 把上述相关改进放到resnet模型上训练能够相比self-supervised方法在imagenet上提升4.2%以上,并且相比有监督算法在imagenet上pretrain模型在多个下游任务上都能表现更好

Methodology

整体来说文章提出了一个online clustering-based self-supervised的方法,传统的clustering-based方法一般是根据image feature在全部数据集做cluster(codes),在一个训练step中会对很多image views做cluster,但是这种方法通常需要扫很多遍数据集不适合online场景。本文的方法并不考虑用codes作为目标,而是通过一张图片不同的views的codes需要保持一致来进行学习,因此本方法可以理解为是一张图片的多个不同views需要对应相同的cluster而不是直接用他们feature来做。

如下图所示,可以看到本方法SwAV和contrastive instance learning方法的异同,主要就是在features对比这块,SwAV使用了一个codes去表达features进而来保持一致性,可以看到训练主要包括两部分

  • z(features)如何通过c(prototypes)映通过射得到Q(codes)
  • Q如何通过Swapped Prediction完成loss计算

facebook新无监督论文-Unsupervised Learning of Visual Features by Contrasting Cluster Assignments_第1张图片

Swapped Prediction

 , z是feature,q是codes,s和t下标标识通过不同的augmentations对image进行转换的,而分项loss的计算公式如下:

最终进行变化以后的训练loss展开如下所示,比较复杂,我就截图了

Computing codes online

计算Q主要就是去最大化Q和C之前的相似性,其中都是在一个batch内部去优化的,下面公式的字母含义:

 ,其中q和z上面已经介绍了,c是prototypes的含义

facebook新无监督论文-Unsupervised Learning of Visual Features by Contrasting Cluster Assignments_第2张图片

文章继续提到因为上述公式求解后的Q是连续值,但是如果我们取整变成离散值以后通常发现实际效果很差,这里面解释到有可能是因为变成离散值以后收敛速度变快反而可能学到一个比较差的解,因此在实现中主要就是通过迭代以下公式求解:

 ,其中u和v是一个renormalization vectors

这里文章还提了下如果batch size很小的时候,在计算上面的Q的时候,我们需要用到之前的batch来一起学,实际中一般会存储3K features,这相比之前传统的contrastive 方法需要至少存储65k instances也要少了很多

Multi-crop

传统的从图片中crop出一些小图出来,往往随着crop的数量增多,计算量和内存开销增加也会非常明显,因此本文主要策略是使用两个正常分辨率的crop再加上V个低分辨率的crop来做,低分辨率的图片往往对性能开销影响不大,因此最终的loss公式如下:

这个公式要注意的是  只是用了两个正常分辨率的,因为在实验中发现如果采用低分辨率的crop得到的codes会效果不好,一个解释是feature到code这一步对于低分辨率图片而言可能映射效果不好

实验

评估无监督学习出来的特征在imagenet的表现

  • 将学习出来的特征固定住,用线性分类器去学习,效果能够比现有无监督高4.2%,只比有监督效果低1.2%,如下图左
  • 通过改变模型的宽度,观察不同算法的效果,可以看到SwAV和有监督模型算法趋势相同,并且能够进一步缩小和有监督模型的差距,如下图右

facebook新无监督论文-Unsupervised Learning of Visual Features by Contrasting Cluster Assignments_第3张图片

  • 在半监督场景下SwAV的效果也是最好的,分别对比了在1%和10%的标注情况下的效果,如下所示

facebook新无监督论文-Unsupervised Learning of Visual Features by Contrasting Cluster Assignments_第4张图片

评估通过Transfer learning在下游任务的表现

  • 在ResNet-50上通过SwAV在ImageNet上训练的feature在下游任务上表现,分别对比通过学习线性分类器和finetuning两种方法,效果都比有监督学习的要更优异

facebook新无监督论文-Unsupervised Learning of Visual Features by Contrasting Cluster Assignments_第5张图片

  • 在batch size较小的情况下相比其他self-supervised算法更好,并且相比MoCov2(65536)算法能够只需要存储更少的features(3840)

facebook新无监督论文-Unsupervised Learning of Visual Features by Contrasting Cluster Assignments_第6张图片

Ablation Study

multi-crop效果验证下图左

  • DeepCluster-v2和SeLa-v2是clustering-based的算法
  • SimCLR是contrastive learning的算法
  • 可以看到multi-crop在clustering-based的算法效果提升比contrastive要多,但是在supervised上面没有提升

training longer效果验证下图右

  • 提升epoch轮数可以提升SwAV的效果

facebook新无监督论文-Unsupervised Learning of Visual Features by Contrasting Cluster Assignments_第7张图片

Unsupervised pretraining on a large uncurated dataset效果如下图

  • 选用了一个不准确的数据集-1B random instagram images
  • 左图可以看到如果fix住特征以后基本效果会很差,在这种情况下SwAV效果比SimCLR要高6.1%个点,同时在finetune下效果也最好
  • 右图可以看到随着模型尺寸变大以后training from scratch的效果就不提升了而SwAV依然在提升,这个里面Weak supervision只是做一个对照,表示在这种场景下和现有最好算法效果也比较接近了

你可能感兴趣的:(机器学习)