Closed jasperzhong closed 4 years ago
这篇文章让我想起了当年 1h训练imagenet #4 ,同样都给了非常有用的训练技巧,基本是经验结论,每一个claim都有一个实验支撑,看完觉得很过瘾
总的来看,监督学习的很多经验,在对比学习里面并不适用
本文首先是提出了一个简单的对比学习方法SimCLR
输入一张图片x,做两个data argumentation得到x1 x2,然后经过一个encoder(CNN backbone)变成$h$ feature/representation,再经过一个head(2层的MLP)变成$z$,最后计算loss
注意:最后是使用h作为最后的feature,而不是z. 预训练完后,丢弃head,保留encoder(后面有解释)
loss如何计算?参考下面的公式
假如输入有N张图片,经过增强后产生了2N张图片,N对pair是positive examples,而某个图片与其他剩下2(N-1)张图片都是negetive examples.
具体算法如下,非常清楚
这篇文章实验量非常大。。。就算有8台p3.16xlarge估计也要搞三个月……仔细一看用的是TPUv3,再见
TLDL.
另外还有一个坑: global BN:跨机跨卡BN,这个比较操蛋,local BN容易泄露信息,我还不清楚哪些框架支持这个(好像mxnet可以?),不过我估计# #82 的shuffle BN应该也可以
差不多就是这些tricks,文章其他部分就是做ablation study
batch size看上去最高到了8192,其实也不算多大,如果单卡256的话,也才32张卡而已,4台p3.16xlarge而已
large batch应该是这个方法能够work的关键,如果batch size只有256,最后linear evaluation的结果只有57.5%,这是远低于MoCo #82 的60.6%的;但当batch size翻倍到512,就超过了60%;当batch size达到8192的时候,逼近65%了。这涨分有点厉害。
但还不够。作者发现其实100个epochs(resnet50的supervised的标准一般是120epochs)还收敛的不够,继续训练到1000个epochs,居然可以涨到接近70%。而且训练越久,batch size之间的差异也开始缩小。
这个发现非常有意思。因为他们已经使用了linear LR scaling, warmup甚至LARS这样的技巧,对于supervise learning来讲,是不需要训练更久的(他们也在B3确认了这点,supervised训练更久没用)。这说明对比学习的收敛速度是远慢于监督学习的。 很期待有人来填坑,如何加速收敛(
作者还对比了linear LR scaling与root squre LR scaling(B2),结果看上去在训练不充分的情况下,后者表现更好些。 这二者之争确实挺久了…我以为 #4 已经终结了这个问题。但是没想到去年的 #3 又用了root squre LR scaling.... emmmmm 我也迷惑了
这张图不错,显示crop + color distortion是很好的组合
奇怪的是为什么这两个组合能涨点这么多?作者推测是因为单独使用crop的话,很容易导致color distribution是一样的。如下图。
另外他们还说明,对比学习需要更强的data argumentation相比于监督学习,如下图,color distortion越厉害,对于SimCLR涨点越多,而对于监督学习反而更差。。。
这里发现的结论是:模型越大,无监督对比学习涨分越多。如图
他们使用了non-linear的head,也做了实验证明确实更好...如图
但是他们发现,使用head之前的h作为feature,要比head的输出z,更好(好10%)。这点就是为什么他们最后选择h作为feature的原因。他们的解释是non-linear projection是按照对data变换无关来训练的(大概是因为做了data argumentation?),所以non-linear projection可能会去除一些有用的信息,比如颜色或者方位。 然后他们做了一个实验,用h或者g(h)来预测使用了何种transformation
这组对比是Linear evaluation,resnet50能到69.3%,还是远低于supervised的76+%
这组是semi-supervised,用部分标签来finetune,1%的标签能到75.5%,比较接近了
这组是在下游任务上做transfer learning,看上去光linear evaluation就能打平supervised了
期待SimCLRv2 #92 是否解决了上面几个坑
我刚注意到 semi-supervised的结果是远差于linear evaluation的。。。Resnet50在1%标签上semi-supervised只有49%的top1....而直接linear evaluation都有69%了....
有趣....
SimCLR learns representations by maximizing agreement between differently augmented views of the same data example via a contrasive loss in the latent space.
https://arxiv.org/abs/2002.05709