这篇论文是对之前的论文( A simple framework for
contrastive learning of visual representations,SimCLR)的一个改进,提出了SimCLRv2。
摘要
从一个很少的有标签数据样本中学习常采用的是对大量的无标签数据进行无监督预训练,然后进行有监督地微调。这篇论文提出的方法也是基于此,不过增加了一个关键的要素,就是在预训练和微调的时候使用了很大的网络,结果发现,在很少的有标签样本的情况下,这个方法受益于较大的网络,并且可以很好地迁移到其他一些比较小的网络中。总的来说,这篇论文提出的半监督学习算法可以总结为以下三个步骤:
1.使用SimCLRv2对一个大型ResNet模型进行无监督的预训练;
2.在很少的有标签样本上有监督地微调;
3.利用无标签样本进行知识蒸馏,迁移到别的任务上。
他们的实验证明这个方法对比此前提出的一些先进的方法有很好的优越性。
介绍
从很少的带标签的样本中学习,同时充分利用大量未带标签的样本是机器学习中一个长期存在的问题。在摘要中已经提到过这种情况下的常用方法。在这篇论文中提出的无监督预训练,有监督微调有一个重要的因素,就是网络的大小很重要。对半监督学习来说,越少的有标签样本越能从一个较大的网络中取得不错的表现。
方法
论文所提出的算法的大致流程如上图所示,可以看出是先利用无标签的数据进行无监督预训练,从而得到一个普遍的特征表示,然后利用一小部分的有标签样本进行微调,最后还是使用无标签的样本,只不过是在一个具体的任务中。预训练、微调、知识蒸馏这三个步骤的细节如下:
1.预训练:预训练阶段采用并改善了之前提出的SimCLR的框架,SimCLR通过最大化相同样本的不同增强视图之间的相似性,使他们的对比损失尽可能小。对比损失公式如下:sim(.,.)使两个向量的余弦相似度。
2.微调:与SimCLR不同,SimCLRv2保留了一部分的projection head,从而从这部分保留的网络的第一层微调。
3.知识蒸馏:利用微调网络作为一个teacher网络去训练student网络,最小化损失函数:
总结
这篇论文增加了网络的规模,取得了不错的性能,利用这种方法也可以很好地将大型网络模型下训练的结果很好地迁移到自己的任务上,这似乎是现在做项目常用的方法,也就是迁移学习,迁移学习最重要的两个应用场景就是特征提取和微调。