为了讲清楚SimSiam和EM算法以及k-means算法有什么内在联系,本文先简单阐述一下EM算法和k-means算法的思想,然后从EM算法出发推导出SimSiam的优化目标,并且通过推导结果解释predictor和momentum encoder(EMA)的作用。
一、EM
EM算法的全称是Expectation-Maximization,是机器学习中最为经典的算法之一。EM算法可以认为是一种算法思想,其实很多机器学习算法中都用到了EM思想,比如非常经典的k-means聚类算法,等下也会讲到k-means是如何应用EM的。
EM算法可以认为是极大似然估计的拓展,极大似然估计只估计一个变量,而EM算法需要同时估计两个变量。学过概率统计的都知道,直接估计两个变量是很困难的问题,所以EM算法实际上是为了解决多个变量估计困难提出来的算法思想,通过一个迭代的方式,先固定其中一个变量,估计另一个变量,然后交替迭代更新,循环往复直至收敛。一个迭代有两个步骤(分别估计两个变量),先E步,然后M步(M步其实就是极大似然估计)。
有关EM算法的详细解释可以看文章链接:https://zhuanlan.zhihu.com/p/36331115
二、k-means
一个最直观了解 EM 算法思路的是 k-means 算法(一个变量是如何得到聚类中心,另一个变量是如何划分数据)。在 k-means 聚类时,每个聚类簇的中心是隐含数据。我们会假设 K 个初始化中心(初始化中心随机得到,后续迭代中心通过聚类平均进行更新),即 EM 算法的 E 步;然后计算得到每个样本最近的中心,并把样本聚类到最近的这个中心,即 EM 算法的 M 步。重复这个 E 步和 M 步,直到中心不再变化为止,这样就完成了 k-means 聚类。
三、SimSiam
图片来源: https://zhuanlan.zhihu.com/p/367290573
SimSiam也可以用EM算法解释。SimSiam实际上隐式的包含了两个变量,并且同时解决了两个潜在的子问题。实际上stop-gradient操作引入了其中一个变量。
我们可以把SimSiam的损失函数定义成以下形式(这里先不考虑SimSiam的predictor):
其中 表示前面的数据增强函数, 表示Encoder加Projector的网络函数。期望E是关于图像x和数据增强 的分布(也就是所有图片和数据增强的损失期望之和)。为了方便分析,用L2余弦相似度的等价形式MSE来表示相似度。 表示图片x的表征(也就是上图下面分支的输出)。那么优化目标就可以定义成:
这个优化目标的形式就类似于EM和k-means算法。其中变量 和聚类中心类似,是encoder和projector的可学习参数;变量 和采样点x的分配向量类似,是图片x的表征。那么SimSiam可以和k-means算法一样,通过一个EM迭代算法来解决,固定住一个变量,估计另一个变量。形式上可以写成以下两个子问题:
其中t表示迭代轮次, 表示赋值。
可以通过SGD来求解 ,从这个求解式子可知,stop-gradient是必须的操作,试想一下,如果没有stop-gradient,那么 就不是一个常数,也就是第一个子问题有两个变量,无法求解。
求解完 之后,第二个子问题就只剩下一个变量 。将 代入损失函数中,第二个子问题就变成了:
通过期望公式可得:
这个式子表示第t个迭代轮次的图片x表征由该图片所有数据增强期望计算得到。
One-step alternation
上述两个子问题的一次step可以近似为SimSiam。
· 首先,可以用一次采样的数据增强 来对第二个子问题进行近似(一次数据增强的期望等于本身):
· 然后把上式代入第一个子问题中:
· 其中 是子问题中的一个常数, 和 表示两个不同的数据增强,于是上式就变成了一个孪生网络结构。
· 如果上式用一个SGD来降低loss,那么就可以得到接近SimSiam的算法(这里没有考虑SimSiam的predictor,等下解释predictor的作用):一个使用stop-gradient的孪生网络。
Multi-step alternation
如果把上面一次step拓展到多次step,就可以得到多次step的SimSiam。
多次step的SimSiam可以设计成将t作为迭代的外循环次数,第一个子问题设计成一次迭代k个step SGD(k个step SGD的所有 表征预先计算缓存到内存中)。
上述实验中n-step表示SimSiam一次迭代的step数,1-epoch表示一个epoch中一次迭代总的step数。可以发现,适当的增加SimSiam的一次迭代的step数,可以提升精度(可以认为在一次迭代中变相的增加数据量,从k-means的角度考虑聚类效果会更好)。
Predictor
上述推导为了简便起见,省略了predictor h,如果增加一个predictor h,第二个子问题就变成了:
通过期望公式可得:
前面的一次step近似推导可以省略掉期望E,但是由于predictor h的存在,可以不进行一次step近似,predictor h可以弥补 和期望E的gap。实际上,直接计算出数据增强 的期望E是不现实的,但是可能直接通过predictor h来预测出期望E(因为多个epoch中数据增强 的采样是一个隐式分布,可以通过学习的方式记住)。
Symmetrization
上述推导没有考虑对称计算loss的情况,实际上,对称loss相当于一次SGD密集采样数据增强 [公式] ,也就是优化效率高一倍。
上述实验验证了这个结论,对称loss优化效率大大提高,非对称loss即使使用两倍训练时间,效果也不如单倍对称loss,猜测因为对称loss下数据量更多,从k-means的角度考虑聚类效果会更好。
四、EMA
SimSiam进一步发现predictor h用来预测期望E不是必须的,还有其他的替代方案。SimSiam又做了一个对比实验,去掉predictor h的SimSiam其实就是上面推导的一次step近似,使用momentum encoder(EMA)来得到 [公式] ,EMA相当于提供了更多数据增强 [公式] 的views的近似期望E,在没有predictor h的时取得55.0%的精度;但是如果同时没有EMA和predictor,精度迅速掉到0.1%。这两个实验侧面证实了EMA和predictor都能起到预测期望E的作用。
并且EMA和predictor的实验同时说明了SimSiam和BYOL没有负样本对也能work的原因,因为SimSiam虽然没有EMA但是有predictor,BYOL既有predictor也有EMA。
五、总结
SimSiam的理论解释意味着带stop-gradient的孪生网络表征学习都可以用EM算法解释。stop-gradient起到至关重要的作用,并且需要一个预测期望E的方法进行辅助使用。但是SimSiam仍然无法解释模型坍塌现象,SimSiam以及它的变体不坍塌现象仍然是一个经验性的观察,模型坍塌仍然需要后续的工作进一步讨论。
看懂了SimSiam对孪生网络表征学习的解释,再看其他应用孪生网络的算法就清爽了许多,SimSiam值一个best paper(虽然只拿了2021 CVPR Best Paper Honorable Mention)。
参考文献
[1] Exploring Simple Siamese Representation Learning
[2] August:人人都懂EM算法
[3] 张俊林:对比学习(Contrastive Learning):研究进展精要
本文来自:公众号【Smarter】 作者:Smarter
Illustrastion by By Tatiana Vinogradova from icons8
-The End-
本周上新!
扫码观看!
关于我“门”
将门是一家以专注于发掘、加速及投资技术驱动型创业公司的新型创投机构,旗下涵盖将门创新服务、将门技术社群以及将门创投基金。
将门成立于2015年底,创始团队由微软创投在中国的创始团队原班人马构建而成,曾为微软优选和深度孵化了126家创新的技术型创业公司。
如果您是技术领域的初创企业,不仅想获得投资,还希望获得一系列持续性、有价值的投后服务,欢迎发送或者推荐项目给我“门”:
bp@thejiangmen.com
点击右上角,把文章分享到朋友圈
⤵一键送你进入TechBeat快乐星球
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.