Advertisement

(深度学习快速入门)Exploring Simple Siamese Representation Learning(SimSam)论文精读

阅读量:

文章目录

  • Abstract

  • Introduction

  • Related Work

  • Method

  • Emprical Study

    • Stop-gradient
    • Predictor
    • Batch Size
    • Batch Normalization
    • Similarity Function
    • Symmetrization
    • Summary
  • Hypothesis

    • Formulation
    • Proof of concept
    • Discussion
  • Comparisons

    • Result Comparisons
    • Methodology Comparisions
  • Conclusion

Abstract

在这里插入图片描述

"孪生网络已成为最近各种无监督视觉表示学习模型中常见的结构。这些模型通过最大化同一图像的两个增强版本之间的相似性来学习表示,同时遵循一定条件以避免崩溃解。在本文中,我们报告了令人惊讶的实证结果,即简单的孪生网络即使不使用以下任何一项也可以学习到有意义的表示:(i) 负样本对,(ii) 大批量数据,(iii) 动量编码器。我们的实验证明了该损失和结构确实存在崩溃解,但停梯度操作在防止崩溃中起到了重要作用。我们提出了停梯度的影响假设,并进一步展示了验证该假设的概念验证实验。我们的“SimSiam”方法在ImageNet和下游任务上取得了有竞争力的结果。我们希望这个简单的基准能够激发人们重新思考孪生架构在无监督表示学习中的作用。代码已经提供”

补充 :

1.孪生网络 :孪生网络(Siamese networks)是一种神经网络结构,用于处理成对输入数据的相关性和相似性任务。它的名字源自希腊神话中的孪生兄弟 Castor 和 Pollux,意味着网络有两个相同的分支或子网络。孪生网络通常用于处理涉及相似度或匹配度量的问题,如人脸识别、目标跟踪、图像检索、签名验证等。它的基本原理是通过共享权重的两个子网络来编码输入对的特征,并通过比较这些特征向量之间的相似性来进行任务的判断。在训练过程中,孪生网络会接受成对的输入数据,并通过共享权重的子网络将每个输入数据映射到特征空间中的低维表示。然后,这些特征向量会经过相似度度量或距离计算来评估输入对的相关性。常见的相似度度量方法包括欧氏距离、余弦相似度等。通过训练孪生网络,可以学习到对输入数据进行编码的特征表示,使得具有相似性或相关性的数据对在特征空间中距离较近,而不相关的数据对则距离较远。这种编码特征的方式使得孪生网络在许多相似性任务中表现出良好的性能
在这里插入图片描述

Introduction

在这里插入图片描述

最近在无监督/自监督表示学习方面取得了稳定的进展,对多个视觉任务取得了令人鼓舞的结果(例如,[2, 17, 8, 15, 7])。尽管这些方法有不同的原始动机,但它们通常涉及某种形式的孪生网络[4]。孪生网络是应用于两个或多个输入的权重共享神经网络。它们是比较实体(包括但不限于“对比”)的自然工具。最近的方法将输入定义为一个图像的两个增强版本,并在不同条件下最大化相似性

在这里插入图片描述
在这里插入图片描述

孪生网络的一个不希望出现的平凡解是所有输出都"崩溃"为一个常数。有几种常见策略可以避免孪生网络的崩溃现象。对比学习[16]是其中一种策略,例如在SimCLR [8]中实现,它通过吸引相同图像的两个视图(正样本对)同时排斥不同的图像(负样本对)来实现。负样本对排除了解空间中的常数输出。聚类[5]是避免常数输出的另一种方式,SwAV [7]将在线聚类引入孪生网络中。除了对比学习和聚类之外,BYOL [15]仅依赖于正样本对,但在使用动量编码器的情况下也不会崩溃

补充 :

