SimSiam

https://arxiv.org/pdf/2011.10566.pdf

摘要:连体网络已成为一种常见的结构,在各种最近的模型,用于无监督视觉表征学习。这些模型最大限度地提高了一个图像的两个增强之间的相似性,但要满足一定的条件,以避免坍塌解。在本文中,我们报告了令人惊讶的实验结果,简单的连体网络可以学习有意义的表示,即使使用以下任何一种:(i)负样本对,(ii)大批量,(iii)动量编码器。我们的实验表明,对于损失和结构,确实存在坍塌解,但停止梯度操作在防止坍塌中起着至关重要的作用。我们对停止梯度的含义提出了一个假设,并通过概念验证实验进一步验证了这一假设(further show proof-of-concept experiments verifying it)。我们的“SimSiam”方法在ImageNet和下游任务上取得了有竞争力的结果。我们希望这个简单的基线将激励人们重新思考连体结构在无监督表征学习中的作用。代码将可用。

1.引言

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

连体网络的一个非期望平凡解(undesired trivial solution)是,所有的输出都“坍塌”为常数。有几种防止连体网络坍塌的通用策略。对比学习[16],例如SimCLR[8]中的例子,排斥不同的图像(负对),同时吸引同一图像的两个视图(正对)。负对排除了解空间中的常数输出。聚类[5]是避免常数输出的另一种方法,SwAV[7]将在线聚类并到连体网络中。除了对比学习和聚类之外,BYOL[15]只依赖于正对,但如果使用动量编码器,它不会坍塌。

在本文中,我们报告说,简单的连体网络可以令人惊讶地很好地工作,即使没有上述防止坍塌的战略。我们的模型直接最大化了一个图像的两个视图的相似性,既不使用负对也不使用动量编码器。它适用于典型的批量大小,不依赖于大批量训练。我们在图1中说明了这个“SimSiam”方法。

图1.SimSiam体系结构。同一个编码器网络f(即一个主干网加一个投影MLP)处理一幅图像的两个增强视图。然后在一侧应用预测MLP h,在另一侧应用停止梯度操作。该模型最大化了两个增强视图之间的相似性。它既不使用负对,也不使用动量编码器。

由于概念上的简单性,SimSiam可以作为一个连接多个现有方法的中心。简而言之,我们的方法可以被认为是“没有动量编码器的BYOL”。与BYOL不同的是,与SimCLR和SwAV一样,我们的方法直接在两个分支之间共享权重,因此也可以认为是“没有负对的SimCLR”和“没有在线聚类的SwAV”。有趣的是,BYOL、SimCLR和SwAV,它们每个移除其中一个核心组件,就都与SimSiam相关。即便如此,SimSiam也不会导致坍塌,而且可以表现得很有竞争力。

我们的经验表明,坍塌解确实存在,但停止梯度操作(图1)对防止坍塌解至关重要。停止梯度的重要性表明,应该有一个不同的基本优化问题正在解决。我们假设隐含有两组变量,SimSiam的行为就像在优化每一组变量之间交替进行。我们提供概念验证实验来验证这一假设。(The importance of stop-gradient suggests that there should be a different underlying optimization problem that is being solved. We hypothesize that there are implicitly two sets of variables, and SimSiam behaves like alternating between optimizing each set. We provide proof-of-concept experiments to verify this hypothesis.)

我们的简单基线表明,连体结构可能是相关方法共同成功的一个重要原因。连体网络可以自然地为建模不变性引入归纳偏置,因为根据定义,“不变性”意味着相同概念的两个观测值应该产生相同的输出。与卷积[25]类似,卷积是一种成功的通过权重共享来建模平移不变性的归纳偏置,权重共享连体网络可以建模更复杂的变换的不变性(例如,增广)。我们希望我们的探索能激励人们重新思考连体结构在无监督表征学习中的基本作用。

2.相关工作

连体网络。    连体网络[4]是比较实体的通用模型,应用包括签名[4]和人脸[34]验证、跟踪[3]、one-shot学习[23]等。在传统用例中,连体网络的输入来自不同的图像,比较由监督决定。

对比学习。    对比学习的核心思想是吸引正样本对,排斥负样本对。这种方法最近在无监督/自监督表征学习中得到了推广[36,30,20,37,21,2,35,17,29,8,9]。使用连体网络开发了简单有效的对比学习实例[37,2,17,8,9]。

在实践中,对比学习方法受益于大量的负样本[36,35,17,8]。这些样本可以保存在内存库中[36]。在连体罗网络中,MoCo[17]维护负样本队列,并将一个分支转换为动量编码器,以提高队列的一致性。SimCLR[8]直接使用当前批处理中共存的负样本,需要很大的批量处理大小才能正常工作。

