对比学习系列(四)---BYOL

BYOL

BYOL

MoCo,SimCLR等对比学习方法都依赖于负样本,BYOL不需要负样本也能在ImageNet上取得74.3%的top-1分类准确率。BYOL使用两个神经网络,online网络和targets网络。online网络的参数设为 θ \theta θ,由三部分组成,编码器 f θ f_{\theta} fθ,projector g θ g_{\theta} gθ和projector q θ q_{\theta} qθ;target网络与online网络有相同的架构,但是拥有不同的参数 ξ \xi ξ。target网络提供回归目标训练online网络,但是target网络的参数 ξ \xi ξ采用EMA(指数滑动平均)公式(与MoCo的动量更新公式相似)进行更新。公式为 ξ ← τ ξ + ( 1 − τ ) θ \xi \leftarrow \tau \xi + \left( 1 - \tau \right)\theta ξτξ+(1τ)θ

在这里插入图片描述

对于位于图像集 D D D中的一张图像 x x x,使用两种数据增广方式对图像 x x x进行扩增得到两种扩增视图 v v v v ′ {v}' v,然后第一个扩增视图 v v v经过online网络得到表示 y θ = f θ ( v ) y_{\theta}=f_{\theta}\left( v \right) yθ=fθ(v)和映射 z θ = g θ ( v ) z_{\theta} = g_{\theta}\left( v \right) zθ=gθ(v),将第二个扩增视图 v ′ {v}' v喂入target网络也分别得到表示 y ξ ′ = f ξ ( v ′ ) {y}'_{\xi}=f_{\xi}\left( {v}' \right) yξ=fξ(v)和映射输出 z ξ ′ = g ξ ( v ′ ) {z}'_{\xi} = g_{\xi}\left( {v}' \right) zξ=gξ(v)。online网络比target网络多了预测输出 q θ ( z θ ) q_{\theta}\left( z_{\theta} \right) qθ(zθ),分别对 q θ ( z θ ) q_{\theta}\left( z_{\theta} \right) qθ(zθ) z ξ ′ {z}'_{\xi} zξ进行l2正则化得到 q ˉ θ ( z θ ) = q θ ( z θ ) / ∥ q θ ( z θ ) ∥ 2 \bar{q}_{\theta}\left( z_{\theta} \right) = q_{\theta}\left( z_{\theta} \right) / \| q_{\theta}\left( z_{\theta} \right) \|_{2} qˉθ(zθ)=qθ(zθ)/∥qθ(zθ)2 z ˉ ξ ′ = z ξ ′ / ∥ z ξ ′ ∥ 2 {\bar{z}}'_{\xi} = {z}'_{\xi} / \| {z}'_{\xi} \|_{2} zˉξ=zξ/∥zξ2,最后定义正则化的预测输出 q ˉ θ \bar{q}_{\theta} qˉθ和target网络的映射输出 z ˉ ξ ′ {\bar{z}}'_{\xi} zˉξ的MSE函数作为损失函数。