1.为什么聚类可以避免常数输出

  • 增加样本间的差异性 :聚类算法通过将数据样本划分为不同的簇,可以促使网络学习到区分不同样本之间差异的特征表示。当孪生网络的目标是最大化相似性或最小化距离时,通过聚类可以确保不同样本的特征表示在特征空间中具有明显的区别,从而避免所有输出都崩溃为常数
  • 引入多样性 :聚类算法可以鼓励孪生网络学习到多样的特征表示。通过将相似的样本聚集在同一簇中,而将不同的样本分离到不同的簇中,聚类能够推动网络学习到能够区分不同类别的特征表示。这种多样性有助于避免所有输出都崩溃为常数,并且能够更好地捕捉数据的复杂性和多样性。
  • 提供隐式约束 :聚类算法在孪生网络中引入了一种隐式约束,限制了网络学习到的特征表示空间。这种约束有助于避免网络将所有样本映射到相同的特征点,从而避免输出坍缩为常数。通过聚类算法的调整和优化,可以使得网络学习到更具有判别性和多样性的特征表示
    在这里插入图片描述
    在这里插入图片描述

在本文中,我们报告了一个令人惊讶的发现,即简单的孪生网络即使没有上述的任何避免崩溃的策略,也能够表现出出人意料的良好性能。我们的模型直接通过最大化一个图像的两个视图之间的相似性来工作,既不使用负样本对,也不使用动量编码器。它适用于常见的批量大小,并且不依赖于大批量训练。我们在图1中展示了这种“SimSiam”方法的示意图
图1. SimSiam架构。一个图像的两个增强视图被相同的编码器网络f(由主干网络和投影MLP组成)处理。然后,在一侧应用预测MLP(h),在另一侧应用停梯度操作。该模型最大化了两侧之间的相似性。它既不使用负样本对,也不使用动量编码器

在这里插入图片描述

由于概念上的简单性,SimSiam可以作为几种现有方法之间的关联中心。简而言之,我们的方法可以看作是“没有动量编码器的BYOL”。与BYOL不同,但与SimCLR和SwAV类似,我们的方法直接共享两个分支之间的权重,因此也可以看作是“没有负样本对的SimCLR”,以及“没有在线聚类的SwAV”。有趣的是,SimSiam通过去除核心组件之一与每种方法相关联。即便如此,SimSiam不会导致崩溃,并且能够具有竞争力地进行表现

在这里插入图片描述
在这里插入图片描述

我们通过实验证明,崩溃解确实存在,但是停梯度操作(图1)对于防止这种解的出现至关重要。停梯度的重要性表明,存在着另一个不同的潜在优化问题正在被解决。我们假设存在隐含的两组变量,并且SimSiam的行为类似于在每组变量之间交替优化。我们提供了概念验证实验证明这一假设

在这里插入图片描述

我们简单的基准结果表明,孪生网络结构可能是相关方法取得普遍成功的一个重要原因。孪生网络可以自然地引入归纳偏置来建模不变性,因为根据定义,“不变性”意味着同一概念的两个观察结果应该产生相同的输出。类似于卷积[24],通过权重共享来建模平移不变性的成功归纳偏置,权重共享的孪生网络可以对更复杂的变换(例如增强)建模不变性。我们希望我们的探索能够激发人们重新思考孪生架构在无监督表示学习中的基本作用

在这里插入图片描述

孪生网络: 孪生网络[4]是用于比较实体的通用模型。它们的应用包括签名[4]和人脸[32]验证、跟踪[3]、单样本学习[23]等。在传统的使用情况下,孪生网络的输入来自不同的图像,并且可比性是由监督确定的

在这里插入图片描述

对比学习 :对比学习[16]的核心思想是吸引正样本对并排斥负样本对。这种方法最近在无监督/自监督表示学习[34, 29, 20, 35, 21, 2, 33, 17, 28, 8, 9]中被广泛应用。使用孪生网络[35, 2, 17, 8, 9]可以简单而有效地实现对比学习。
在实践中,对比学习方法受益于大量的负样本[34, 33, 17, 8]。这些样本可以在一个内存库中进行维护[34]。在孪生网络中,MoCo [17]维护了一个负样本队列,并将其中一个分支转换为动量编码器以提高队列的一致性。SimCLR [8]直接使用当前批次中同时存在的负样本,并且需要较大的批量大小以获得良好的效果