聚类。    另一类用于无监督表示学习的方法是基于聚类的[5,6,1,7]。它们在聚类表示和学习预测聚类分配之间交替进行。SwAV[7]通过从一个视图计算分配并从另一个视图预测分配,将聚类合并到连体网络中。SwAV在均衡的划分约束下对每一批进行在线聚类,通过Sinkhorn-Knopp变换[10]进行求解。

虽然基于聚类的方法没有定义负样本,但是聚类中心可以充当负样本的原型。与对比学习一样,基于聚类的方法需要一个内存库[5,6,1],大批量[7],或者一个队列[7]来为聚类提供足够的样本。

BYOL。    BYOL[15]直接从一个视图预测另一个视图的输出。这是一个连体网络,其中一个分支是动量编码器(注释1:MoCo[17]和BYOL[15]不直接共享两个分支之间的权重,尽管理论上动量编码器应收敛到与可训练编码器相同的状态。我们将这些模型视为具有“间接”权重共享的连体网络)。[15]中假设动量编码器对BYOL避免坍塌很重要,如果移除动量编码器,就会导致失败的结果(0.3%精度,见[15]中的表5,注释2:在BYOL的arXiv v3更新中,当移除动量编码器并将预测器的学习率提高10倍时,它报告了在300epoch预训练下66.9%的准确率。我们的工作与此arXiv更新同时完成。我们的工作从不同角度对这一主题进行了研究,取得了更好的成果。)我们的实证研究挑战了动量编码器防止崩塌的必要性。我们发现停止梯度操作是关键的。这一发现可以被动量编码器的使用所掩盖,由于动量编码器总是伴随着停止梯度(因为它不会被参数的梯度所更新)。虽然移动平均行为可以通过适当的动量系数提高精度,但我们的实验表明,它与防止崩塌没有直接关系。

3.方法

我们的架构(图1)将来自图像x的两个随机增强视图x_1x_2作为输入。这两个视图由编码器网络f处理,编码器网络f由主干(例如ResNet[19])和投影MLP头[8]组成。编码器f在两个视图之间共享权重。预测MLP头[15]表示为h,它转换一个视图的输出并将其与另一个视图匹配。将两个输出向量表示为p_{1} =h(f(x_{1}))z_{2} =f(x_{2}),我们最小化它们的负余弦相似性:

D(p_{1} ,z_{2} )=-\frac{p_{1}}{{\vert \vert p_{1} \vert  \vert } _2}\frac{z_{2}}{{\vert \vert z_{2} \vert  \vert } _2}    (1)

其中\vert \vert \cdot  \vert  \vert _2是L2范数。这相当于L2x_1-规一化向量的均方误差[15],up to a scale of 2。Following[15],我们将对称化损失定义为:

L=\frac{1}{2} D(p_{1} ,z_{2} )+\frac{1}{2}D(p_{2} ,z_{1} )    (2)

这是为每个图像定义的,总损失是所有图像的平均值。其最小可能值为−1。

我们的方法的一个重要组成部分是停止梯度(stopgrad)操作(图1)。我们通过将(1)修改为:

D(p_{1} ,\mathrm{stopgrad}(z_{2}) )    (3)

这意味着z_2在这一项中被视为常数。类似地,(2)中的公式实现为:

L=\frac{1}{2}D(p_{1} ,\mathrm{stopgrad}(z_{2}) )+\frac{1}{2}D(p_{2} ,\mathrm{stopgrad}(z_{1}) )    (4)

这里,x_2上的编码器在第一项中不接收来自z_2的梯度,但是它在第二项中接收来自p_2的梯度(对于x_1,反之亦然)。

SimSiam的伪码在算法1中。

基线设置。    除非另有规定,我们的探索使用以下设置进行无监督的预训练:

• 优化器。    我们用SGD做预训练。我们的方法不需要像LARS[38]这样的大批量优化器(不像[8,15,7])。我们使用的学习率为lr×\mathrm{BatchSize}/256(线性缩放[14]),基础lr=0.05。学习率有一个余弦衰减时间表[27,8]。权重衰减为0.0001,SGD动量为0.9。

默认情况下,批处理大小是512,这对于典型的8-GPU实现是友好的。其他批量大小也可以很好地工作(第4.3节)。我们在[8,15,7]之后使用跨设备同步的批处理规范化(BN)[22](batch normalization synchronized across devices)。

• 投影MLP。    投影MLP(在f中)在每个全连接层(fc)之后使用BN层,包括其输出fc。其输出fc没有ReLU。隐藏fc是2048-d。此MLP有3层。

