对比学习论文阅读:

对比学习论文阅读 simCLR A Simple Framework for Contrastive Learning of Visual Representations-CSDN博客

对比学习论文阅读 MOCO Momentum Contrast for Unsupervised Visual Representation Learning-CSDN博客

对比学习论文阅读 BYOL Bootstrap Y our Own LatentA New Approach to Self-Supervised Learning-CSDN博客

对比学习论文阅读 SimSiam Exploring Simple Siamese Representation Learning-CSDN博客

一个视觉表征对比学习的简单框架 simCLR

对比学习训练网络依赖于借口任务(代理任务),代理任务可能会限制学习到的表征的普遍性

simCLR得出的结论:1、数据增强方式重要;2、在表示层和对比损失层之间加一个可学习的非线性层(MLP)有结果有益;3、与监督学习相比,对比学习受益于更大的批量和更多的训练步骤

hi,hj为MLP层:zi与zj对比损失效果优于hi和hj对比(结论2)

图像的表示效果h仍然优于z所以模型训练完成后,需要保留的是f(·) ,MLP仅是辅助训练过程

simCLR不使用内存库,直接用256~8192的batchsize。当使用线性学习率的SGD时,大batchsize训练不稳定,因此simCLR对所有batch都使用的LARS优化器。

进行分布式训练时,由于样本的正对是在同一设备中的,因此模型可以利用局部信息泄露,在不改善网络的情况下 (错误地) 提高预测 acc,因此simCLR在训练期间需要聚合所有设备的 BN 均值和方差(Global BN)

simCLR在训练前10轮采用了linear warmup的方式设计学习率

linear warmup

图像增强成为对比学习的基本操作之前,许多方法通过改变网络架构来定义对比预测任务。例如,通过约束网络架构中的感受野实现全局到局部的视图预测,然而这种复杂操作可以用执行简单的图像随机裁剪代替。

算法:

我们随机采样一个包含  个样本的 minibatch,并基于其中增广后的样本对定义对比预测任务,得到  个数据点 (每个样本增广一次)。我们没有显式地采样负样本,而是给定一个正对,我们将一个 minibatch中的其他  个增广后的样本视为负样本。设   表示经  归一化的  和  之间的点积 (即余弦相似度)。然后将正对样本  的损失函数定义为:

        其中  是一个指示函数,当  值为 1,否则为 0,而  表示一个温度参数。最终的损失计算所有的正对,包括  和 。

优化器:

在神经网络的训练中,有两个重要概念:一个是损失函数,一个是优化函数

损失函数是评价指标,优化函数是网络的优化策略

为了更高效的优化网络结构(使损失函数最小),需要最恰当的优化函数来优化网络,常用的优化函数有:SGD、BGD、MBGD、Momentum、NAG、Adagrad、Adadelta,RMSprop、Adam,其中:

一、随机梯度下降SGD、批量梯度下降BGD、小批量梯度下降MBGD。 三个算法都是使用梯度下降算法对网络权重进行更新,只是每次更新使用的样本数量不同。(SGD属于离线学习,BGD、MBGD属于在线学习)

(在线学习,通常一次输入一条数据(而不是一个batch),每个数据训练完后都会直接更新权重,但不知道是对是错;离线学习,类似于批量学习,假设整个样本有m个数据,离线训练会训练m的整数倍次数,离线学习是一个batch训练完才更新权重)

二、动量梯度下降Momentum、牛顿东量梯度下降NAG

动量梯度下降:

每次梯度更新都会带有前几次梯度方向的惯性,使梯度的变化更加平滑

动量参数v本质上就是到目前为止所有历史梯度值的加权平均,距离越远,权重越小。

当带有动量时,SGD 会在连续下降的方向上加速(Momentum也被形象地称为重球法)。

这种加速有助于模型逃脱平稳区,使其不易陷入局部极小值。

此算法如果能具备先知,在快要到极值点时减速就更好了,于是有了NAG。

牛顿动量梯度下降:(对动量梯度下降的改进)

经变换

NAG算法会根据此次梯度(i-1)和上一次梯度(i-2)的差值对Momentum算法得到的梯度进行修正:如果两次梯度的差值为正,证明梯度再增加,我们有理由相信下一个梯度会继续变大;相反两次梯度的差值为负,我们有理由相信下一个梯度会继续变小。

Momentum算法类似用已得到的前一个梯度数据对当前梯度进行修正,NGA算法类似用已得到的前两个梯度对当前梯度进行修正,无疑后者得到的梯度更加准确,因此提高了算法的优化速度。

三、Adagrad、Adadelta,RMSprop 自适应学习率优化器

四、Adam优化器:

由于动量梯度和自适应学习率是正交的,所以Adam结合了二者优点。Yogi和AdamW是Adam的改进

Adam收敛速度的确要快一些,可结果往往没有sgd + momentum的解好(如果模型比较复杂的话,sgd是比较难训练的,这时候adam的威力就体现出来了)

五、LARS   (SGD的拓展)

常用的对网络训练进行加速的方法之一是使用更大的batch size在多个GPU上训练。但是当训练周期数不变时,增大batch size将会导致网络权重更新的迭代次数减少。为了弥补该问题,很多研究者建议当batch size增加k倍时,也相应地将学习率增加k倍。但是当batch size很大的时候,学习率增加太大会导致学习不稳定,尤其是在训练早期阶段,如果学习率太大,则参数可能在错误的方向上更新很多,从而导致模型最终的表现很差。

之前主流的用来缓解该问题的方法是学习率warm-up,在训练的前几个周期,从一个比较小的学习率开始,线性增加到最终使用的学习率。作者提出了另一种解决方法:分层自适应学习率缩放(Layer-wise Adaptive Rate Scaling)

作者从以上观察出发得出结论,既然并不是所有层的ratio比较小,那么各个层的更新参数使用的学习率应该根据自己的情况有所调整,而不是所有层使用相同的学习率。由此,作者引入了局部学习率(local LR)的概念,从而在全局学习率的基础上根据每层的情况进行适当地调整。局部学习率的计算方式为:从而参数的更新大小为: 

好文阅读

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: