自监督学习BYOL《Bootstrap Your Own Latent:A New Approach to Self-Supervised Learning》

BYOL算法简要介绍。
论文地址:byol论文链接。
代码链接:https://github.com/deepmind/deepmind-research/tree/master/byol

1、self-supervised learning
当模型越来越大时,模型训练也会越来越难,会存在梯度消失或者梯度爆炸的问题,需要大量并且是标注的数据来进行训练,因此将目标逐渐转向使用小样本来训练一个泛化性更强的模型。因此而逐渐开始使用self-supervised方法。
但是自监督训练存在崩塌问题:我们知道现在大部分的自监督训练都是通过约束同一张图的不同形态之间的特征差异性来实现特征提取,不同形态一般通过指定的数据增强实现,那么如果只是这么做的话(只有正样本对),网络很容易对所有输入都输出一个固定值,这样特征差异性就是0,完美符合优化目标,但这不是我们想要的,这就是训练崩塌了。因此一个自然的想法是我们不仅仅要拉近相同数据的特征距离,也要拉远不同数据的特征距离,换句话说就是不仅要有正样本对,也要有负样本对,这确实解决了训练崩塌的问题,但是也带来了一个新的问题,那就是对负样本对的数量要求较大,因为只有这样才能训练出足够强的特征提取能力,因此我们可以看到这方面的代表作如SimCLR系列都需要较大的batch size才能有较好的效果。(本段链接地址)

这篇论文介绍的BYOL算法,不需要使用负样本对,通过使用增加predictor网络和stop-gradient策略来避免训练退化。

2、BYOL算法
自监督学习BYOL《Bootstrap Your Own Latent:A New Approach to Self-Supervised Learning》_第1张图片

如上图所示,该算法同时维持两个相同的网络,online network和target network,训练过程中使online network不断逼近target network,target network使用动量的方式来更新参数,也相当于缓慢地向online靠拢,以这种互相逼近的方式,提升网络整体性能。

网络流程介绍:
对于输入的图像x,先经过随机的两种图像增强策略,分别是t和t’,之后得到两个增强后的图像v和v’,之后将v和v’分别送入online network和target network,首先各自经过一个encoder(用函数f θ _\theta θ和f ξ _\xi ξ来表示),得到两个representation y θ y_\theta yθ y ξ ′ y'_\xi yξ,之后再分别经过projector网络g θ _\theta θ和g ξ _\xi ξ,得到两个projection z θ z_\theta zθ z ξ ′ z'_\xi zξ。然后online network上的 z θ z_\theta zθ再经过一个predictor网络 q θ q_\theta qθ,得到一个prediction q θ ( z θ ) q_\theta(z_\theta) qθ(zθ)

损失函数和参数更新:
(1)online network
通过online network的 q θ ( z θ ) q_\theta(z_\theta) qθ(zθ)和target network的 z ξ ′ z'_\xi zξ来计算loss,根据这个loss值来训练online network,进行梯度回传,更新online network的网络参数,也相当于实现了online network向target network的逼近。
需要注意online network的梯度回传的loss值是由两个loss相加而得到的,将v、v’分别送入网络online network和target network可以得到一个loss值,反过来将v、v’分别送入网络target network和online network也可以得到另一个loss值,将这两个loss值相加得到最终的损失函数 L θ , ξ B Y O L L_{\theta,\xi}^{BYOL} Lθ,ξBYOL,针对这个损失函数求导,再进行梯度回传,更新online network的网络参数。
(2)target network
target network通过使用动量更新的方式实现缓慢地向online network靠拢,动量更新的方式即 ξ ← τ ξ + ( 1 − τ ) θ \xi\leftarrow\tau\xi+(1-\tau)\theta ξτξ+(1τ)θ
其中 τ \tau τ τ b a s e = 0.996 \tau_{base}=0.996 τbase=0.996开始,按照下面的公式进行更新,k是当前训练步骤,K是最大训练步骤数。
在这里插入图片描述

训练结束时,只保存最终的encoder f θ _\theta θ

BYOL是使用online network向过去的自己(target network)来推动网络性能,并且不需要使用负样本,性能非常接近有监督方法。

参考链接:
BYOL算法笔记
【论文翻译】BYOL A New Approach to Self-Supervised Learning

你可能感兴趣的:(bootstrap,深度学习,机器学习)