•预测MLP。    预测MLP(h)在其隐藏fc层之后使用BN层。它的输出fc没有BN(在4.4节消融)或ReLU。此MLP有2层。h的输入和输出(zp)的维数为d=2048h的隐藏层维数为512,使h成为瓶颈结构(在补充材料中消融)。

我们使用ResNet-50[19]作为默认骨干。其他实施细节在补充材料中。我们在消融实验中进行了100个阶段的预训练。

实验设置。    我们在1000分类ImageNet训练集[11]上进行无监督的预训练,不使用标签。通过训练集中的冻结表示训练有监督线性分类器,然后在验证集中对其进行测试,从而评价预训练表示的质量。线性分类的实现细节在补充材料中。

4.实证研究

在这一部分中,我们实证研究了SimSiam的表现。我们特别关注有哪些可能有助于模型的非崩溃解。

4.1. 停止梯度

图2给出了使用和不适用停止梯度的比较。网络结构和所有超参数不变,停止梯度是唯一的区别。

图2。使用与不使用停止梯度的SimSiam。左图:训练损失。没有停止梯度,它立即退化。中间图:L2范数归一化输出的每通道标准差,曲线为所有通道的平均标准差。右图:kNN分类器[36]作为进度监视器的验证精度。表:ImageNet线性评估(“w/停止梯度”是5次试验的平均值±标准差)。

图2(左)显示了训练损失。不使用停止梯度的情况下,优化程序快速找到退化解,并达到最小可能损失−1。为了证明退化是由崩塌引起的,我们研究了L2范数归一化输出z/||z||_2的标准偏差(std)。如果输出崩塌到一个恒定向量,那么每个通道的所有样本的std应为零。这可以从图2(中间)中的红色曲线中观察到。

作为比较,如果输出z具有零均值各向同性高斯分布,我们可以证明z/||z||_2的std是1/\sqrt{d} (见注释3)。图2(中间)中的蓝色曲线的std表明,使用停止梯度,std值接近d。这表明输出不会崩溃,并且它们分散在单位超球体上(they are scattered on the unit hypersphere)。

注释3:这里是非正式的推导,将z/\vert \vert z \vert  \vert _{2} 记为z’,也就是,对于第i个通道,z’_i=z_i/(\sum\nolimits_{j=1}^d z_{j}^2 )^{\frac{1}{2} } ,如果z_{j} 是独立同分布的高斯分布N(0,1),\forall j,于是有,z’_i\approx z_i/d^{\frac{1}{2} }\mathrm{std}[z’_i] = 1/d^{\frac{1}{2} }

图2(右)绘制了K-最近邻(kNN)分类器的验证精度[36]。该kNN分类器可以作为进度的监控(monitor of the progress)。在停止梯度下,kNN监视器的精度得到了稳步提高。

线性评价结果如图2的表格所示。SimSiam的非平凡精度为67.7%。该结果与5次试验的std结果一致。仅去除停止梯度,精度为0.1%,这是ImageNet中的随机猜测。

讨论。    实验表明,存在着崩溃解。崩溃可以通过最小可能损失和恒定输出来观察(注释4:我们注意到,随机猜测的精度(0.1%)不足以表示崩溃。具有发散损失的模型(这是另一种失效模式)也可能表现出随机猜测的精度)。崩溃解的存在意味着,我们的方法不足以仅通过架构设计(例如,预测器,BN,L2-范数)来防止崩溃。在我们的比较中,所有这些架构设计都保持不变,但如果移除停止梯度,它们不会防止崩溃。

引入停止梯度意味着,应该有另一个优化问题在被潜在的解决。我们在第5节提出一个假设。

4.2. 预测器

在表1中,我们研究了预测MLP的影响。

表1 表1.预测MLP的影响(100epoch预训练的ImageNet线性评估精度)。在所有这些变体中,我们对编码器f使用相同的schedule(具有余弦衰减的lr)。

如果去掉h(表1a),即h是恒等映射,则模型不起作用。实际上,如果使用对称损失(公式(4)),这种观察是可以预期的。现在,损失就变成了\frac{1}{2}D(z_{1} ,\mathrm{stopgrad}(z_{2}) )+\frac{1}{2}D(z_{2} ,\mathrm{stopgrad}(z_{1}) )。它的梯度方向与D(z_1,z_2)的梯度方向相同,幅值为其1/2(with the magnitude scaled by 1/2)在这种情况下,使用stop-gradient相当于去除stop-gradient,并将损失值缩小1/2(scaling the loss by 1/2)。出现了坍塌(表1a)。

我们注意到,梯度方向的这种推导只对对称损失有效。但是我们观察到,不对称变体(3)如果去掉h也会失败,而如果保留h它则能正常工作(见4.6节)。这些实验表明h对我们的模型是有帮助的。

