Facebook AI Research & Stanford University 带来的自监督学习相关研究
『 ML时代的机器学习模型一般只做最后的分类聚类回归,深度学习时代的模型把特征提取的工作一并做了,可以预见,未来我们需要更复杂的模型自动收集和筛选数据。』
—— 查资料发现的一句话
主要内容
- SimCLR框架介绍
- BYOL(Bootstrap Your Own Latent)框架介绍
- 本文内容
SimCLR
简单有效的对比学习框架
主要成果:自监督 76.5% top-1 on ImageNet ILSVRC-2012
仅用 1% of the ImageNet labels 微调, 得到 85.8% top-5 accuracy
其中:
(1)数据增强:旋转、切割、翻转、变色、模糊等
(2)f(.) ——ResNet-50架构作为ConvNet编码器,输出是2048维向量h。
(3)g(.) ——如图所示,zi = g(hi) = W(2)σ(W(1)hi)
实验发现,效果上,非线性映射 > 线性映射 > 不映射(即直接用hi hj
(4)loss function NT-Xent (the normalized temperature-scaled cross entropy loss).
, 其中sim为余弦相似度
训练细节:
(1)large batch size
batch size N from 256 to 8192,实验发现大的batch size 对于对比学习有利
(2)Global batch normalization
(3)linear warmup for the first 10 epochs, learning rate 4.8 (= 0.3 × BatchSize/256) weight decay of 10−6
BYOL(Bootstrap Your Own Latent)
魔法般的教师-学生框架
主要结果:在标准ResNet-50上达到74.3% top-1,在更大的ResNet上达到79.6%的top-1精度
与SimCLR不同的是:
(1)不需要输入负样本对
(2)使用两种神经网络进行学习:在线网络和目标网络。在线网络比目标网络多了一个预测器qθ(也是一个MLP),但BYOL的MLP结构中多了一层BN
(3)目标网络的参数ξ不进行梯度更新训练,而是由θ进行移动平均
(4)loss为回归形式
将同一样本的两个增强样本对称地输入网络,得到两个Loss,将他们相加得到总体Loss
本文的方法并不依赖于 negative samples,对 batch size 和 augmentation 不敏感
WHY IT WORKS?
● 动机
首先随机初始化一个网络 (它的准确率是 1.4%, 相当于瞎猜), 直接用它当做 target network,然后训练online network, 让这个网络去贴近 target network, 当训练结束的时候, online network 的准确率竟然达到了 18.8%
左脚踩右脚上天——知乎郑华滨的答案
对比学习的两大目标:(1)不同的原样本有不同的表征(2)同一原样本增强产生的样本应当有相同的表征
之前其实已经有挺多工作告诉我们,一个随机初始化的CNN就已经具备一定程度的图像特征抽取能力。更进一步地,如果CNN随机初始化之后,就已经会把不同的样本输入投射到特征空间的不同地方,并且投射得足够分散,那它就已经完成了contrastive learning框架中第一个目标。如果上述猜测成立,那么只要在接下来的训练过程中达成contrastive learning框架第二个目标,并且小心翼翼地维护第一个目标不被破坏,避免网络收敛到trivial solution,那就确实可以抛开负样本。而本文采用的方法是随机初始化+mean teacher学习
到这里,我还有一些疑问,长时间的迭代后,两个网络的参数不会变得很接近吗?怎么保证参数不发生坍缩?
● 得到有效表示的手段Ⅰ
知乎史海舟的答案
BYOL的Teacher-Student framework很可能不是它工作的关键,使模型远离自己的Mean Teacher才是防止collapse的有效正则方法。而BYOL在有predictor网络时达成了和以上方法的等价。
团队首先从实验上验证predictor对于防止collapse的重要性。通过替换不同的predictor类型( MLPP / LP / LPI / NP 分别对应 MLP predictor / Linear predictor / Linear predictor initialized by I /No predictor),发现不使用predictor时,BYOL的表现会下降到比random baseline更差,发生collapse;另外值得注意的是当predictor为linear mapping的时候BYOL依然work,甚至当显式地给predictor提供一个退化解作为初始化值时,BYOL依然work;
接下来,该团队将BYOL的Loss分解为三项:(1)同一原输入不同增强的差别alignment loss(记为La);(2)online network靠近自己历史版本的移动平均,称cross-model loss(记为Lcm);(3)不太好解释的交叉项,实验发现交叉项这部分是增加的,据此推测交叉项是一个不重要的loss。
于是作者尝试优化 α × La + β × Lcm,(α β均为1时,即完全舍弃交叉项)这个新的loss和原来的loss在线性predictor条件下效果接近
作者希望将cross-model loss和uniformity loss建立联系,结果发现使用 La - Lcm 竟然也有效果,于是据此提出一个新的框架RAFT,它优化两个目标:拉近同一个data不同augmented view的representation,以及拉开和自己历史版本EMA(文章中称为Mean Teacher,MT)的距离。此外作者还给出了一些基于RAFT理解BYOL的结论。
● 得到有效表示的手段Ⅱ
Abe Fetterman, Josh Albrecht 在复现时得到的结论
(1)在删除batch normalization时,BYOL的性能通常不比random好
(2)batch normalization的存在隐式地导致了一种对比学习的形式
首先作者发现,另一个使用了mean teacher模式的对比学习模型MoCo不需要BN,但BN对BYOL性能的影响很大,作者怀疑没有使用对比损失函数会导致训练依赖于BN;
接下来,作者想知道是否在投影MLP g、预测MLP q或两者中都需要batch normalization。实验表明批batch normalization在投影MLP中是最有用的,但是网络可以通过batch normalization在任一MLP中学习到有用的表示;
在对比损失函数中使用负样本的一个目的是防止模式坍塌,如果在投影层g中使用BN,那么投影输出向量z就无法坍缩成任何奇异值,无论如何相似的输入经过batch normalization,输出将根据学习的平均值和标准偏差重新分配,同样,BN在预测MLP中也可以产生类似的效果。
我们可以把batch normalization看作是在嵌入式表示上实现对比学习的一种新方法。SimCLR和MoCo使用的显式对比方法是这样学习的:“这两个特定图像之间的区别是什么?” 通过batch normalization,BYOL的学习方法是:“这张图像与平均图像有什么不同?”,这两种方式似乎是相同的。
Understanding self-supervised learning with dual deep networks
主要结论:
通过对SimCLR+InfoNCE梯度下降的分析,我们找到了一个在多层ReLU神经网络中,每一层权重随梯度更新的关键矩阵,文中称作协方差算子(covariance operator)。
其中K为 l 层的“连通性” ,求其关于数据增强的期望,再求关于输入样本的方差,即为协方差算子,而每层权重的更新与该算子密切相关。
协方差算子是随着当前权重的变化而变化的,但在整个训练过程中一直保持半正定。这个结论比较强的地方在于,它不依赖于输入数据的具体分布,也适用于任意的数据增强过程。唯一的假设是InfoNCE这个对比损失函数(contrastive loss)向下传播的梯度是近似常数。如果大家嫌这个假设比较强,那么采用简单的“正样本间距减去负样本间距”作为对比训练的目标函数,这个假设就是简单成立的。
具体来说,文中分析了三种常用的对比损失
对于第一种最简单的损失Lsimp,
对于后两种损失,,强调了不同样本之间的表示的差别,θ为残差项,作者提到,如果在训练中θ能够减小,那么这种形式的loss能够将梯度更新中重要的信息和不那么重要的部分分开,使得网络能学到更多的东西。
作者的另外一大创新点是,引入了数据的生成模型来具体揭示网络的训练过程。主要想法是数据由两组主要的隐变量 z 和 z' 生成,其中 z 和数据的“类标签”相关,在数据增强之后不会发生改变;而z' 则囊括了生成过程中与类标签正交的部分,比如说图像旋转和缩放程度等,在数据增强之后会发生变化。
在不同的生成模型下,协方差算子的行为并不一样,作者主要分析了几种有代表性的情况。 首先是最简单的单一神经元的一层网络,和具一维平移不变性的两类物体识别问题,在这种情况下协方差算子有解析解。 但有趣的是,如果神经元是线性的,这个算子是零(所以没有权重更新发生),只有在神经元是ReLU的情况下,才会利用初始涨落学会并且巩固学到的有效特征。这就显示出了神经网络中非线性变换的重要性。
在此之上,作者进一步分析了一些更复杂的情况,比如说两层ReLU的权重同时训练时,上下两层的协方差算子会产生互动,上层的训练成果会改变下层协方差算子,从而加速了下层的权重学习,这就是多层训练的好处。之后,还分析了一个更加广义的生成模型,即层次式隐变量树模型(Hierarchical Latent Tree Model, HLTM)与多层受限感受野的ReLU网络的互动,发现有相似的结论,并且还能看出来ReLU中间层的神经元,能学到对应的树模型同层隐变量的值,即便这些中间层在SSL训练时,并没有收到任何相关监督信号,这一定程度上揭示了神经网络训练的内部过程。
最后一部分,作者用这个框架来分析BYOL不需要负样本对的秘密 ,根据其模型的三个特点:(1)不对称的双塔结构(2)使用移动平均(3)使用BN,作者首先将BN简化成“对前一层的输入作零均值”的操作,这样它对反传梯度的效果,就是对梯度进行零均值,计算出新的权重更新方式
这个公式里面的第一项是鼓励类标签相同的样本其表示也相近,如果只有这项,BYOL应当收敛到平凡解。后两项中,负项是之前提到协方差算子的相反数,而正项则类似协方差算子本身。 有趣的是,因为BYOL的不对称性,负项是个关于predictor的二次项,而正项是个关于predictor的一次项。 如果predictor里面的权重其绝对值比较小,那么负项的幅度要比正项小,正项占主要贡献,于是协方差算子再次登场,而BYOL也就有效,再次证明了BN的重要性。
参考资料: