自监督论文阅读系列:
【自监督论文阅读 1】SimCLR
【自监督论文阅读 2】MAE
【自监督论文阅读 3】DINOv1
【自监督论文阅读 4】BYOL
论文地址:https://arxiv.org/pdf/2006.07733.pdf
github代码地址:https://github.com/deepmind/deepmind-research/tree/master/byol
论文题目:Bootstrap Your Own Latent A New Approach to Self-Supervised Learning
介绍了一种新的自监督图像表示学习方法BYOL(Bootstrap Your Own Latent )。
BYOL在没有负样本对的情况下达到了SOTA水平。在ImageNet数据集上,BYOL采用ResNet-50的Top-1线性分类精度为74.3%,采用更大的ResNet的精度可以达到79.6%。BYOL在迁移学习和半监督学习上的表现与当前的SOTA水平相当,甚至更好。
学习良好的图像表示是计算机视觉的一个关键挑战,因为它允许对下游任务进行有效的训练。
已经提出了很多不同的训练方法来学习这种表示,这些方法通常依赖于视觉前置任务 pretext task。
这些方法需要很仔细的方法来处理negative pair, 比如通过依赖大batchsize、记忆库、或定制挖掘策略来检索negative pair, 此外,它们的性能主要取决于图像增强的选择。
在这篇文章中,我们介绍了BYOL,一种新的自监督图像表示学习的方法。
从图像的增强视图开始,BYOL训练在线网络来预测目标网络,即预测同一图像的另一个增强视图的表示,实验表明,并没有出现模型坍塌的情况。
这篇文章使用ResNet架构评估了BYOL在ImageNet和其他视觉基准上所学的表现。在ImageNet上的线性评估协议下,包括在冻结层来训练线性分类器,BYOL在标准ResNet-50上达到74.3%的top-1精度,在更大的ResNet上达到79.6%的top-1精度(图1)。在ImageNet上的半监督和 迁移学习中,也获得了与当前技术水平相当或更好的结果。
本文主要贡献如下:
大多数无监督方法可以分成生成式和判别式。
大多数方法依靠图像自编码、对抗学习、联合建模数据和表征。生成式方法通常直接操作在像素空间,但计算量大,且图像生成所需要的高水平细节可能不是表示学习所必须的。
对比学习通过将同一图像不同视角的表征拉近,不同图像的视图表征远离,来避免在像素空间中昂贵的生成步骤。
但是对比学习通常需要将每个样本与许多其他样本进行比较才能更好的工作,这就带来一个问题、使用负样本对是否是必要的。
DeepCluster是一个繁琐的解决方案,崽使用先验表征对数据点进行聚类,并使用每个样本的聚类索引作为新表示的分类目标。这个避免使用了负样本对,但是需要昂贵的聚类阶段和特定的预防措施来避免崩溃。
比如相关patch预测、彩色灰度拓展图像、图像inpainting、图像拼接、图像超分辨率、集合变换, 这些已被证明是有用的。然而,即使有合适的构,这些方法也被对比方法所超越。
PBL共同训练代理的历史表征和未来观察的编码。观察编码作为目标训练代理表征;代理表征作为目标训练观察编码。与PBL不同,BYOL使用表征的slow-moving average来提供目标,且不需要第二个网络。
大多数RL的方法,使用固定的目标网络;而BYOL使用以前网络的加权平均移动,以便在目标表征中提供更平滑的变化
这些方法中,***mean teacher (MT)***使用slow-moving average network,为一个被称之为学生的在线网络产生目标。
通常在分类损失中teacher和student的L2一致性,但是当移除分类损失时,类似的方法会出现模型坍塌。而BYOL在oneline上增加了一个额外的预测器来避免坍塌。
BYOL与MoCo不一样,BYOL直接使用移动平均网络来产生目标,作为稳定引导步骤的一种手段。这种纯粹稳定效应也可以改进现有的对比方法。
先提了下研究动机:
许多成功的自监督学习方法建立在交叉视图预测框架的基础上。通常,这些方法通过彼此预测同一图像的不同视图(例如,不同的随机裁剪)来学习表征。
许多这样的方法将预测问题直接投射到表示空间中,图像的增强视图的表示应该是同一图像的另一增强视图的表示的预测。
然而,直接在表示空间中进行预测会导致表征的坍塌: 例如,一个表示在视图之间是恒定的,它总是对自己有完全的预测。
对比方法通过将预测问题重新表述为一个辨别问题来回避这个问题:从一个增强视图的表示中,他们学会辨别同一图像的另一个增强视图的表征和不同图像的增强视图的表征。
在绝大多数情况下,这阻止了训练找到崩塌的表征。然而,这种辨别方法通常需要将增强视图的每个表示与许多负面示例进行比较,以找到足够接近的示例,从而使辨别任务具有挑战性。
为了防止崩溃,一个简单的解决方案是使用一个固定的随机初始化的网络来产生我们预测的目标。虽然避免了崩溃,但从经验上看,它不会产生很好的表现。
尽管如此,有趣的是,使用该过程获得的表示已经比初始固定表示好得多。
BYOL的目的是学习一个可以被用到下游任务的表征 y θ y_θ yθ,描述如下:
使用随机梯度下降法最小化最终的损失
BYOL没有使用显示的对策来防止模型坍塌,仅通过最小化损失来更新参数(没有使用负样本,也没有对比损失)
总结两点如下:
目标网络的参数不是直接通过损失函数来更新的,在训练中只训练online network,target network实际上是一种过去的online network。这也就导致了无论怎么训练这个模型都不能使loss达到最小值。有些类似于GAN,有两个network进行对抗,始终无法将loss降下来。
BYOL增加了一个预测头,BYOL在online network后又增加了几层神经网络将online network中的projection预测到target network的latent space中, 为了能够完美的达成以上目标,整体的网络结构必须能够很好的克服图像增强对图像的影响,能够准确的将增广后的图像聚集(靠拢)在一起。这样实际上强迫了encoder学习出一个好的、更高级语义的表达。
首先,通过随机水平翻转选择图像的随机块并将其大小调整到224 × 224,随后是颜色失真,由亮度、对比度、饱和度、色调调整和可选灰度转换的随机序列组成。最后,高斯模糊和solarization被用于随机块。
表征 y y y对应着最后一层平均池化层的输出,维度为2014。和SimSLR一样,表征 y y y被多层感知器(MLP) g θ g_θ gθ投影到更小的空间,并且对于目标投影 g ξ g_ξ gξ也是相同。该MLP包括输出尺寸为4096的线性层,随后是批量归一化]、校正线性单元(ReLU) ,以及输出尺寸为256的最终线性层。与SimCLR相反,这个MLP的输出不是批量标准化的。预测器 q θ qθ qθ采用与 g θ gθ gθ相同的架构。
基本学习率设置为0.2,随批次大小线性缩放(学习率= 0.2 ×批次大小/256)。此外,我们使用 1.5 ⋅ 1 0 − 6 1.5 · 10^{−6} 1.5⋅10−6的全局权重衰减参数,同时从LARS自适应和权重衰减中排除偏差和批次标准化参数。对于目标网络,指数移动平均参数 τ τ τ从 τ b a s e = 0.996 τ_{base}= 0.996 τbase=0.996开始,在训练期间增加到1。具体来说,我们设置 τ = 1 − ( 1 − τ b a s e ) ⋅ ( c o s ( π k / K ) + 1 ) / 2 τ =1 − (1 − τ_{base}) · (cos(πk/K) + 1)/2 τ=1−(1−τbase)⋅(cos(πk/K)+1)/2,k为当前训练步骤,K为最大训练步骤数。我们使用的批量大小为4096,分布在512个云TPU v3内核上。使用这种设置,ResNet-50(×1)的训练大约需要8个小时。
用ImageNet的数据进行自监督预训练,然后在各种下游任务中进行评估。
在ImageNet的一个小子集分类任务上,微调震哥哥网络。这里没有冻结表征层
下图展示了不同训练数据比例的性能,可以看到,有监督在训练数据很少的情况下,性能是非常差的。
下图是在多个Resnet上,不同比例的数据Fintuning的结果
评估在ImageNet上学到的表征是否通用,因此在其他分类数据集上进行了评估。同样两种实验,冻结表征层和全部层进行微调。
在语义分割、目标检测、深度估计都评估了BYOL学习到的表征能否推广到分类任务之外
猜测SimCLR batchsize小时,负样本对就比较少,所以对batchsize很敏感。
BYOL在batch从256-4096时,相对比较稳定。此外还提到,由于编码器中的批归一化层,只有在较小的值上下降
也依赖数据增强,但相比SimCLR, 对数据增强没那么敏感。
评估了动量更新的参数、网络结构等
本文的实验数据非常详细,有着很重要参考价值,并且都记录在附录中。
详细见这篇博客:
BYOL:一种新的自监督学习方法
BYOL论文简析——笔记