Exploring Simple Siamese Representation Learning
作者:Xinlei Chen, Kaiming He 2020年
今天学习内容主要来自知乎的一篇文章
参考链接点击这!
1、摘要
孪生网络常用在计算增广图像之间的相似性。但存在“Collapsing”问题。(即输出恒定)我们经常使用这三种方式解决:{负样本对,批量,动量编码器}。本文提出了一个关于停止梯度含义的假设,对防止“Collapsing”很有效。
2、主要思想
一般过程:假设输入图像x,对它进行两次随机增强得到x1,x2。分别送入编码器f(.)和一个Projection MLP(主干网络使用Resnet),其中一个分支接入Prediction MLP(用h表示)。用公式表示这个过程为:
然后希望最小化之间的负余弦距离:(公式1)
对称损失表示为:(公式2)
本文创新:另一个分支加入stop-gradient
所以改进的公式1可以表示为:
改进的公式2可以表示为:
Projection MLP和Prediction MLP的结构图:
3、实验部分
这部分主要是做了一些消融实验。
1、说明Stop-Gradient的作用
结果解释:
左图不使用Stop-gradient,loss一直下降,但是不能说明是“Collapsing”现象;中间的图计算的是方差。理论来讲,如果是“Collapsing”现象,则方差接近0;可以发现不加Stop-gradient的操作方差为0,出现了“Collapsing”现象,与之相反,加了Stop-gradient操作的方差保持在1/根号下d。右图为测试结果的准确率,可以看出加了Stop-gradient操作的准确率一直在上升。
2、判断Predictor (h)的作用
结果解释:a是去掉h部分,可以发现会出现“Collapsing”现象;b是随机初始化,不是“Collapsing”现象导致的,但是准确率也非常低;c是学习率不衰减,可以发现准确率很高。作者推测是因为h应该适应最新的表示,所以在特征被充分训练之前,没有必要通过减少学习率来强制让模型收敛。
3、batch_size的影响
结果解释:我们的方法batch_size不论给大给小,准确率都不错。与SimCLR 和 SwAV 这两种方法相比优势在于,后者都是在batch_size为4096的情况下效果不错,我们的在64,128的小批量下效果依旧很好。(针对大batch_size可以使用优化器LARS)
4、Batch Normalization在不同位置的作用
结果解释:a是不使用BN(效果不是很好,但是没有发生“Collapsing”现象);b是在隐藏层使用;c是默认,将BN加到f的输出;d是将BN加入到预测MLP即h的输出,效果不好,但是与“Collapsing”无关,训练不稳定且损失震荡。
5、Similarity Function的选择
结果解释:余弦函数效果好
6、Symmetrization对称性的比较
结果解释:第一个是对称,中间是非对称。对称有助于提高准确性,但它与预防坍塌无关。对称为每幅图像多做了一个预测,我们可以通过在非对称版本2×中为每幅图像采样两对来大致补偿这一预测,它使差距缩小。
4、总结
在各种设置中,SimSiam可以在不产生Collapsing现象的情况下产生有意义的结果。优化器(批大小)、批归一化、相似函数和对称可能会影响准确性,但我们没有看到任何证据表明它们与防止Collapsing有关。其中起关键作用的主要是stop-gradient操作。
附带另一篇有关自监督对比学习的文章:
Supervised Contrastive Learning
4月2号打卡!