在这里插入图片描述

聚类:另一类用于无监督表示学习的方法基于聚类[5, 6, 1, 7]。它们在表示聚类和学习预测聚类分配之间进行交替。SwAV [7]将聚类方法引入到孪生网络中,通过从一个视图计算分配并从另一个视图进行预测。SwAV在每个批次下使用平衡划分约束进行在线聚类,该约束由Sinkhorn-Knopp变换[10]求解。
虽然基于聚类的方法不定义负样本,但聚类中心可以充当负样本的原型。与对比学习类似,基于聚类的方法要么需要一个内存库[5, 6, 1]、较大的批次[7]或一个队列[7]来提供足够的样本进行聚类

在这里插入图片描述

BYOL(Bootstrap Your Own Latent) :是一种方法,它直接从一个视图中预测另一个视图的输出。它是一个孪生网络,其中一个分支是动量编码器。在[15]中提出了一个假设,即动量编码器对于BYOL避免崩溃是重要的,并且报告了在去除动量编码器的情况下的失败结果(0.3%的准确率,见[15]的表5)。我们的实证研究挑战了动量编码器在防止崩溃方面的必要性。我们发现停止梯度操作至关重要。这个发现可能会被动量编码器的使用所掩盖,因为动量编码器总是伴随着停止梯度(因为它不会根据其参数的梯度进行更新)。虽然适当的动量系数可以提高准确性,但我们的实验表明,它与防止崩溃并没有直接关联

Method

在这里插入图片描述

我们的架构(图1)将来自图像x的两个随机增强视图x_{1}x_{2}作为输入。和两个视图经由主干网络(如ResNet)的投影和MLP头部组成的编码器网络f进行处理器。编码器f共享两个视图之间的权重。一个预测的MLP头部h将一个视图的输出进行转换并将其与另一个视图进行匹配。将两个输出向量表示为p_{1}=h(f(x_{1}))z_{2}=h(f(x_{2})),我们最小化它们的负余弦相似度,如(1)式所示,其中||·||_{2}为2范数

在这里插入图片描述

这相当于\mathcal{l}_{2}归一化向量的均方误差,只是乘以一个2的比例因子。我们决定顶一个对称化损失函数,如(2)式所示。该损失函数是针对每个图像定义的总损失在所有图像上取平均值,最小可能值为-1

在这里插入图片描述
在这里插入图片描述

停止梯度在本方法中非常关键。我们通过修改(1)式实现,如(3)式所示。这意味着z_{2}在这一项中被当做常数
类似的,(2)式可以被实现为(4)。这里,x_{2}上的编码器在第一项中不接收来自z_{2}的梯度,但在第二项中接收来自p_{2}的梯度(对于x1也是相反的情况)。
算法伪代码如下图所示

在这里插入图片描述
在这里插入图片描述

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

  • 优化器。我们在预训练中使用随机梯度下降(SGD)算法。我们的方法不需要像LARS(如[8, 15, 7])那样的大批量优化器。我们使用学习率为lr×BatchSize/256(线性缩放[14]),其中基本学习率lr为0.05。学习率采用余弦衰减调度[26, 8]。权重衰减为0.0001,SGD动量为0.9。默认情况下,批量大小为512,这对于典型的8-GPU实现非常友好。其他批量大小也能很好地工作(第4.3节)。我们使用跨设备同步的批量归一化(BN)[22],遵循[8, 15, 7]的方法
  • 投影MLP(在f中)对每个全连接(fc)层都应用了批量归一化(BN),包括其输出fc层。输出fc层没有ReLU。隐藏的fc层是2048维。该MLP有3个层
  • 预测MLP(h)的隐藏fc层应用了批量归一化(BN)。它的输出fc层没有BN(在第4.4节中进行了消融实验),也没有ReLU。该MLP有2个层。h的输入和输出的维度(z和p)是d=2048,h的隐藏层的维度是512,使得h成为一个瓶颈结构(在补充材料中进行了消融实验)
    我们使用ResNet-50[19]作为默认的骨干。其他实施细节在补充中。在消融实验中,我们进行了100epoch的预训练