L θ , ξ = ∥ q ˉ θ ( z θ ) − z ˉ ξ ′ ∥ 2 2 = 2 − 2 ⋅ ⟨ q θ ( z θ ) , z ˉ ξ ′ ⟩ ∥ q θ ( z θ ) ∥ 2 ⋅ ∥ z ξ ′ ∥ 2 L_{\theta, \xi} = \| \bar{q}_{\theta}\left( z_{\theta} \right) - {\bar{z}}'_{\xi} \|_{2}^{2} = 2 - 2 \cdot \frac{\left \langle q_{\theta}\left( z_{\theta} \right), {\bar{z}}'_{\xi} \right \rangle}{\| q_{\theta}\left( z_{\theta} \right) \|_{2} \cdot \| {z}'_{\xi} \|_{2} } Lθ,ξ=qˉθ(zθ)zˉξ22=22qθ(zθ)2zξ2qθ(zθ),zˉξ

通过将 v ′ {v}' v喂入online网络和将 v v v喂入targets网络得到对称损失函数 L ~ θ , ξ \tilde{L}_{\theta, \xi} L~θ,ξ, BYOL总的损失函数为 L θ , ξ B Y O L = L θ , ξ + L ~ θ , ξ L_{\theta, \xi}^{BYOL} = L_{\theta, \xi} + \tilde{L}_{\theta, \xi} Lθ,ξBYOL=Lθ,ξ+L~θ,ξ。模型训练过程中只有参数 θ \theta θ根据梯度进行更新,参数 ξ \xi ξ依据EMA公式进行更新。

在这里插入图片描述

算法对比

SimCLR算法将某一输入图像 x x x的两个不同views喂入相同的网络得到两个projection输出 z z z z ′ {z}' z,SimCLR对比损失的宗旨是:最大化输入图像 x x x的两个projection输出 z z z z ′ {z}' z之间的相似性,同时最小化与同一batch中的其他图像的projection之间的相似性。MoCo V2借鉴了SimCLR中的数据增广和projection层,减少batch size并提高性能。不同于SimCLR,MoCo V2中应用了动量更新,编码器分成了online 网络和momentum网络,online网络训练时通过SGD进行更新,momentum网络则是基于online网络参数的滑动平均进行更新。BYOL借鉴了MoCo的momentum网络,添加了一个MLP层 q θ q_{\theta} qθ z z z预测 z ′ {z}' z, p = q θ ( z ) p = q_{\theta}\left( z \right) p=qθ(z)。BYOL用正则化后的目标 z ′ {z}' z和正则化后映射输出 p p p的L2损失函数替代了对比损失函数。BYOL中不需要负样本,所以BYOL不需要memory bank。

  • SimCLR中的MLP,每个线性层后都带有BN
  • MoCo V2中的MLP,不使用BN
  • BYOL中的MLP,只在第一个线性层之后带有BN

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

由于这三个算法中的MLP中BN的使用不同,导致使用MoCo中的MLP去训练BYOL时,模型的表现和模型随机的效果接近。参考[3]的博客作者发现:即使在损失函数中没有负样本,BN也隐含地在BYOL中引入对比学习。显然,这和BYOL算法不使用负样本的思想相悖。

BN的作用

为了驳回BYOL需要BN防止模型坍塌,是因为BN提供隐含的负样本,这一假设,BYOL论文作者又做了大量实验,探索在SimCLR和BYOL不同组件(编码器,SimCLR和BYOL的projector和BYOL的predictor)中使用不同正则化(BN or LN)和移除正则化的影响。实验结果如下图所示。从下图中可以看出,删除BYOL中的所有BN实例,BYOL的表现和随机模型效果差不多。这对BYOL是独有的,因为SimCLR在相同的情况下,表现良好。然而,仅在BYOL中的编码中加入BN实例就足以使得BYOL取得较好的性能。

当使用不用统计信息的LN替换BN时,BYOL模型坍塌,但是SimCLR却表现良好,BYOL和SimCLR模型性能的差异似乎更支持BYOL需要BN中提供的隐含负样本防止模型坍塌这一假设。然而,BN似乎主要作用于编码器。已知标准初始化会导致条件变差,BYOL在创建自己的目标时,更容易受到不正确初始化的影响,因此,论文作者假设BN在BYOL中的主要作用是补偿不正确的初始化,而不是BN隐含提供负样本的假设。

在这里插入图片描述

为了验证上述的假设,作者设计了不带BN的适当的初始化实验模拟BN对初始规模和动态训练的影响。1000个epoch之后,初始化实验的线性验证取得了65.7%的top-1准确率,相比于baseline模型的74.3%top-1准确率有所下降,但是也能证明BYOL在不使用BN的情况下,可以学习到非坍塌表示,而且也能证明BN的另一个作用是提供更好地初始规模和训练动态。使用GN代替所有的BN,并通过WS方案对卷积和线性参数进行权重标准化。由于GN和WS都不计算批处理统计信息,所以使用GN+WS的BYOL无法处理批处理中的元素,因此它同样无法实现批处理隐式对比机制。实验证明,没有BN的BYOL算法也能保持其大部分性能。
在这里插入图片描述

参考

  1. Bootstrap Your Own Latent A New Approach to Self-Supervised Learning
  2. BYOL works even without batch statistics
  3. Understanding Self-Supervised and Contrastive Learning with “Bootstrap Your Own Latent” (BYOL)

附录

指数滑动平均

EMA(Exponential Moving Average)指数滑动平均,是一种给与最近数据更高权重的平均方法,也被称为权重滑动平均(weighted moving average)。在深度学习优化过程中, θ t \theta_{t} θt t t t时刻的模型参数, v t v_{t} vt t t t时刻的影子参数,在模型训练过程中, θ t \theta_{t} θt的参数的更新与梯度下降有关 θ t = θ n − 1 − α ⋅ ▽ θ J ( θ ) \theta_{t} = \theta_{n-1} - \alpha \cdot \triangledown_{\theta} J\left( \theta\right) θt=θn1αθJ(θ)(其中 α \alpha α为学习率, J ( θ ) J\left( \theta\right) J(θ)为损失函数关于参数 θ \theta θ的偏导数), v t v_{t} vt的更新与 θ t \theta_{t} θt有关,公式如下: v t = β ⋅ v t − 1 + ( 1 − β ) ⋅ θ t v_{t}= \beta \cdot v_{t-1} + \left( 1 - \beta \right) \cdot \theta_{t} vt=βvt1+(1β)θt

为了简单起见,将学习率设为1, t − 1 t-1 t1时刻的梯度为 g t − 1 g_{t-1} gt1,设 θ t = θ t − 1 − g t − 1 \theta_{t} = \theta_{t-1} - g_{t-1} θt=θt1gt1,对其进行变换,如下所示:

θ n = θ t − 1 − g t − 1 = θ t − 2 − g t − 1 − g t − 2    = θ 1 − ∑ i = 1 n − 1 g i \begin{matrix} \theta_{n} &= \theta_{t-1} - g_{t-1} \quad \quad \quad \\ &= \theta_{t-2} - g_{t-1} - g_{t-2} \; \\ & = \theta_{1} - \sum_{i=1}^{n-1}g_{i} \quad \quad \quad \end{matrix} θn=θt1gt1=θt2gt1gt2=θ1i=1n1gi
同样对影子权重 v t v_{t} vt进行变换,如下所示:
v t = β ⋅ v t − 1 + ( 1 − β ) ⋅ θ t    = β ( β ⋅ v t − 2 ( 1 − β ) ⋅ θ t − 1 ) + ( 1 − β ) ⋅ θ t = β n v 0 + ( 1 − β ) ( θ n + β θ n − 1 + ⋯ + β n − 1 θ n ) = θ 1 − ∑ i = 1 n − 1 ( 1 − β n − i ) g i \begin{matrix} v_{t} &= \beta \cdot v_{t-1} + \left( 1 - \beta \right) \cdot \theta_{t} \quad \quad \quad \quad \quad \quad \quad \quad \quad \; \\ &= \beta\left( \beta \cdot v_{t-2}\left( 1 - \beta \right) \cdot \theta_{t-1} \right) + \left( 1 - \beta \right) \cdot \theta_{t} \quad \quad \\ &= \beta^{n}v_{0} + \left( 1 - \beta \right) \left( \theta_{n} + \beta \theta_{n-1} + \cdots + \beta^{n-1} \theta_{n} \right) \\ & = \theta_{1} - \sum_{i=1}^{n-1} \left( 1- \beta^{n-i}\right)g_{i} \quad \quad \quad \quad \quad \quad \quad \quad \quad \end{matrix} vt=βvt1+(1β)θt=β(βvt2(1β)θt1)+(1β)θt=βnv0+(1β)(θn+βθn1++βn1θn)=θ1i=1n1(1βni)gi
对于 t t t时刻的参数 θ t \theta_{t} θt v t v_{t} vt v t v_{t} vt θ t \theta_{t} θt更新地更缓慢。

Group normalization

对于维度为 ( N , H , W , C ) \left( N, H, W, C \right) (N,H,W,C)的张量 X X X,GN首先将通道切分成 G G G个大小相同的组,然后在大小为 ( 1 , H , W , C / G ) \left( 1, H, W, C/G \right) (1,H,W,C/G)不相交的切片上计算平均值和标准差从而规范化激活。当 G = 1 G=1 G=1时,GN相当于LN(Layer Normalization);当 G = C G=C G=C时,GN相当于IN(Instance Normalization)。重要的是,GN在每个批次元素上独立运行,因而它不依赖批次统计信息。

Weight standardization

WS使用权重统计信息规范化每个激活对应的权重。权重矩阵 W W W中每一行被正则化得到一个新的权重矩阵 W ^ \hat{W} W^。只有归一化权重 W ^ \hat{W} W^用于计算卷积输出,但是损失根据非标准化权重 W W W进行区分。

W ^ i , j = W i , j − μ i σ i , w i t h μ i = 1 I ∑ j = 1 I W i , j a n d σ i = ε + 1 I ∑ j = 1 I ( W i , j − μ ) 2 \begin{matrix} \hat{W}_{i,j} = \frac{W_{i,j} - \mu_{i}}{\sigma_{i}} , \\ with \quad \mu_{i} = \frac{1}{I} \sum_{j=1}^{I} W_{i,j} \\ and \quad \sigma_{i}= \sqrt{ \varepsilon + \frac{1}{I} \sum_{j=1}^{I} \left( W_{i,j} - \mu \right)^{2}} \end{matrix} W^i,j=σiWi,jμi,withμi=I1j=1IWi,jandσi=ε+I1j=1I(Wi,jμ)2

其中 I I I是输入维度, ε = 1 0 − 4 \varepsilon = 10^{-4} ε=104

  • 15
    点赞
  • 50
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
对比学习是一种基于相似性学习的方法,它通过比较不同样本之间的相似性来学习特征表示。SimCLR、InfoLoss、MOCO、BYOL都是最近几年提出的基于对比学习的预训练模型。 SimCLR是一种基于自监督学习的对比学习方法,它采用了一种新的数据增强方法,即随机应用不同的图像变换来生成不同的视图,并通过最大化同一视图下不同裁剪图像的相似性来训练模型。SimCLR在多个视觉任务上均取得了优异的表现。 InfoLoss是另一种基于自监督学习的对比学习方法,它通过最小化同一样本的不同视图之间的信息丢失来学习特征表示。InfoLoss可以通过多种数据增强方法来生成不同的视图,因此具有很强的可扩展性。 MOCO(Momentum Contrast)是一种基于动量更新的对比学习方法,它通过在动量更新的过程中维护一个动量网络来增强模型的表示能力。MOCO在自然语言处理和计算机视觉领域均取得了出色的表现。 BYOL(Bootstrap Your Own Latent)是一种基于自监督学习的对比学习方法,它通过自举机制来学习特征表示。BYOL使用当前网络预测未来的网络表示,并通过最小化预测表示与目标表示之间的距离来训练模型。BYOL在图像分类和目标检测任务上均取得了很好的表现。 总体来说,这些对比学习方法都是基于自监督学习的,它们通过比较不同样本或不同视图之间的相似性来学习特征表示,因此具有很强的可扩展性和泛化能力。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

马鹤宁

谢谢

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值