如果h固定为随机初始化,我们的模型也不起作用(表1b)。然而,这种失败与崩溃无关。训练没有收敛,损失仍然很大。预测器h应该被训练,以适配(adapt to)这些表示。

我们还发现,具有恒定学习率(无衰减)的h可以很好地工作,并且产生比基线更好的结果(表1c)。一个可能的解释是h应该适配(adapt to)最新的表示,因此在表示(representations)得到充分训练之前,不必(通过缩小学习率)强制它收敛。在我们的模型的许多变体中,我们观察到具有恒定学习率的h提供了更好一些的结果。我们在以下小节中使用此形式。

4.3. 批量大小

表2报告了批量大小从64到4096的结果。当批量大小改变时,我们使用相同的线性缩放规则(lr×\mathrm{BatchSize}/256)[14],基数lr=0.05。我们使用10个epoch的预热[14],批量大小≥1024。请注意,对于所研究的所有批量大小,我们一直使用相同的SGD优化器(而不是LARS[38])。

表2.批量大小的影响(ImageNet线性评估精度,100epoch预训练)。

我们的方法在如此大范围内的批量大小,都工作得相当好。即使是128或64的批处理大小也可以正常执行,精度下降0.8%或2.0%。当批量大小为256~2048时,结果都很好,精度都差不多,且差异处于随机变化水平。

SimSiam的这种行为与SimCLR[8]和SwAV[7]明显不同。这三种方法都是具有直接权重共享的连体网络,但SimCLR和SwAV都需要大批量(例如4096)才能正常工作。

我们还注意到,标准SGD优化器在批量过大时(甚至在有监督学习中[14,38])不能很好地工作,批量大小为4096的结果更低。我们期望一个专门的优化器(例如LARS[38])在这种情况下会有所帮助。但是,我们的结果表明,防止崩溃不需要专门的优化器。

4.4. 批量归一化

表3比较了MLP头上BN的配置。在表3a中,我们删除了MLP头中的所有BN层(10 epoch warmup[14]专门用于此项)。尽管准确率很低(34.6%),但该变体不会导致崩溃。低精度可能是因为优化困难。将BN添加到隐藏层(表3b)将精确度提高到67.4%。

表3.MLP头上的批量标准化的影响(ImageNet线性评估精度,100epoch预训练)。

进一步将BN添加到投影MLP的输出(即f的输出)中可将精度提高到68.1%(表3c),这是我们的默认配置。在这里,我们还发现f的输出层的BN中的可学习仿射变换(scale and offset[22])是不必要的,禁用它可以获得68.2%的可比精度。

向预测MLP h的输出中添加BN不起作用(表3d)。我们发现这不是崩溃。训练不稳定,损失振荡。

总之,我们观察到适当使用BN有助于优化,这类似于BN在其他有监督学习场景中的行为。但我们没有看到任何证据表明BN有助于防止崩溃:实际上,在4.1节的比较(图2)对两项都使用了相同的BN配置,但是没有使用梯度停止的模型出现了崩溃。

4.5. 相似函数

除了公式(1)的余弦相似函数,我们的方法也适用于交叉熵相似。我们将D修改为:D(p_{1} ,z_{2} )=-\mathrm{softmax}(z_{2})\cdot \mathrm{log \softmax}(p_{1} )。这里softmax函数是沿着通道维度的。softmax的输出可以被认为是属于d个伪类别中的每一个的概率。

我们简单地用交叉熵相似性代替余弦相似性,并用公式(4)对其进行对称化。所有的超参数和体系结构都是不变的,尽管对于这个变体来说这个配置可能不是最理想的。对比如下:

交叉熵变体可以在不崩溃的情况下收敛到合理的结果。这表明,防止崩溃的行为不仅仅是关于余弦相似性。

这个变体有助于建立到SwAV[7]的联系,我们将在第6.2节讨论这个问题。

4.6. 对称化

到目前为止,我们的实验是基于公式(4)的对称损失。我们观察到,SimSiam防止崩溃的行为并不依赖于损失的对称化。我们与公式(3)的不对称变体进行比较如下:

非对称变量得到了合理的结果。对称化有助于提高精度,但与防止崩溃无关。对称化对每幅图像多做一次预测,我们可以通过对不对称版本中的每幅图像采样两对来大致补偿这一点(“2×”),它使差距变小。

4.7. 总结

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

5. 假设

我们讨论一个假设:SimSiam在隐式地优化什么,并提供了概念验证实验(proof-of-concept experiments)。

5.1. 公式

我们的假设是,SimSiam是一个类似于期望最大化(EM)算法的实现(an Expectation-Maximization  like algorithm)。它隐式地包含了两组变量,并解决了两个潜在的(underlaying)子问题。停止梯度的存在是引入额外变量集(introducing the extra set of variables)的结果。

