[论文理解] Understanding self-supervised and contrastive learning with "Bootstrap Your Own Latent" (BYOL)

Understanding self-supervised and contrastive learning with "Bootstrap Your Own Latent" (BYOL)

Intro

主要探讨一下BYOL的问题,其他略过,文章发现了BYOL的成功似乎还是没有逃过负样本的使用,提出BYOL其实利用BatchNorm隐式的使用到了负样本的假说,并且有实验来作证。

Findings

本文的起因是一个实验,实验发现,BYOL的MLP层的BatchNorm尤为重要,当这一层失去BatchNorm层,结果就很差:

而跟BYOL差别很小的MOCO(BYOL基础上使用了负样本)的方法MLP层不加BatchNorm却没有这一问题,于是作者开始怀疑,BYOL的成功和MLP层的BatchNorm层有着千丝万缕的关系。

既然BatchNorm层有问题,那到底是Batch出了问题还是Norm出了问题?

验证一下是不是Norm出了问题(有无norm导致),则可以用LayerNorm试试看。而如果是Batch出了问题,则可能是BatchNorm的Batch在计算过程中泄漏了整个Batch的样本信息,导致可能隐式地起到加上负样本的作用,当然,到目前为止只是一个直觉上的猜测。

从上表的实验可以看出,两个MLP层都失去BatchNorm之后结果和random差不多,替换成LayerNorm也没有帮助结果提升,因此我们需要进一步思考一下,BatchNorm是否泄漏了负样本的信息以及是如何泄漏的。

文章提出了一个假说,认为BatchNorm的作用是防止其作用之后的输出为常量,从而避免了模型的输出坍缩到一个定值。这个说法很直观,因为BatchNorm作用后的输出满足固定方差而不是0方差,所以一定不可能是常量,因而避免了collapse。非0方差强行使得batch内的样本具有一定的距离拉开作用,而最终的loss会使得positive pair有拉近的作用,综合这两者的作用其实是和使用负样本有异曲同工之妙。

为了验证假说,文章测试了一下不使用BatchNorn的层的输出结果,的确不同样本的结果都高度相似,因此的确是出现了collapse。(感觉这个实验不能证明BatchNorm的是防止坍缩,只能证明去掉BatchNorm确实发生了坍缩,这一块感觉只有有理论证明才比较有说服力。。)

补充实验

这个实验是encoder使用BatchNorm下的实验,第一说明了即便MLP层没有BN,也在训练了一段时间后避免了collapse(前10epochs发生了collapse,但是后来好了),这一块有点尴尬,之前的实验都是在10epoch的时候看的结果得出的BatchNorm防止collapse的结论,但这里又训练的更长,又发现collapse随着训练的进行又可能被训练“修正”,侧面其实说明前面的实验不太严谨。。但是这里可以看出,MLP没有BatchNorm的效果要比又BatchNorm差一些,这一点精度的降低可能来自BatchNorm层去掉造成了优化变差,也可能是本文提出的假说即BN去掉之后防止模型collapse的能力下降。但使用LARS优化器之后MLP层不使用BN,精度却上升了,我感觉侧面支持了BatchNorm去掉是优化能力下降导致精度降低的,当然这里面也可能是两种作用的综合,所以这个实验的说服力不是很强。。。

这个实验是encoder层使用GN的情况下MLP层使用不同归一化的训练效果,GN不跨batch,如果MLP层不加BN,则效果不行,但是却又可以用LARS优化器调参调上去,这条绿色的线我觉得已经说明优化的重要性了,显然BN在这里的作用更多的是帮助优化,但并不能太多的支持本文提出的假说,但也不能否定本文提出的假说,因为毕竟LARS优化上去的效果和加了BN的差距还是有的,说不定这点gap就是本文带来的。此外,这一实验还有一点,仅仅最后的MLP加上BN而前面不用BN效果就可以避免collapse,这一块又支持了本文的假说,mode collapse的确能够通过加上BN大大缓解,因为如果支持BN在这里主要起帮助优化作用而非本文的假说,那么前面的层不用BN而是GN的优化效果应该仅仅比蓝色的线好一点,而非好这么多,因为使用BN的层仅仅就一两层,一两层的BN对整个参数空间的优化提升应该没有这么大吧?

所以,从这个实验看,我支持BN不仅会带来优化上的提升,而且也支持本文提出的假说。因为BYOL成功的原因很可能是这两者共同起作用,而非仅仅本文的假说。

这一实验探究了weight decay对collapse的影响,weight decay也能帮助模型跳出collapse,但是需要的时间可能会比较长(本实验中是100epoch左右)。

这一实验探究了GN对collapse的影响,也有可能帮助模型跳出collapse,说明collapse虽然可能发生,但还是有机会跳过的(我觉得这里补充一下BN的训练过程图和这图的对比比较有说服力,如果BN的训练过程完全不发生坍缩则进一步作证了本文观点)。

综上,BYOL成功感觉更像是很多调参的综合影响,影响collapse的参数是在过多,从实用角度上并不实用;本文提出的假说的确能够通过实验一定程度上得到证明,但BYOL成功的因素却不仅仅是因为BN。

posted @ 2021-10-03 00:41  aoru45  阅读(485)  评论(0编辑  收藏  举报