在这里插入图片描述

我们在没有使用标签的情况下对包含1000个类别的ImageNet训练集进行无监督预训练。通过在训练集上对冻结表示进行监督线性分类器的训练,然后在验证集上进行测试,来评估预训练表示的质量,这是一种常见的评估方法。线性分类的实现细节详见补充材料

Emprical Study

Stop-gradient

在这里插入图片描述
在这里插入图片描述

图2对“带有stop-gradient vs. 不带stop-gradient”进行了比较。体系结构和所有超参数保持不变,唯一的区别是是否使用了stop-gradient
图2(左图)显示了训练损失。在没有使用stop-gradient的情况下,优化器很快找到了一个退化的解,并达到了最小可能的损失值-1。为了证明这种退化是由崩溃引起的,我们研究了\mathcal{l}_{2}归一化输出\frac{z}{||z||_{2}}的标准差(std)。如果输出崩溃为一个恒定的向量,它们在所有样本上的std应该对每个通道都为零。这可以从图2(中间图)的红色曲线中观察到

在这里插入图片描述
在这里插入图片描述

作为比较,如果输出z服从零均值的各向同性高斯分布,我们可以证明\frac{z}{||z||_{2}}的标准差为\frac{1}{\sqrt{ d }}。图2(中间图)的蓝色曲线显示,在使用stop-gradient的情况下,标准差接近\frac{1}{\sqrt{ d }}。这表明输出没有崩溃,而是分散在单位超平面上

在这里插入图片描述

图2(右图)绘制了一个k最近邻(kNN)分类器[34]的验证准确率。这个kNN分类器可以作为进展的监测器。在使用stop-gradient的情况下,kNN监测器显示准确率稳步提高。线性评估结果在图2的表格中。SimSiam实现了67.7%的非平凡准确率。这个结果在5次试验的标准差显示出合理的稳定性。仅仅去掉stop-gradient,准确率变为0.1%,这是在ImageNet中随机猜测的准确率水平

在这里插入图片描述

讨论:我们的实验表明存在崩溃解。崩溃可以通过最小可能的损失和恒定的输出来观察到。崩溃解的存在意味着仅通过架构设计(例如预测器、批量归一化、ℓ2范数)来防止崩溃是不足够的。在我们的比较中,所有这些架构设计都保持不变,但如果去除stop-gradient,它们无法防止崩溃。引入stop-gradient意味着存在另一个正在解决的优化问题。我们在第5节提出了一个假设

Predictor

在这里插入图片描述
在这里插入图片描述

如果移除h(表1a),也即此时h为恒等映射,模型将无法工作。实际上,如果使用对称损失(4)式,这种观察结果是可以预期的,现在损失函数是\frac{1}{2}\mathcal{D}(z_{1},\text{stopgrad}(z_{2}))+\frac{1}{2}\mathcal{D}(z_{2},\text{stopgrad}(z_{1})),其梯度与\mathcal{D}(z_{1},z_{2})相同,只是幅度缩小了\frac{1}{2}。在这种情况下,使用stop-gradient等价于移除了它并将损失缩放为原来的\frac{1}{2}

在这里插入图片描述

需要注意的是,这个关于梯度方向的推导仅适用于对称化的损失。但我们观察到,即使在去除h的情况下,非对称变体(3)式也会失败,而如果保留h,则可以正常工作(第4.6节)。这些实验证明h对我们的模型是有帮助的

在这里插入图片描述
在这里插入图片描述

如果将h固定为随机初始化值,我们的模型也无法工作(表1b)。然而,这个失败不是关于崩溃的问题。训练不会收敛,损失保持较高。预测器h应该被训练来适应表示。
我们还发现,使用固定的学习率(无衰减)的h可以很好地工作,并且产生比基准结果更好的结果(表1c)。一个可能的解释是h应该适应最新的表示,因此在表示足够训练之前,并不需要强制它收敛(通过降低学习率)。在我们模型的许多变体中,我们观察到使用固定学习率的h可以稍微提供更好的结果。在接下来的小节中,我们将使用这种形式