我们考虑以下形式的损失函数:

L(\theta ,\eta )=E_{x,T} [{\vert \vert F_{\theta }(T(x))-\eta _{x}  \vert  \vert }_{2}^2 ]    (5)

F是由θ参数化的网络。T是增广。x是一个图像。期望E[·]是关于图像和增强的分布(The expectation E[·] is over the distribution of images and augmentation)。为了便于分析,这里我们使用均方误差{\vert \vert \cdot  \vert  \vert }_{2}^2 ,如果向量被L2范数归一化,其等价于余弦相似度。我们不考虑预测头,以后再讨论。

在公式(5)中,我们引入了另一组变量,表示为ηη的大小与图像的数量成正比。直观地说,η_x是图像x的表示,下标x表示使用图像索引来访问η的子向量。η不一定是网络的输出;这是一个最优化问题的论点。

有了这个公式,我们考虑解决:

\mathrm{min}_{\theta ,\eta } L(\theta ,\eta )    (6)

这里的问题是关于θη。这个公式类似于k-means聚类[28]。变量θ类似于聚类中心:它是编码器的可学习参数。变量η_x类似于样本x的赋值向量(assignment vector,k-means中的一个one-hot 向量):它是x的表示。

同样,类似于k-means,在公式(6)中的问题可以通过交替算法(alternating algorithm)来解决,固定一组变量并求解另一组变量。形式上,我们可以交替解决这两个子问题:

\theta ^t\leftarrow  \mathrm{arg \ min}_{\theta} L(\theta ,{\eta}^{t-1}  )    (7)

\eta  ^t\leftarrow  \mathrm{arg \ min}_{\eta } L({\theta }^{t} ,\eta  )    (8)

这里t是交替的次数(the index of alternation),\leftarrow 是赋值(assigning)。

\theta 。    可以使用SGD来解决公式(7)的子问题。停止梯度操作是一个自然的结果,因为梯度不会反向传播到η^{t−1},其在这个子问题中是常数。

\eta 。    可以通过分别独立求解每个\eta _{x} 来解决公式(8)的子问题。

现在的问题是,对每个图像x,最小化:E_{T} [{\vert \vert F_{{\theta }^t }(T(x))-\eta _{x}  \vert  \vert }_{2}^2 ],请注意,期望是对增广T的分布的期望(the expectation is over the distribution of augmentation)。由于均方误差(注释5:如果我们使用余弦相似性,我们可以通过L2归一化F的输出和η_x来近似求解它),很容易通过以下方法解决:

\eta _{x}^t \leftarrow E_{T} [F_{{\theta }^t }(T(x))]    (9)

这表明η_x被赋值为x在增广的分布上的平均表示(ηx is assigned with the average representation of x over the distribution of augmentation)。

一步交替(One-step alternation)。    SimSiam可以通过公式(7)和(8)之间的一步交替来近似。首先,我们通过只对增广进行一次采样来近似(9)(sampling the augmentation only once),记为T’,忽略E_T[·]

\eta _{x}^t \leftarrow F_{{\theta }^t }(T’(x))    (10)

将其插入子问题(7),我们得到:

\theta ^{t+1}\leftarrow   \mathrm{arg \ min}_{\theta}E_{x,T} [{\vert \vert F_{\theta }(T(x))- F_{{\theta }^t }(T’(x))  \vert  \vert }_{2}^2 ]    (11)

现在θ_t在这个子问题中是一个常量,而T’由于其随机性意味着是另一个视图。这个公式展示了连体结构。第二,如果我们用一个SGD步骤来减少损失来实现公式(11),那么我们可以近似SimSiam算法:一个自然的、使用梯度停止的连体网络。

预测器。

我们的上述分析不涉及预测头h。我们进一步假设,由于(10)的近似,h在我们的方法中是有用的。

根据定义,h期望最小化(h is expected to minimize):\mathrm{E}_{z} [\vert \vert h(z_{1} )-z_{2}  \vert  \vert _{2}^2 ]h的最优解(optimal solution)应该满足,对于任何图像x,有:h(z_{1} )=\mathrm{E}_{z} [z_{2}]=E_{T} [f(T(x))]。这一项与公式(9)中的很相似。公式(10)的近似中,期望项E_{T}[\cdot ] 被忽略。使用h可以填补这个差距。在实践中,真正的去计算期望E_{T} 是不现实的。但是神经网络(例如,预测头h)学习预测期望是可能的,而T的采样隐含地分布在多个时期(while the sampling of T is implicitly distributed across multiple epochs)。

