自监督学习论文解读|SimSiam:探索简单的孪生表示学习

文章地址:https://arxiv.org/abs/2011.10566

代码地址:https://github.com/facebookresearch/simsiam

1 摘要

孪生网络已经成为最近各种无监督视觉表示学习模型中的常见结构。这些模型最大化了一幅图像的两个增强之间的相似性,在一定的条件下避免坍塌。在本文中,我们报告了令人惊讶的经验结果,即简单的孪生网络即使不使用以下任何一种也可以学习有意义的表示:(i)负样本对,(ii)大批量,(iii)动量编码器。我们的实验表明,对于损失和结构确实存在坍塌解,但停止梯度操作在防止坍塌方面起着至关重要的作用。我们提供了一个关于停止梯度含义的假设,并进一步展示了验证它的概念验证实验。我们的“SimSiam”方法在ImageNet和下游任务上实现了竞争性结果。我们希望这个简单的基线能够激励人们重新思考孪生网络架构在无监督表示学习中的角色。

2 相关背景

2.1 对比学习

无监督表示学习的一类方法是基于对比学习。对比学习的核心思想是吸引正样本对,排斥负样本对。

在实践中,对比学习方法得益于大量的负样本。这些样本可以保存在内存库中。在孪生网络中,MoCo维持一个负样本队列,并将一个分支变为动量编码器,以提高队列的一致性。SimCLR直接使用当前批中共存的负样本,并且需要较大的批大小才能正常工作

2.2 聚类

无监督表示学习的另一类方法是基于聚类。它们在聚类表示和学习预测聚类分配之间交替进行。
SwAV通过从一个视图计算分配并从另一个视图预测分配,将聚类集成到Siamese网络中,SwAV在平衡分区约束下对每个批进行在线聚类,该问题由Sinkhorn-Knopp变换解决。

2.3 动量编码器

BYOL直接从另一个视图预测一个视图的输出。它是一个连体网络,其中一个分支是动量编码器,假设动量编码器对于BYOL避免坍塌很重要,并且报告了移除动量编码器的失败结果,我们的实证研究挑战了动量编码器防止坍塌的必要性。

3 文章思路

SimSiam 在 MoCo 、 SimCLR 、 SwAV 以及 BYOL 的基础上提出了一个新的对比学习方法,解决了对比学习中模型坍塌、负样本难以构造的问题,且结构简单。同时探讨了不会出现模型坍塌的原因,结论为 stop gradient 的操作对于避免模型坍塌有很大作用

SimSiam 可以看作,没有负样本的SimCLR、没有在线聚类的SwAV、没有动量编码器的BYOL。

SimSiam 的主要思路是:将一幅图像的两个增强视图由相同的编码器网络 f (主干加投影MLP)处理,然后在一侧应用预测MLP h,在另一侧应用 stop gradient 操作。该模型最大限度地提高了双方的相似性。它既不使用负对,也不使用动量编码器。

4 创新点

本文提出了一个简单的框架,在不需要负样本、不需要动量编码器、不需要大batch size 的情况下,实现了不会出现模型坍塌的对比学习;并探究了该方法不会出现模型坍塌的原因。

5 文章框架

该模型框架十分简单:两个视图由编码器网络 f 处理,该网络由骨干(例如ResNet)和投影MLP头部组成。编码器 f 在两个视图之间共享权重

预测MLP头部,表示为h,转换一个视图的输出并将其与另一个视图进行匹配。

伪代码如下

5.1 基础设置

除非特别说明,我们的探索使用以下设置进行无监督预训练:

  • optimizer:使用SGD进行预训练。学习率为 lr × BatchSize / 256(线性缩放),基础 lr = 0.05。学习率采用余弦衰减,权重衰减为0.0001,SGD动量为0.9。

    batch size大小默认为512,其他批处理大小也可以很好地工作,使用批量规范化(BN)在设备之间同步

  • 投影MLP。投影MLP(在 f 中)将BN应用于每个全连接(fc)层,包括其输出 fc。它的输出 fc 没有 ReLU。隐藏 fc 的维度为 2048。这个MLP有3层。

  • 预测MLP。预测MLP (h)将BN应用于其隐藏的fc层。其输出 fc 不含 BN 或 ReLU。这个MLP有2层。h 的输入和输出(z和p)维数为 2048, h 的隐含层维数为512,h 为瓶颈结构(维度先变小后边大)。

使用resnet - 50作为默认的骨干网络,在消融实验中进行了100 epochs 的预训练。