Batch Size

在这里插入图片描述
在这里插入图片描述

表2报告了批量大小从64到4096的结果。当批量大小变化时,我们使用相同的线性缩放规则(lr×BatchSize/256)[14],其中基本学习率为0.05。对于批量大小≥1024,我们使用10个热身周期[14]。请注意,我们在研究的所有批量大小上都继续使用相同的SGD优化器(而不是LARS [36])
我们的方法在这个广泛的批量大小范围内表现得相当好。即使批量大小为128或64,性能也相当不错,准确率下降了0.8%或2.0%。当批量大小从256增加到2048时,结果同样良好,并且差异在随机变动的水平上。
SimSiam的这种行为与SimCLR [8]和SwAV [7]明显不同。这三种方法都是具有直接权重共享的孪生网络,但SimCLR和SwAV都需要较大的批量大小(例如4096)才能发挥良好的效果
我们还注意到,标准的SGD优化器在批量大小过大时效果不佳(即使在监督学习中也是如此[14, 36]),而我们的结果在批量大小为4096时较低。我们期望一种专门的优化器(例如LARS [36])在这种情况下会有所帮助。然而,我们的结果表明,防止崩溃并不需要专门的优化器

Batch Normalization

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

表3比较了MLP头部中BN的配置。在表3a中,我们移除了MLP头部中的所有BN层(这里特别使用了10个热身周期[14])。这个变体并没有导致崩溃,尽管准确率较低(34.6%)。准确率低可能是由于优化困难导致的。在隐藏层中添加BN(表3b)将准确率提高到67.4%。

在这里插入图片描述

进一步将BN添加到投影MLP的输出(即f的输出)可以将准确率提升到68.1%(表3c),这是我们的默认配置。在这个配置中,我们还发现f的输出BN中的可学习仿射变换(尺度和偏移[22])并不是必需的,禁用它会导致相当的准确率为68.2%。
将BN添加到预测MLP h的输出中效果不太好(表3d)。我们发现这与坍塌无关。训练是不稳定的,损耗是振荡的
总之,我们观察到在适当使用时,BN对优化是有帮助的,这与其他监督学习场景中BN的行为类似。但是我们没有看到任何证据表明BN有助于防止崩溃:实际上,在4.1节中的比较(图2)中,两个实验中的BN配置完全相同,但如果不使用stop-gradient,模型会崩溃

Similarity Function

在这里插入图片描述

除了余弦相似度函数(1)之外,我们的方法还适用于交叉熵相似度。我们修改\mathcal{D}为:\mathcal{p_{1},z_{2}}=-\text{softmax}(z_{2})·\log \text{softmax}(p_{1})。softmax的输出可以被看作是属于d个伪类别中每个类别的概率

在这里插入图片描述

我们只需用交叉熵相似度替代余弦相似度,并使用(4)对其进行对称化。所有超参数和架构保持不变,尽管它们对于这个变体可能不是最优的。下面是比较结果
交叉熵变量可以收敛到一个合理的结果而不坍塌。这表明塌陷预防行为不仅仅是余弦相似度。这个变体有助于建立到swav[7]的连接,我们将在第6.2节中讨论这个问题

Symmetrization

在这里插入图片描述

到目前为止,我们的实验都是基于对称化损失(4)。我们观察到SimSiam防止崩溃的行为与对称化无关。我们将与非对称变体(3)进行如下比较
非对称变体取得了合理的结果。对称化有助于提高准确性,但与防止崩溃无关。对称化使每个图像多进行了一次预测,我们可以通过在非对称版本中为每个图像采样两对来大致弥补这一点(“2×”)。这样可以缩小差距

Summary

在这里插入图片描述

我们的经验表明,在各种设置中,SimSiam可以在不崩溃的情况下产生有意义的结果。优化器(批大小)、批归一化、相似函数和对称可能会影响准确性,但我们没有看到任何证据表明它们与防止坍塌有关。其中起关键作用的主要是停止梯度操作

