SimSiam论文简析——笔记

原视频讲解地址,UP讲解的非常清晰,正在进行相关工作的小伙伴可以关注yo

真诚的向大家推荐这个UP主,论文讲述的方法清楚,脉络清晰,听君一席话胜读十年书。

论文题目:Exploring Simple Siamese Representation Learning

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

非官方实现:https://github.com/PatrickHua/SimSiam

在以后更新的笔记中我会附上论文的关键部分,方便大家查阅!

摘要:

Siamese网络已经成为最近各种无监督视觉表示学习模型中的通用结构。这些模型最大化了一幅图像的两个增广之间的相似性,但需要满足某些条件以避免坍塌。在这篇文章中,我们报告了令人惊讶的实验结果,简单的Siamese网络即使不使用以下任何一项也可以学习有意义的表示:(1)负样本对,(2)大batch,(3)动量编码器。我们的实验表明,对于损失和结构确实存在坍塌,但是停止梯度操作在防止崩溃中起着重要作用。我们对停止梯度的含义提出了一个假设,并进一步展示了验证它的概念证明实验。我们的“SimSiam”方法在ImageNet和下游任务上取得了有竞争力的结果。我们希望这个简单的基线将激励人们重新思考Siamese架构对于无监督表示学习的作用。代码将可用。

SimSiam这篇论文值得更加深入的挖掘与研究。虽然论文提出的方法并不是SOTA的,但是论文中提出的模型非常的重要,尤其是对于探究无监督学习本质这一工作来说。而对于我们来说重要的不仅仅是知道现象,而是探究本质。“为什么会产生这样的结果”。作者在论文中给出了自己的想法和思考,值得我们学习和借鉴。

目录:1. intro-siamese network 2. methodology & empirical study 3. result 4.hypothesis 5. conclusion

1.  Siamese network

首先我们需要了解,什么是simsiam network?

simsiam network就是同一个网络分成了两个支,每一支都使用相同的权重,但是它们的输入是不同的向量。以下就是一个simsaim 网络的经典的结构。

simsiam结构

2. Methodology

本文提出的方法与我们之前介绍过的BYOL是非常相近的。与之不同的是在本文中将BYOL中的两个momentum都去掉了,直接使用相同的权重。从结构上来说它将BYOL的encoder和projection聚合到了一起。也即是说,在本文中的encod是CNN+MLP的结果。同时保留的BYOL的predictor。整体的结构如下图所示:

SimSiam架构

训练该网络的伪代码作者也提供了:

伪代码

以上就是本文提出的方法。

对比其他的对比学习的方法,本文的方法虽然非常简单但是依旧是有效的。

与其他的架构对比

Empirical study

为了进一步确认那一部分的设计在本文的框架中是至关重要的,作者设计了以下的消融实验。

实验一:有无停止梯度传播

实验一:有无停止梯度传播

显然如果使两侧的梯度都进行传递网络的loss是非常小的,因为两个网络的参数是接近一抹一样的所以两个网络很容易就达到一致了。而且这样的性能表现是非常差的,因为很容易达到两个网络参数一样,最后导致模型坍塌。实际上并不能学到什么有效的特征。

实验二:使用不同的predictor的结果

实验二:使用不同的predictor的结果

如果没有predictor甚至是一个随机的固定的值来作为predictor,基本上是学不到什么东西的。所以说或predictor是非常重要的。

实验三:batch_size & batch_normalization

从结果来看,batch_size的影响并不是很大。BN层在projection中hidden和output都加,在predictor中只加在hidden layer中是最好的。

实验:不同的loss function、网络是否对称

3. result

结果图

从结果来看本文提出的方法与前人的工作的结果是非常的相近的。

4. Hypothesis

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

我们最熟悉的最大期望算法就是k-means算法。

L(\theta,\eta)=\mathbb{E}_{x,\mathcal{T} }[\|\mathcal{F} _\theta(\mathcal{T}(x)) - \eta_x\|_2 ^2 ](公式1)

这里x是输入图像,\mathcal{T}是图像的一种增强, \mathcal{F} _\theta 是encoder,\eta _x不一定局限于图像的representation,在训练网络时我们希望找到一个\theta ,找到一个\eta ,是的loss的期望是最小的。

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

在每一步中首先会确定一个\theta使得loss最小,这时使用的是一个固定的\eta,从而得到\theta^t

\theta^t \gets \mathop{\arg\min}_{\theta}  \mathcal{L}( \theta,\eta^{t-1})(公式2)

锁定\theta,寻找一个使loss达到最小的\eta

\eta^t \gets \mathop{\arg \min}_\eta \mathcal{L}(\theta^t, \eta)(公式3)

反复进行以上两步最终使训练得到一个满意的结果。

当我们训练\eta时,将\theta作为一个常数,带入到(公式1)中就可以得到以下式(这一步得到了一个新的\eta):

\eta^t_x \gets \mathbb{E}_\mathcal{T}[\mathcal{F}_{\theta^t}(\mathcal{T}(x)) ](公式4)

将(公式4)代入公式1,因为使用的是Siamese network,所以左右的两个encoder参数是一致的,最终得到了下式用于更新\theta

\theta^{t+1} \gets \mathop{\arg \min}_\theta \mathbb{E}_{x, \mathcal{T}}[ \| \mathcal{F}_ {\theta}(\mathcal{T}(x) ) - \mathcal{F}_{\theta^t}( \mathcal{T}^{\prime}(x))\|^2_2](公式5)

上式中的\mathcal{F}_\theta就是带predictor的部分,\mathcal{F}_{\theta ^t}是右侧没有predictor的部分。\mathcal{T}^\prime是上一个训练周期中使用的图像增强策略,所以与\mathcal{T}是不同的。

我们注意到公式5中并没有体现出predictor的地方,且右侧的\mathcal{F}_{\theta^t}部分是一个常数,其期望是好求的,但是左边部分的\mathcal{F}_\theta的期望是如何求取的呢?

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

\mathbb{E}_z[\|h(z_1)-z_2\|^2_2](公式6)

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

h(z_1)=\mathbb{E}_z[z_2] = \mathbb{E}_\mathcal{T}[f(\mathcal{T} (x))](公式7)

所以作者在这里猜测predictor是必须的原因就是它可以用于求取Siamese network网络左侧(也即公式5的\mathcal{F}_\theta部分)的期望。这可能也是本文提出的方法可以work的原因。

5. conclusion

总而言之,Siamese network是非常适合给一些不变量来进行建模的,在representation learning中非常有用的工具。

且本文提出了一个非常简单的框架,性能也不错。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容