对称化。    我们的假设不涉及对称化。对称化就像(11)中更密集地采样增强T。实际上,SGD优化器通过采样一批图像和一对增强(T_1,T_2)来计算E_{x,T}[·]的经验期望。理论上,在采样更密集的情况下,经验期望应该更精确。对称化提供了一个额外的对(T_2,T_1)。这说明对称化对我们的方法来说不是必需的,但是它能够提高精度,正如我们在第4.6节中所观察到的。

5.2. 概念证明

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

多步交替。    我们假设SimSiam算法类似于(7)和(8)之间的交替,间隔一步SGD更新。在这个假设下,如果SGD的间隔有多步,我们的公式就有可能起作用(We have hypothesized that the SimSiam algorithm is like alternating between (7) and (8),with an interval of one step of SGD update.Under this hypothesis, it is likely for our formulation to work if the interval has multiple steps of SGD)。

在这个变体中,我们将(7)和(8)中的t作为外循环的索引;(7)中的子问题由k个SGD步的内循环更新。在每次交替中,我们使用(10)预先计算所有k 个SGD步骤所需的η_x,并将它们缓存在内存中。然后我们执行k 个SGD步骤来更新θ。我们使用与SimSiam相同的架构和超参数。比较如下:

这里,“1-step”相当于SimSiam,“1-epoch”表示一个epoch所需的k个步骤。所有多步骤的变体工作得很好。10-/100步的变体甚至比SimSiam获得更好的结果,尽管代价是额外的预计算。实验表明,交替优化是一个有效的公式,SimSiam是一个特例。

增强的期望(Expectation over augmentations)    使用预测器h可能是因为公式(9)中的E_{T} [\cdot ]被忽略。我们考虑另一种近似这个期望的方法,其中我们发现h是不需要的。

在这个变体中,我们不通过公式(10)中的赋值直接更新η_x;相反,我们维持一个移动平均:\eta _{x}^t \leftarrow m\ast  \eta _{x}^{t-1} +(1-m)\ast F_{\theta ^t} (T’(x)),其中m是动量系数(这里是0.8)。这种计算类似于[36]中维护的memory bank。此移动平均提供了多个视图的近似期望值。这个变体在没有预测器h的情况下有55.0%的准确率。作为比较,如果我们去掉h,但不保持移动平均,它就完全失败了(如表1a所示)。这个概念验证实验支持了预测器h的使用与E_T[\cdot ]的近似有关。

5.3. 讨论

我们的假设是关于,优化的问题可能是什么。它没有解释为什么崩溃被防止了。我们指出SimSiam及其变体的不崩溃行为仍然是一个经验观察(Our hypothesis is about what the optimization problem can be. It does not explain why collapsing is prevented. We point out that SimSiam and its variants’ non-collapsing behavior still remains as an empirical observation)。

这里我们简要讨论一下我们对这个开放性问题的理解。交替优化提供了一个不同的轨迹,并且该轨迹取决于初始值。被初始化的\eta (随机初始化网络的输出)不太可能是恒定值。从这个初始化开始,对于所有的x,交替优化可能很难接近一个恒定值\eta _{x} 因为该方法不联合计算所有x的对于\eta 的梯度(the method does not compute the gradients w.r.t. η jointly for all x)。优化器寻找另一条轨迹(图2左),其中输出是分散的(图2中)。

6.比较

6.1. 结果比较

ImageNet。    表4中,我们与ImageNet线性评估的最新框架进行了比较。为了公平比较,所有竞争对手都以我们的复现为基线,“+”表示与原稿相比,我们的复现有所改进(见补充材料)。对于每种方法,我们都遵循其原始论文中的超参数和增广配方(注释6)。所有条目都基于标准ResNet50,在预训练期间使用了两个224×224视图。

注释6:在我们的BYOL复现中,100、200(400)、800个epoch设置低于[15]中的100、300、1000个epoch设置:lr为{0.45、0.3、0.2},wd为{1e-6、1e-6、1.5e-6},动量系数为{0.99、0.99、0.996}。

表4 ImageNet线性评估比较。在单个裁剪上评估

表4显示了这些方法的结果和主要特性。SimSiam的训练批量为256,既不使用负样本,也不使用动量编码器。尽管简单,SimSiam还是取得了竞争性的结果。在100个epoch的预训练下,该方法的准确率最高,但训练时间较长的增益较小。它在所有情况下都比SimCLR有更好的结果。

迁移学习。    在表5中,我们通过将它们迁移到其他任务(包括VOC[12]对象检测和COCO[26]对象检测和实例分割)来比较表示质量。我们在目标数据集中端到端地微调预训练模型。我们对所有条目使用MoCo[17]的公共代码库,并搜索每个方法的微调学习率。所有的方法都是基于我们复现的在ImageNet上200个epoch的预训练。