Hypothesis

Formulation

在这里插入图片描述

我们的假设是SimSiam是一种期望最大化(Expectation-Maximization,EM)类似算法的实现。它隐含地涉及两组变量,并解决了两个基本的子问题。停止梯度的存在是引入了额外变量集合的结果。我们考虑一个下面形式的损失函数,如(5)式。\mathcal{F}是一个由参数\theta参数化的而网络。\tau是增强,x是图像。期望E是针对图像和数据增强的分布进行计算的。为了便于分析,这里我们使用均方误差,这与余弦相似度是等价的(如果向量进行了l_{2}归一化)。我们还没有考虑预测器,稍后将进行叙述

在这里插入图片描述

在(5)式中,我们引入了另外一组变量,用\eta表示,\eta的大小与图像的数量成正比。直观来说,\eta_{x}是图像的表示,下标x表示用图像索引访问\eta的一个子向量。\eta不一定是网络的输出,这是一个优化问题的参数。对于这个公式,我们考虑解决(6)式,该问题涉及到\theta\eta两个参数。这种表述类似于k-means聚类。变量\theta类比于聚类中心,这一个编码器的可学习参数;变量\eta_{x}类比于一个样本的分配向量(在K-means中一个one-hot向量):它是x的表示。

在这里插入图片描述

类似于k-means算法,式(6)中的问题可以通过交替算法来解决,即固定一组变量,然后解决另一组变量的问题。具体而言,我们可以在这两个子问题之间交替求解。如(7)式和(6)所示,这里t表示迭代次数,\leftarrow指的是分配。

在这里插入图片描述

求解 \theta:可以使用随机梯度下降(Stochastic Gradient Descent,SGD)来解决子问题(7)。停止梯度操作是一个自然的结果,因为梯度不会反向传播到\eta^{t-1},它在这个子问题中被视为常量
求解 \eta:对于每一个\eta_{x},子问题(8)可以独立求解。现在的问题是对于每张图像最小化\mathbb{E}_{\mathcal{T}}\left[\left\|\mathcal{F}_{\theta^{t}}(\mathcal{T}(x))-\eta_{x}\right\|_{2}^{2}\right],需要注意的是,期望是针对数据增强操作T的分布进行的。由于使用的是均方误差,所以很容易求解,如(9)式。这表明\eta_{x}被赋予了在数据增强的分布x上的平均表示

在这里插入图片描述

一步交替 :SimSiam可以通过一步交替求解(7)和(8)来近似,首先我们通过仅采样一次数据增强(\tau^{\prime})和忽略E_{\tau}[·]来近似(9)式,如(10)式所示。将其插入到子问题(7),我们有(11)式。现在\theta^{t}在这个子问题中是一个常量,\tau^{\prime}由于其随机性质,意味着另外的一个视图。这种形式展示了simsam的逻辑结构。其次,如果我们通过使用一步随机梯度下降(SGD)来减少损失来实现(11),那么我们就可以逼近SimSiam算法:这是一个自然应用停止梯度的孪生网络

在这里插入图片描述

预测器 :我们上面的分析并没有涉及预测器h。我们进一步假设由于(10)的近似,预测器h在我们的方法中是有帮助的。
根据定义,预测器h期望最小化E_{z}[||h(z_{1})-z_{2}||^{2}_{2}]h的最优解应该满足(对于任意图像x),h(z_{1})=E_{z}(z_{2})=E_{\tau}[f(\tau(x))]。这一项与(9)类似。在(10)的近似中,期望E_{\tau}[·]是被忽略的。h的使用可能填补这一空白。实际上,直接计算期望E_{\tau}是不显示的。但神经网络(例如预测器h)可能会学会预测期望,而\tau的采样则在多个训练轮次中隐式地分布。

在这里插入图片描述

