8.无监督学习: SimCLRv2

v2框架整体还是沿用了在NLP中流行的unsupervised pretrain外加10% 的有监督label进行微调的范式。 预训练阶段在没有先验的情况下学习没有标签的数据。论文中也提到了使用较深和较宽的神经网络可以提高label-efficient,并极大地提高准确性。 与SimCLRv1采用ResNet-50的策略不同,SimCLRv2中的Large model直接上152层的ResNet,其通道是前者的三倍同时也采用了SK

随着应用大规模的模型,一方面是提升精度,另一方面也却显得有点笨重。后面还是通过熟悉的蒸馏操作来将Large ResNet迁移到较小的ResNet-50中,使用1%和10%的标签也能达到73.95和77.5%的top1准确率,后者已然“超越”了76.5%的supervised learning。文章中可能有些地方没看明白,但是不妨碍其传递的核心思想,那就是半监督的潜力是非常巨大的,这是一个非常值得研究的方向,特别是对于医学图像分割这种标注成本极大的领域来说无疑是最受益的。这也给我们一个启发:我们的模型是否真的需要这么多的标注数据去训练?突然想起之前在xx地方看到有些人搞的一些骚操作,说是半监督的医学领域,本来数据量就不多,而且有一部分是标注不完善或干脆标错的,然后把这部分dirty data直接去掉同时用剩下的data作为所谓的“semi-data”,美名其曰我用一部分的数据也能达到跟你用全量数据差不多的效果。

在SimCLRv2中,相比v1有一下几点改进

  • V2大大加深了网络的规模,最大的规模达到了152层的ResNet,3倍大小的通道数以及加入了SK模块(Selective Kernels),据说在1%标注数据的finetune下可以达到29%的性能提升
  • 首先v2使用了更深的projection head;其次,相比于v1在预训练完成后直接抛弃projection head,v2保留了几层用于finetune,这也是保留了一些在预训练中提取到的特征
  • 使用了一种记忆机制(参考这篇论文),设计一个记忆网络,其输出作为负样本缓存下来用以训练

1.摘要

  • 大的网络可以提升无监督的效果,数据越少,模型越大,获得的提升越明显
  • 利用10%的数据超越了利用所有数据在imagenet上的效果

SimCLR V1的改进版本

  • 大的网络可以提升无监督的效果,数据越少,模型越大,获得的提升越明显
  • 可以通过蒸馏减少网络的大小
    本文提出的网络结构主要包括三个步骤
  • 通过对比学习训练一个超大网络
  • 通过少量标注训练超大网络
  • 利用超大网络蒸馏出小模型

2.结论

1.数据越少,模型应该越大

当标注数据越少时,使用大模型的收益越大,猜测是大模型不容易过拟合,
含义就是你的数据越少,你的模型应该越大 ,也可以看作是一种调参经验把
8.无监督学习: SimCLRv2

2.无监督超越有监督

利用1% 的标注数据(每个类别小于13张)
在ImageNet获得了73.9%的top 1 识别率

利用10% 的标注数据
在ImageNet获得了77.5%的top 1 识别率,超越了同等条件下100%数据训练的有监督模型
8.无监督学习: SimCLRv2

3.方法

  1. 使用ResNet作为backbone搭建大型的SimCLRv2,进行无监督的预训练
  2. 然后在少量有标注的数据上进行有监督的finetune
  3. 再通过未标注的数据对模型进行蒸馏并迁移到特定任务上
    8.无监督学习: SimCLRv2