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算法

自监督学习需要划分训练测试集吗 自我监督训练_机器学习

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

网络流程介绍:
对于输入的图像x,先经过随机的两种图像增强策略,分别是t和t’,之后得到两个增强后的图像v和v’,之后将v和v’分别送入online network和target network,首先各自经过一个encoder(用函数f自监督学习需要划分训练测试集吗 自我监督训练_机器学习_02和f自监督学习需要划分训练测试集吗 自我监督训练_深度学习_03来表示),得到两个representation 自监督学习需要划分训练测试集吗 自我监督训练_数据_04自监督学习需要划分训练测试集吗 自我监督训练_深度学习_05,之后再分别经过projector网络g自监督学习需要划分训练测试集吗 自我监督训练_机器学习_02和g自监督学习需要划分训练测试集吗 自我监督训练_深度学习_03,得到两个projection 自监督学习需要划分训练测试集吗 自我监督训练_bootstrap_08自监督学习需要划分训练测试集吗 自我监督训练_深度学习_09。然后online network上的自监督学习需要划分训练测试集吗 自我监督训练_bootstrap_08再经过一个predictor网络自监督学习需要划分训练测试集吗 自我监督训练_bootstrap_11,得到一个prediction 自监督学习需要划分训练测试集吗 自我监督训练_机器学习_12

损失函数和参数更新:

(1)online network

通过online network的自监督学习需要划分训练测试集吗 自我监督训练_机器学习_12和target network的自监督学习需要划分训练测试集吗 自我监督训练_深度学习_09来计算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值相加得到最终的损失函数自监督学习需要划分训练测试集吗 自我监督训练_机器学习_15,针对这个损失函数求导,再进行梯度回传,更新online network的网络参数。

(2)target network

target network通过使用动量更新的方式实现缓慢地向online network靠拢,动量更新的方式即自监督学习需要划分训练测试集吗 自我监督训练_机器学习_16

其中自监督学习需要划分训练测试集吗 自我监督训练_深度学习_17自监督学习需要划分训练测试集吗 自我监督训练_机器学习_18开始,按照下面的公式进行更新,k是当前训练步骤,K是最大训练步骤数。

自监督学习需要划分训练测试集吗 自我监督训练_深度学习_19

训练结束时,只保存最终的encoder f自监督学习需要划分训练测试集吗 自我监督训练_机器学习_02

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