表5.迁移学习。所有的无监督方法都基于ImageNet中的200epoch预训练。VOC 07检测:Faster R-CNN[32]在VOC 2007 trainval中微调,在VOC 2007 test中评估;VOC 07+12检测:在VOC 2007 trainval + 2012 train中微调Faster R-CNN,在VOC 2007测试中评估;COCO检测和COCO实例分割:Mask R-CNN[18](1× schedule)在COCO 2017 train中微调,在COCO 2017 val中评估。所有Faster/Mask R-CNN型号均采用C4主干[13]。所有VOC结果均为5次试验的平均值。Bold entries are within 0.5 below the best

表5显示了SimSiam的表示可以在ImageNet任务之外进行迁移。它在这些领先的方法中是有竞争力的。表5中的“基本”SimSiam使用了ImageNet实验中的基线预训练方法。我们发现另一个配方lr=0.5和wd=1e-5(具有相似的ImageNet精度)可以在所有任务中产生更好的结果(表5,“SimSiam, optimal”)。

我们强调,所有这些方法对于表5中的迁移学习都是非常成功的,它们可以在所有任务中超越或相当于ImageNet有监督的预训练。尽管存在许多设计差异,但这些方法的共同结构是连体网络。这种比较表明,连体的结构是他们普遍成功的核心因素。

6.2. 方法比较

除了准确性,我们还比较了这些连体结构的方法。我们的方法充当连接这些方法的中心。图3抽象了这些方法。“编码器”包含可在两个分支之间共享的所有层(例如主干、投影MLP[8]、prototypes[7])。红色的组件是SimSiam中缺少的组件。我们下一步讨论关系。

图3.连体结构的比较。编码器包括可在两个分支之间共享的所有层。虚线表示梯度传播流。在BYOL、SwAV和SimSiam中,缺少虚线意味着停止梯度,为了简单起见,没有说明它们的对称性。红色的组件是SimSiam中缺少的组件。

与SimCLR的关系[8]。    SimCLR依赖于负样本(“相异性”)来防止崩溃。SimSiam可以被认为是“没有负样本的SimCLR”。

为了进行更彻底的比较,我们将预测器MLP h和停止梯度附加到SimCLR中(注释7:注释7:我们在一个分支上附加额外的预测器,在另一个分支上附加停止梯度,并通过交换来对称化)。以下是对SimCLR复制的消融:

停止梯度和额外的预测器对SimCLR都不是必要的或有用的。正如我们在第5节中分析的那样。停止梯度和额外预测器的引入可能是另一个潜在优化问题的结果。它不同于对比学习问题,因此这些额外的成分可能没有帮助。

与SwAV的关系[7]。    SimSiam在概念上类似于“没有在线聚类的SwAV”。我们通过在SwAV中重做一些组件来建立这种联系(i) SwAV中的共享prototype layer可以被siames编码器吸收(ii)在[7]中,prototypes在梯度传播之外进行了权重归一化;我们用全梯度计算来实现[33](注释8:这种改进产生了与原始SwAV相似的结果,但它可以在我们的消融中实现端到端传播。)(iii)SwAV中的相似函数是交叉熵。通过这些抽象,图3显示了一个高度简化的SwAV示例。

SwAV将Sinkhorn-Knopp(SK)变换[10]应用于目标分支(这也是对称化的[7])。SK变换源于在线聚类[7]:它是在均衡分区约束下对当前批量进行聚类的结果。均衡分区可以避免倒塌。我们的方法不涉及这种转换。

我们研究了预测MLP-h和stopgradient对SwAV的影响。请注意,SwAV对SK变换应用停止梯度,因此我们通过移除它来进行烧蚀。以下是我们的SwAV复现的比较:

添加预测器也没有帮助。移除stopgradient(因此模型是端到端训练的)会导致发散。作为一种基于聚类的方法,SwAV本质上是一种交替方法[7]。这可能解释了为什么不应从SwAV中删除stopgradient。

与BYOL的关系[15]。    我们的方法可以被认为是“没有动量编码器的BYOL”,但有许多实现上的差异。动量编码器可能有助于提高精度(表4),但对于防止崩溃是不必要的。考虑到我们在第5节的假设。η子问题(8)可由其他优化器解决,例如基于梯度的优化器。这可能导致η的时域平滑更新(temporally smoother update)。尽管不直接相关,动量编码器也产生了更平滑的η。我们相信解决(8)的其他优化器也是合理的,这可能是一个未来的研究问题。

7.结论

我们用简单的设计探索了连体网络。我们极简方法的竞争力表明,最新方法的连体结构可能是其有效性的核心原因。连体网络是自然而有效的不变性建模工具,是表征学习的一个重点。我们希望本研究能引起社会各界对连体网络在表征学习中的基础性作用的关注。