5.2 实验方案

在1000类ImageNet训练集上不使用标签进行无监督预训练。预训练表征的质量通过在训练集中训练一个有监督线性分类器,然后在验证集中测试来评估,这是一种常用的方案。

6 证实实验

重点在于探究是什么原因避免了模型坍塌

6.1 Stop-gradient

下图给出了Stop-gradient添加与否的性能对比,网络架构与超参保持不变,区别仅在于是否添加Stop-gradient。

  • 左图:训练损失。在无Stop-gradient时,优化器迅速找了了一个退化解并达到了最小可能损失-1。

  • 为证实上述退化解是“坍塌”导致的,作者研究了输出的L2规范化结果的标准差。如果输出“坍塌”到了常数向量,那么其每个通道的标准差应当是0,结果在中间图展示:如果输出具有零均值各项同性高斯分布,可以看到其标准差为1 / √d 。图中的蓝色曲线(即添加了Stop-gradient)接近 ,这也就意味着输出并没有“坍塌”。

  • 右图:kNN分类器作为进度监视器的验证精度。表:ImageNet线性评价(“w/ stop-grad”为5次试验的平均值±标准差)。在无Stop-gradient时,其分类进度仅有0.1%,而添加Stop-gradient后最终分类精度可达67.7%。

上述实验表明:“坍塌”确实存在。但“坍塌”的存在不足以说明所提方法可以避免“坍塌”,尽管上述对比中仅有“stop-gradient”的区别。关于“stop-gradient”在下一节专门进行了假设讨论。

6.2 Predictor

上表给出了Predictor MLP的影响性分析,可以看到:

  • 当移除预测MLP头模块 h(即h为恒等映射)后,该模型不再有效;模型失效的原因是模型坍塌,相当于直接在两个特征进行比较

  • 如果预测MLP头模块 h 固定为随机初始化,该模型同样不再有效;模型失效的原因是训练没有收敛,损失仍然很高

  • 当预测MLP头模块采用常数学习率时,该模型甚至可以取得比基准更好的结果(多个实验中均有类似发现);一种可能的解释是,h 应该适应最新的表示,因此没有必要在表示得到充分训练之前通过减少lr强迫它收敛

6.3 Batch Size

当批量大小发生变化时,使用相同的线性缩放规则(lr×BatchSize/256),基础lr = 0.05。对于批量大小≥1024,我们使用1 0 epoch 的 warmup。对于所有批大小,一直使用相同的SGD优化器。
可以看到:该方法在非常大范围的batch size下表现均非常好。

6.4 Batch Normalization

下表比较了投影MLP与预测MLP中不同BN的配置对比,可以看到:

  • 移除所有BN层后,尽管精度只有34.6%,但不会造成“坍塌”

  • 对隐含层添加BN后精度则提升到了67.4%

  • 在投影MLP的输出后添加BN,精度可以进一步提升到68.1%

  • 在预测MLP的输出添加BN后反而导致训练变的不稳定

6.5 Similarity Function

简单地将余弦相似度替换为交叉相似度,并使其对称,即将D修改为:D(p1, z2) =−softmax(z2)·log softmax(p1)
交叉熵变量可以收敛到一个合理的结果而不会崩溃

Symmetrization

SimSiam采用非对称损失同样取得了合理的结果,而对称损失有助于提升精度

6.6 小结

对于模型坍塌问题来说,重点在于 stop gradient ,同时移除预测MLP头也会造成模型坍塌;其他操作只是对模型性能有些许影响,但是并不好造成模型坍塌。

7 提出假设

为什么这样简单的网络能够work呢?作者提出了一种猜想: SimSiam实际上是一种最大期望算法 Expectation-Maximization(EM)。KNN 就是一种最大期望算法

7.1 定义

x 是输入图像,T 是图像的一种增强, F 是encoder,ηx 不一定局限于图像的representation,在训练网络时我们希望找到一个 θ,找到一个 η,使loss的期望是最小的。

实际上训练的过程中是分布进行训练的。

  1. 在每一步中首先会确定一个 θ 使得loss最小,这时使用的是一个固定的 η,从而得到 θt
  2. 锁定 θ,寻找一个使loss达到最小的ηt
  3. 反复进行以上两步最终使训练得到一个满意的结果。

当我们训练 η 时,将 θ 作为一个常数,带入到第一个公式中就可以得到

将这个公式再代入第一个公式,因为使用的是孪生网络,所以左右的两个encoder参数是一致的,最终得到了下式用于更新:

