真诚的向大家推荐这个UP主,论文讲述的方法清楚,脉络清晰,听君一席话胜读十年书。
论文题目:Big Self-Supervised Models are Strong Semi-Supervised Learners(SimCLR v2)
前序讲解论文:SimCLR
真谛:换了更大的模型,取得了更好的performance。(作者肯定不会这么说,所以增加了知识蒸馏的部分。)
在非监督的环境下,训练好一个大的模型,然后按照有监督的方法进行finetune,得到强的分类器。然后用这个分类器教小的网络,这样我们就可以使用低成本将大量没有标记的数据,还有训练好的大的网络的知识,灌入小的网络中。
目录:1.Methodology 2.Results & conclusion
1. Methodology
本文提出的模型分为三个部分。
(1)首先是将SimCLR作为backbone,将没有标记的样本放入大的CNN中(这个CNN就是用于做pretrain,并没有做具体的优化)相对于原作而言 1.增大了CNN 2. 作者加入了几层hidden layers到projection MLP中。对比学习部分使用的依旧是contrastive loss,与原作一样的loss函数。经过这一步我们可以得到unsupervised pretraining。
(2)加入label。针对image classification任务做fine-tuning。这一步是标准的有监督的学习。这一步之后我们可以得到一个很强的classifier,也即是teacher network。
(3)然后使用teacher network教一个尺寸比较小的,专门用来做classification的网络。具体来说就是teacher network在unlabeled data上生成Pseudo label,并作为ground truth。输入给student network。
具体在知识蒸馏这一步我们使用什么样的loss呢?
是典型的cross enropy。里面的概率也是与softmax非常接近的,其中的temperature是超参。不仅仅可以用teacher network中产生的label,也可以输入gt(ground truth)让student network判断。结合知识蒸馏的loss和gt的loss,就可以构成一个完整的loss。就是这两项的trade off。
2. Result
模型越大效果越好,label使用的效率越高。
随着projection head的层数增加效果会逐渐变好。(尤其是在label较少的情况下。)
从哪里开始fine-tune?
实验验证,从第一层hidden layer开始比直接从representation开始效果好。但是如果使用的样本很多,还是从representation开始效果好。
distillation 使用unlabel的data可以提升准确率。(distillation起到了重要的作用)
附录有许多有意思的发现,可以读读。