对称 :我们的假设并不涉及对称化。对称化类似于在(11)中进行更密集的采样\tau。实际上,SGD优化器通过对图像批次和一个增强对(\tau_{1},\tau_{2})进行采样,计算E_{x,\tau}[·]的经验期望。原则上,通过更密集的采样,经验期望应该更加精确。对称化提供了额外的增强对(\tau_{2},\tau_{1})。这解释了为什么对称化对我们的方法并非必要,但它能够提高准确性,正如我们在4.6节中观察到的那样

Proof of concept

在这里插入图片描述

我们设计了一系列基于假设的概念证明实验。它们是不同于SimSiam的方法,它们是用来验证我们的假设的

在这里插入图片描述

我们假设SimSiam算法类似于在(7)和(8)之间交替进行,每隔一个SGD更新步骤。根据这个假设,如果间隔包含多个SGD步骤,我们的公式很可能有效。
在这个变体中,我们将(7)和(8)中的t视为外部循环的索引;而(7)中的子问题则通过一个内部循环进行k个SGD步骤的更新。在每次交替中,我们使用(10)预先计算出所有k个SGD步骤所需的\eta_{x},并将它们缓存在内存中。然后我们执行k个SGD步骤来更新te^{ ta }。我们使用与SimSiam相同的架构和超参数。比较如下
在这里,“1-step”等同于SimSiam,而“1-epoch”表示完成一个epoch所需的k个步骤。所有多步骤的变体都表现良好。甚至10步/100步的变体在某些情况下取得了比SimSiam更好的结果,尽管需要额外的预计算开销。这个实验表明,交替优化是一种有效的形式,并且SimSiam是它的一个特例

在这里插入图片描述

使用预测器h可能是因为忽略了(9)式中的期望E_{\tau}[·]。我们考虑另一种近似这个期望的方法,其中我们发现不需要h。在这个变量中,我们不需要直接通过赋值(10)来更新\eta_{x},相反我们使用移动平均值来进行维护。其中m是动量系数(这里是0.8)。这个计算类似于[34]中维护内存库的方法。这个移动平均提供了多视图的近似期望。这个变体在没有预测器h的情况下具有55.0%的正确率。相比之下,如果我们移除h但不维护移动平均值(如表1a所示),它将完全失败。这个概念正式预测器h的使用与近似E_{\tau}[·]有关

Discussion

在这里插入图片描述

我们的假设是关于优化问题可能是什么。它并没有解释为什么防止坍缩。我们指出,SimSiam及其变种的非坍缩行为仍然是一种经验观察。在这里,我们简要讨论我们对这个开放问题的理解。交替优化提供了一条不同的轨迹,而轨迹取决于初始化。初始化的\eta很可能不是一个常数,它是一个随机初始化网络的输出。从这个初始化开始,交替优化器可能很难接近所有x的常数\eta_{x},因为该方法不会同时计算关于所有x\eta的梯度。优化器寻求另一条轨迹(图2左),其中输出分散(图2中)

Comparisons

Result Comparisons

在这里插入图片描述
在这里插入图片描述

我们在ImageNet线性评估中与最先进的框架进行了比较,结果如表4所示。为了进行公平比较,所有竞争者都是基于我们的重现结果,“+”表示与原始论文相比的改进的重现结果(请参阅补充材料)。对于每种独立的方法,我们遵循其原始论文中的超参数和数据增强方法。所有条目都基于一个标准的ResNet-50,在预训练过程中使用了两个224×224的视图

在这里插入图片描述

表4显示了方法的结果和主要特性。SimSiam使用批量大小为256进行训练,既不使用负样本,也不使用动量编码器。尽管它很简单,但SimSiam取得了竞争性的结果。在100轮预训练下,它具有最高的准确率,尽管其训练更长的收益较小。在所有情况下,它的结果都优于SimCLR

在这里插入图片描述

迁移学习。在表5中,我们比较了将它们迁移到其他任务的表示质量,包括VOC [12]目标检测、COCO [25]目标检测和实例分割。我们将预训练的模型端到端地微调到目标数据集上。我们使用来自MoCo [17]的公共代码库进行所有条目,并为每种独立方法搜索微调学习率。所有方法都基于在ImageNet上进行的200轮预训练,使用我们的重现结果

