Exploring Simple Siamese Representation Learning论文笔记

写在前面

大三狗随手记录,不喜勿喷。

主要思想

Siamese network常常被用来计算图像的两个增强之间的相似性,但可能会造成模型坍塌(即输出恒定)。作者在本文提出了一个非常简单的Simple Siamese network,简称Simsiam,能产生很好的效果,并且对防止坍塌(collapse)很有效。

框架

Siamese Network就是同一个图像X的两种增强Xi和Xj经过同样的编码器f(权重相同),并计算两个encoder的输出的距离,如果距离较近就认为是同一类,较远就认为是不同的类别,最大化两者之间的相似性。
Exploring Simple Siamese Representation Learning论文笔记_第1张图片

本文提出的方法和Siamese Network的方法是非常相近的。让同一个图像X的两种增强Xi和Xj经过同一个编码器f,然后在一侧用prediction MLP,在另一侧用stop-gradient操作。最大化两者之间的相似性。
作者在这里给出了模型训练的伪代码。非常的简单易懂。
Exploring Simple Siamese Representation Learning论文笔记_第2张图片

相比于其它模型如SimSLR,BYOL,SwAV,本文提出的框架是非常简单的,但是它依然能够有很好的效果。

消融研究

为了研究出哪一部分设计在Simsiam当中是至关重要的,作者做了很多的消融研究。
首先对于是否有stop-gradient,也就是是否停止一侧的网络传递loss进行了测试,显然如果使梯度进行传递,loss会非常小,因为两个网络的参数是一样的。这样最后性能是非常差的,因为它们很容易就会达到两个网络参数一样导致模型坍塌。然而可以看出有stop-gradient操作的准确率一直在上升。因此stop-grad操作是非常重要的。
Exploring Simple Siamese Representation Learning论文笔记_第3张图片

作者又测试了使用完全随机固定值作为predictor的或者直接没有predictor,模型的性能也很差,因此predictor也是很重要的。
Exploring Simple Siamese Representation Learning论文笔记_第4张图片

作者还测试了Batch size和Batch normalization的影响等等。实验发现,Batch size并没有太大的影响。但与SimCLR 和 SwAV 这两种方法相比优势在于,后者都是在batch_size为4096的情况下效果不错,此方法在64,128这样的小批量下效果依旧很好。
然而Batch Normalization在不同位置的作用虽有影响,但与模型的坍塌无关。
Exploring Simple Siamese Representation Learning论文笔记_第5张图片

在Similarity Function的选择上,作者实验发现余弦距离更好。
在这里插入图片描述

在Symmetrization对称性的比较中,作者发现对称有助于提高准确性,但它与预防坍塌无关。对称为每幅图像多做了一个预测,最终使得差距缩小。

在这里插入图片描述

研究结果

作者在与几种类似方法的对比实验后得出结论,本文提出的方法与SimCLR,MoCo v2,BYOL,SmAV的性能是非常接近的,甚至优于一些前人的工作。

总结

Siamese network非常适合给不变量进行建模,在表征学习当中是一个非常重要的工具。作者提出的SimSiam作为一种非常简单的方法,可以在不产生模型坍塌现象的情况下产生较高性能的结果。作者希望我们大家可以继续挖掘Siamese network在表征学习当中的潜力。

非官方的代码复现:https://github.com/PatrickHua/SimSiam

你可能感兴趣的:(论文阅读,机器学习,深度学习,1024程序员节)