上式中的 Fθ 就是带predictor的部分,是右侧 Fθt 是没有predictor的部分。是 T‘ 上一个训练周期中使用的图像增强策略,所以与 T 是不同的。

上述公式中并没有体现出predictor的地方,且右侧 Fθt 的部分是一个常数,其期望是好求的,但是左边 Fθ 部分的的期望是如何求取的呢?

在这里作者提出了一种猜测,左侧部分的predictor实际上拟合的就是 Fθ 的期望。因为我们是需要优化一个形如:

所以predictor h 会在满足它是下式的期望的情况下,使整个的loss达到最优。

所以作者在这里猜测predictor是必须的原因就是它可以用于求取Siamese network网络左侧 Fθ 的期望。这可能也是本文提出的方法可以work的原因。

7.2 证明

作者假设:SimSiam是一种类似交错优化的方案,其SGD更新间隔为1。基于该假设,所提方案在多步SGD更新下同样有效。为此,作者设计了一组实验验证上述假设,结果见下表。

在这里,1-step等价与SimSiam。1-epoch”表示一个epoch所需的k步,更多步的SGD更新甚至可以取得比SimSiam更优的结果。这就意味着:交错优化是一种可行的方案,而SimSiam是其特例。

7.3 讨论

假设是关于最优化问题的。它并没有解释为什么可以防止崩溃。

我们指出SimSiam及其变体的非坍塌行为仍然是一个经验观察。

在这里,我们简要讨论一下我们对这个悬而未决问题的理解。交替优化提供了不同的轨迹,而轨迹依赖于初始化。

作为随机初始化网络的输出,初始化的η不太可能是常数。从这个初始化开始,交替优化器可能很难接近所有x的恒定ηx,因为该方法没有为所有x共同计算梯度。优化器寻求另一个轨迹(图2左),其中输出是分散的(图2中间)。

8 对比

8.1 ImageNet

从ImageNet以及迁移学习的角度对比一下其他方法:
在ImageNet的性能,可以看到:SimSiam可以取得具有竞争力的结果。
在100epoch训练下,SimSiam具有最高的精度;但后续提升不足

8.2 迁移学习

在迁移学习方面的性能对比:目标检测和分割,SimSiam表达可以很好的迁移到ImageNet以外的任务上,迁移模型的性能极具竞争力。

8.3 模型结构

与其他网络模型对比:SimSiam 可以看作,没有负样本的SimCLR、没有在线聚类的SwAV、没有动量编码器的BYOL。

9 结论

SimSiam用简单的设计探索了孪生网络。该方法表明,最近方法的孪生形状可能是其有效性的核心原因。Siamese网络是建模不变性的特征,这也是表征学习的一个重点。

  • 6
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
无监督对比学习是一种用于训练深度神经网络的自监督学习方法,它在没有标签的大规模未标记数据上进行训练。该方法通过使模型学习将相似样本聚集在一起,将不相似样本分开来,从而学习到有用的特征表示。 以下是几种常见的无监督对比学习方法: 1. MoCo(Momentum Contrast):MoCo是一种基于对比学习的方法,它使用了动量更新策略来增强对比学习的性能。它通过构建一个动态的字典来扩展正样本的数量,并使用动量更新策略来提高特征的一致性。 2. SimCLR(Simple Contrastive Learning):SimCLR是一种简单而有效的对比学习方法,它通过最大化正样本间的相似性并最小化负样本间的相似性来进行训练。SimCLR使用了数据增强和大批量训练等技术来提高性能。 3. SwAV(Swapping Assignments between Views):SwAV是一种基于视图交换的对比学习方法,它通过交换不同视图下的样本分配来增强对比学习过程。SwAV还使用了聚类损失来进一步优化特征表示。 4. BYOL(Bootstrap Your Own Latent):BYOL是一种基于自举的对比学习方法,它通过预测一个网络的自我编码器输出来进行训练。BYOL使用了移动平均权重和在线网络更新等技术来提高性能。 5. SimSiam(Simplified Siamese):SimSiam是一种简化的孪生网络对比学习方法,它通过最大化网络预测的一致性来进行训练。相比于传统的对比学习方法,SimSiam省略了负样本的构造过程,简化了训练过程。 这些无监督对比学习方法在图像和自然语言处理等领域都取得了很好的效果,并且被广泛应用于预训练模型的训练中。每种方法都有其独特的特点和优势,可以根据具体任务和数据集选择适合的方法进行使用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值