第一时间看了一下这篇文章。基本可以理解成去掉了momentum encoder的BOYL。论文主要分析了BYOL里面的几个关键的设计,并给出了几个主要的结论 :
1、BYOL里面的predictor层,对Siamese encoder结构引入了一定的非对称性;这种非对称可以帮助一定程度让缓解feature collapse的问题,因为两个共享分支不再被强迫输出完全同样的特征,predictor层一定程度容纳了非一致的特征;
2、同样地,BYOL里的Stop Gradient也对阻止特征collapse起到了关键作用;论文给了一个 假设(Section 5),认为这相当于引入了另一组的中间的隐变量,然后迭代地优化这个特征隐变量以及特征网络;
3、上面引入的隐变量,严格上来说应该是某个图像在多次不同增强上得到的特征的平均值;但可以用单次增强来做近似;这个近似造成的误差通过引入predictor可以得到一定程度的缓解;
4、再多个GPU之间 sync的global BN对性能影响也非常大;比如,如果拿掉MLP上面的BN,分类精度就会下降一半 (section 4.4)。
总结一下,上述的几个设计,对最终下游任务的性能影响都非常大。这点和BYOL里面是一直的。从实验效果上看,SimSiam在去掉了BYOL里面的 momentum encoder后
1、在比较小的256的batchsize上,100轮预训练比BYOL 高1.6%,但200轮,400轮和800轮上都比BYOL较低;其中SimSiam在800轮上比BYOL低3%左右。
另外,这里虽然100轮预训练SimSiam要高一些,但考虑到对比的BYOL用到的batchsize要大很多(4096),意味着BYOL在100轮预训练的时候还处于训练早期,很可能没有充分被训练好(batchsize越大,迭代更新的次数越小)。所以,后续如果有同样256batchsize在100轮的结果,比较就更公平。
2、当然,上面对比的BYOL的batchsize是4096。不过BYOL文章里面有跑过256batchsize的实验,大概比对应的BYOL-4096在800轮上要低个3%;而从SimSiam-256在800轮上的结果来看,基本和BYOL-256差不多;这个也的确说明去掉了momentum encoder对BYOL的性能是没有什么影响的。
大家可以再看一下对另外一个关于BYOL问题的回答,里面有更深入的分析,也许有更多启发。
欢迎大家关注我。