附录

A.实施细则

无监督的预训练。    

我们的实施遵循现有工程的实践[36、17、8、9、15]。

数据扩充。    我们使用PyTorch[31]符号来描述数据扩充。几何增强是比例为[0.2,1.0]的RandomResizedCrop[36]和RandomHorizontalFlip。色彩增强是ColorJitter{亮度、对比度、饱和度、色调},强度为{0.4、0.4、0.4、0.1},应用概率为0.8,以及RandomGrayscale,应用概率为0.2。模糊增强是标准差为[0.1,2.0]的高斯核。

初始化。    卷积层和fc层遵循默认的PyTorch初始值设定项。请注意,默认情况下,PyTorch将fc层的权重和偏置初始化为均匀分布U(-\sqrt{k} ,\sqrt{k} ),其中k=1/\mathrm{in\ channels}。具有非常不同的fc初始值设定项的模型(例如,固定std为0.01)可能无法收敛。此外,与[8]的实现类似,我们将每个残差块的最后一个BN层中的scale parameters初始化为0[14]。

权重衰减。    在SGD优化器中,我们对所有参数层使用0.0001的权重衰减,包括BN scales and biases。这与[8,15]的实现相反,后者在LARS优化器中排除了对BN scales and biases的权重衰减。

线性评估。    给定预训练好的网络,我们再冻结的特征上训练一个有监督的线性分类器,冻结特征是来自ResNet全局平均池层(pool5)。线性分类器训练使用基础lr=0.02,余弦衰减90个epoch,权重衰减=0,动量=0.9,批量大小=4096,使用LARS优化器[38]。我们还尝试了SGD优化器,按照[17],基础lr=30.0,权重衰减=0,动量=0.9,批量大小=256,这使精度降低了约1%。在训练线性分类器后,我们用验证集的224×224中心裁剪对其进行评估。

B ImageNet上的附加烧蚀

下表报告了在不同输出维度d下的SimSiam结果:

它得益于更大的d,并在d=2048时达到饱和。这与现有方法不同[36,17,8,15],现有方法的精度在d为256或512时达到饱和。

在这个表中,预测MLP的隐层维数总是输出维数的1/4。我们发现这种瓶颈结构更为健壮。如果我们将隐藏维度设置为与输出维度相等,那么在我们的某些探索变体中,训练可能不太稳定或失败。我们假设这个瓶颈结构的行为就像一个自动编码器,可以迫使预测器消化信息(behaves like an auto-encoder, can force the predictor to digest the information)。我们建议在我们的方法中使用这个瓶颈结构。

C 复现相关方法

我们在表4中的比较是基于我们对相关方法的复现。在每一篇论文之后,我们尽可能忠实地重新实现了相关的方法。此外,我们还可以通过微小而简单的修改来改进SimCLR、MoCo v2和SwAV:具体来说,我们在SimCLR和SwAV中的投影MLP中使用了3层(与原来的2层相比),在MoCo v2中使用了对称化损失(与原来的不对称相比)。表C.1比较了我们复现的这些方法与原始论文的结果(如果可得的话)。我们的复现对于SimCLR、MoCo v2和SwAV有更好的结果(在表4中用“+”表示),并且对于BYOL至少有可比的结果。

表C.1 我们的复现和原论文的结果。所有结果都是基于ResNet50预训练和两个224x224裁剪

D CIFAR实验

我们观察到SimSiam在CIFAR-10数据集有类似行为[24]。该实现类似于ImageNet中的实现。我们使用SGD,基本lr=0.03,余弦衰减计划为800个历元,权重衰减=0.0005,动量=0.9,批大小=512。输入图像大小为32×32。我们不使用模糊增强。主干是ResNet-18的CIFAR变体[19],后面是一个2层投影MLP。输出为2048-d。

图D.1显示了kNN分类精度(左)和线性评估(右)。与ImageNet观测类似,SimSiam得到了一个合理的结果,并且没有崩溃。我们将其与相同设置下训练的SimCLR[8]进行了比较。有趣的是,SimSiam和SimCLR之间的训练曲线是相似的。在这种情况下,SimSiam略好0.7%。

图D.1。CIFAR-10实验。 左:预训练过程中,kNN分类器(作为监测器)的验证准精度。 右:线性评估精度。主干是ResNet-18。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,311评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,339评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,671评论 0 342
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,252评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,253评论 5 371
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,031评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,340评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,973评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,466评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,937评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,039评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,701评论 4 323
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,254评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,259评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,485评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,497评论 2 354
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,786评论 2 345

推荐阅读更多精彩内容