BYOL 阅读笔记 | Bootstrap Your Own Latent: A New Approach to Self-Supervised Learning
背景
首先,本质上这也是一个关于对比学习(Contrast Learning)的方法。关于对比学习的一些背景介绍可以看一下MoCo的笔记。
对于对比学习,我们希望最终的网络有两个能力:
- 将同样本的不同view/arg在特征空间尽量靠近。alignment
- 将不同样本在特征空间内尽量分开。uniformity/dispersion
BYOL做了一件反直觉的事情,在训练中把负样本的对比部分给去掉了。按照直觉,我们会觉得,网络失去了将不同类的特征向量分开(dispersion)的能力,那么网络很容易得到退化解/奇异解(collapsed solution/trivial solution),但是BYOL并没有这样。这很大程度上因为Moving Average/Mean Teacher(也类似于MoCo的momentum方法),下文详述。
主要贡献/动机
动机1 - 结构改进
- 类似于MoCo v2,BYOL也添加了两个MLP,为提升性能
- BYOL添加了2个MLP之后,额外添加了一个predictor,增强灵活性
动机2 - 去除负样本
为什么想到去除负样本呢?
- 取负样本的开销很大,memory bank、MoCo这些工作都在尝试取得尽可能多的负样本。
- 直觉 -- 不取负样本的话无法完成对比学习的任务——不同样本之间的分离,容易获得退化解。
文中给了一个简单的证明,如果想避免坍缩,为什么不能用梯度下降来优化我们的目标。
1)假设,预测器predictor最优时,满足如下条件
2)更新θ根据
3)若要最小化
a. 对于z\_θ
显然成立,所以z\_θ不会坍缩。online网络我们用梯度下降更新参数。
b.对于z'_ξ
显然一个常数解会令
最小,容易坍缩。/target网络我们采用更新参数。
动机3 - Moving Average / mean teacher
其实和MoCo的momentum实际上是一样的,target是online的缓慢收敛、smooth的版本。
首先我们看一个ema曲线的示例,蓝点是原始数据,红线是拟合的数据,绿色的线是EMA曲线,可以看出特点很明显。
文中给出了一个实验,来说明τ对效果的实验。
这个实验说明什么呢:
- Student不能学的太快了,学得太快会很容易退化。
- Student也不能学的太慢,学得太慢会收敛很慢。
- 一个随机初始化的CNN很可能本来就具有将不同样本在特征空间分离的能力,只不过可能不强,我们需要一个速度适中、平缓的一个学习过程,来保持这种能力。
动机4 - 左脚踩右脚
- 一个有趣的现象
文章第3部分的第2段(To prevent...)指出,随机初始化网络A、B,A作为teacher,A随机初始化之后的性能为Top1-1.4%。固定A的参数,使用x的不同aug版本,x1、x2作为两个网络的输入,使用A的网络输出作为B学习的pseudo label,引导B的学习,最终B达到Top1-18.8%。这个动机很神奇,如果可以无穷无尽的这样下去,C再跟B学,D再跟C学... 性能是否会非常高。
- 优化 - 小碎步交替进行,螺旋升天
每次迭代x增强为x1,x2;
输入x1到online,x2到target,算一个loss;
输入x2到online,x1到target,再算一个loss;
然后把两个loss加在一起,更新online的参数,之后mean teacher更新target的参数。
- Loss防止退化
这是一个cos相似度,只关心方向,不关心大小,也防止MSE把feature的scale都拉倒接近0。
- 如何理解这种优化?
相当于将上一段提到的每次提升一大截过程,变成了一个小碎步交替上升的过程。如何解释呢,上段中提到的训练过程,在整个训练的很多次迭代中A的参数都固定,然后B根据A的指导进行参数更新。而Moving Average策略,每一次迭代中,Online网络(相当于A)参数都进行了更新,Target网络(相当于B)都根据online网络的参数进行momentum更新。这样,相当于A网络在训练B的同时,也在提升自身的性能。
另外EMA策略也相当于让target慢步跟上,也算是小碎步的一部分。
实验结果
作者的意思就是——“你看你想不到把负样本去掉吧,你更想不到我把负样本去掉之后还很有效吧”。
小结
那么,我们回顾一下BYOL干了什么
1)去除负样本的同时防止退化
- mean teacher
- cos相似度只关注方向
- 并不是一些文章里说的,MLP里有BN,BN可以防止退化。「BYOL works even without batch statistics」