在这里插入图片描述
在这里插入图片描述

表5显示了SimSiam的表示在ImageNet任务之外也是可迁移的。它在这些领先方法中具有竞争力。表5中的“base” SimSiam使用与我们在ImageNet实验中相同的基准预训练方法。我们发现,在所有任务中,采用lr=0.5和wd=1e-5的另一种方法(具有类似的ImageNet准确率)可以产生更好的结果(表5,“SimSiam,最佳”)
我们强调所有这些方法在迁移学习方面都取得了极大的成功-在表5中,它们在所有任务中都能超越或与ImageNet监督预训练的对应方法持平。尽管设计上有许多差异,但这些方法的一个共同结构是孪生网络。这个比较表明,孪生结构是它们普遍成功的核心因素

Methodology Comparisions

在这里插入图片描述
在这里插入图片描述

除了准确率之外,我们还比较了这些孪生架构的方法论。我们的方法充当一个中心,连接这些方法。图3对这些方法进行了抽象化。"编码器"包含了可以在两个分支之间共享的所有层(例如,骨干网络、投影MLP [8]、原型 [7])。红色的组件是SimSiam缺失的部分。接下来我们将讨论它们之间的关系

在这里插入图片描述

SimCLR依赖于负样本(“不相似性”)来防止坍缩。可以将SimSiam视为"没有负样本的SimCLR"。为了进行更全面的比较,我们将预测MLP h和停梯度(stop-gradient)添加到SimCLR中。以下是我们对SimCLR的剔除实验结果:停梯度和额外的预测器对SimCLR来说既不必要也不有益。正如我们在第5节中分析的那样,引入停梯度和额外的预测器可能是另一个潜在优化问题的结果。它与对比学习问题不同,因此这些额外的组件可能没有帮助。

在这里插入图片描述

从概念上讲,SimSiam类似于“没有在线聚类的SwAV”。我们通过重新构建SwAV中的一些组件来建立这种联系:(i) SwAV中的共享原型层可以合并到孪生编码器中。(ii) 在[7]中,原型是在梯度传播之外进行权重归一化的;我们则通过完全梯度计算来实现。 (iii) SwAV中的相似性函数是交叉熵。通过这些抽象,可以在图3中看到一个高度简化的SwAV示意图

在这里插入图片描述
在这里插入图片描述

SwAV在目标分支上应用了Sinkhorn-Knopp(SK)变换[10](该变换也进行了对称化[7])。SK变换是基于在线聚类[7]导出的:它是将当前批次进行聚类并遵守平衡划分约束的结果。平衡划分可以避免坍缩现象。而我们的方法不涉及这种变换
C我们研究了预测MLPh和停梯度在SwAV上的影响。需要注意的是,SwAV在SK变换上应用了停梯度,所以我们通过移除停梯度来进行剔除实验。以下是我们对SwAV的剔除实验比较结果。添加预测器也没有起到帮助作用。移除停梯度(使模型端到端地进行训练)会导致发散。作为一种基于聚类的方法,SwAV在本质上是一种交替优化形式[7]。这可能解释了为什么在SwAV中不应该移除停梯度

在这里插入图片描述

我们的方法可以看作是"没有动量编码器的BYOL",尽管在实现上存在许多差异。动量编码器可能有助于提高准确性(表4),但并不是防止坍缩的必需品。根据我们在第5节中的假设,可以通过其他优化器(例如基于梯度的优化器)解决η子问题(8)。这可能会导致\eta的更新在时间上更加平滑。虽然不直接相关,动量编码器也会产生\eta的平滑版本。我们相信,还有其他解决(8)的优化器是可行的,这可以成为未来的研究问题

Conclusion

在这里插入图片描述

我们已经探索了具有简单设计的孪生网络。我们的简约方法的竞争力表明,最近方法中的孪生结构可能是其有效性的核心原因。孪生网络是建模不变性的自然而有效的工具,而这是表示学习的重点之一。我们希望我们的研究能引起社区对孪生网络在表示学习中的基础作用的关注。

全部评论 (0)

还没有任何评论哟~