介绍
孪生网络已成为无监督表达学习领域的通用架构,现有方法通过最大化同一图像的两者增广的相似性使其避免“崩溃解(collapsing solutions)”问题。
这篇研究中,作者提出一种惊人的实证结果:Simple Siamese(SimSiam)网络甚至可以在无(1、negative sample pairs;2、large batch;3、momentum encoders)的情形下学习有意义的特征表达。
作者通过实验表明:对于损失与结构而言,“崩溃解”确实存在,但是“stop-gradient”操作对于避免“崩溃解”有非常重要的作用。
作者提出了一种新颖的“stop-gradient”思想并通过实验对其进行了验证,该文所提SimSiam在ImageNet及下游任务上均取得了有竞争力的结果。
作者期望:这个简单的基准方案可以驱动更多研员重新思考无监督表达学习中的孪生结构。
方法
上述两个损失作用于每一张图像,总损失是所有图像损失的平均,故最小的可能损失为-1.
需要的是:该文一个非常重要的概念是Stop-gradient操作(即上图的右分支部分)。可以通过对上述公式进行简单的修改得到本文的损失函数:
# Algorithm1 SimSiam Pseudocode, Pytorch-like# f: backbone + projection mlp# h: prediction mlpfor x in loader: # load a minibatch x with n samples x1, x2 = aug(x), aug(x) # random augmentation z1, z2 = f(x1), f(x2) # projections, n-by-d p1, p2 = h(z1), h(z2) # predictions, n-by-d L = D(p1, z2)/2 + D(p2, z1)/2 # loss L.backward() # back-propagate update(f, h) # SGD update
def D(p, z): # negative cosine similarity z = z.detach() # stop gradient p = normalize(p, dim=1) # l2-normalize z = normalize(z, dim=1) # l2-normalizereturn -(p*z).sum(dim=1).mean()
实证研究
Stop-gradient
添加与否的性能对比,注网络架构与超参保持不变,区别仅在于是否添加
Stop-gradient
。
Stop-gradient
时,优化器迅速找了了一个退化解并达到了最小可能损失-1。为证实上述退化解是“崩溃”导致的,作者研究了输出的
规范化结果的标准差。如果输出“崩溃”到了常数向量,那么其每个通道的标准差应当是0,见上图middle。
Stop-gradient
)接近
,这也就意味着输出并没有“崩溃”。
Stop-gradient
时,其分类进度仅有0.1%,而添加
Stop-gradient
后最终分类精度可达67.7%。
总而言之,BN有助于训练优化,这与监督学习中BN的作用类似;但并未看到BN有助于避免“崩溃”的证据。
stop-gradient
操作。
假设&实验
stop-gradient操作是引入额外变换的结果。
stop-gradient
是一个很自然的结果,因为梯度先不要反向传播到
,在该子问题中,它是一个常数;对于
的求解,上述问题将转换为:
在这里,等价与SimSiam。
可以看到:multi-step variants work well,更多步的SGD更新甚至可以取得比SimSiam更优的结果。
这就意味着:交错优化是一种可行的方案,而SimSiam是其特例。
对比实验
前述内容已经说明了所提方法的有效性,接下来将从ImageNet以及迁移学习的角度对比一下所提方法与其他SOTA方法。
上图给出了所提方法与其他SOTA无监督学习方法在ImageNet的性能,可以看到:SimSiam可以取得具有竞争力的结果。
在100 epoch训练下,所提方法具有最高的精度;但更长的训练所得收益反而变小。
上表给出了所提方法与其他SOTA方法在迁移学习方面的性能对比。
从中可以看到:SimSiam表达可以很好的迁移到ImageNet以外的任务上,迁移模型的性能极具竞争力。
结论
该文采通过非常简单的设计探索了孪生网络,所提方法方法的有效性意味着:孪生形状是这些表达学习方法(SimCLR, MoCo,SwAR等)成功的关键原因所在。
孪生网络天然具有建模不变性的特征,而这也是表达学习的核心所在。
点击阅读原文,直达AAAI小组!