x 是输入图像,T 是图像的一种增强, F 是encoder,ηx 不一定局限于图像的representation,在训练网络时我们希望找到一个 θ,找到一个 η,使loss的期望是最小的。 实际上训练的过程中是分布进行训练的。 1.在每一步中首先会确定一个 θ 使得loss最小,这时使用的是一个固定的 η,从而得到 θt 2.锁定θ,寻...
· 首先,可以用一次采样的数据增强 来对第二个子问题进行近似(一次数据增强的期望等于本身):· 然后把上式代入第一个子问题中:· 其中 是子问题中的一个常数, 和 表示两个不同的数据增强,于是上式就变成了一个孪生网络结构。· 如果上式用一个SGD来降低loss,那么就可以得到接近SimSiam的算法(这里...
loss_meter.update(loss.item()) lr = lr_scheduler.step() local_progress.set_postfix({'lr':lr,"loss":loss_meter.val,'loss_avg':loss_meter.avg}) 然后定义好后 就是一个普通的训练过程了 。 值得注意的是 model是eval模型 也就是他是冻住的,参数不改变。而classfier是可以改变的, 梯度回传也只...
次( )数据增强,在计算loss时, 次均使用stop-gradient,随着 的增大,效果也会越来越好。作者的实验表明确实如此,因此也证实了前面说的Simsiam确实是在做alternating optimization。 [1] https://arxiv.org/abs/2011.10566 [2] https://arxiv.org/abs/2002.05709 [3] https://arxiv.org/abs/2006.09882 [4] htt...
2. 如果上式用一个SGD来降低loss,那么就可以得到接近SimSiam的算法(这里没有考虑SimSiam的predictor,等下解释predictor的作用):一个使用stop-gradient的孪生网络。 Multi-step alternation 如果把上面一次step拓展到多次step,就可以得到多次step的SimSiam。 多次step的SimSiam可以设计成将t作为迭代的外循环次数,第一个子问...
作者通过实验表明:对于loss与网络结构而言,“崩溃解”确实存在,但是“stop-gradient”操作对于避免“崩溃解”有非常重要的作用。作者提出了一种新颖的“stop-gradient”思想并通过实验对其进行了验证,所提出的SimSiam模型在ImageNet及下游任务上均取得了有竞争力的结果。
Loss=12D(p1,stopgrad(z2))+12D(p2,stopgrad(z1)) 算法流程如下图2所示, 图2 SimSiam算法流程 Experiment Stop-gradient 如下图3所示,如果没有stop-gradient操作,优化器很快就能达到的最小loss -1。通过统计输出的标准差,可以看出如果没有stop-gradient,输出的结果标准差为0,即collapse到一个常数向量。 图3...
SimSiam的loss函数可以转化为EM算法的子问题形式,一个类似于聚类中心的参数和一个表示图片表征的变量。通过SGD求解,stop-gradient确保了问题的可解性。每一步迭代,SimSiam都像k-means那样在预测和估计之间交替进行,直至收敛。predictor和momentum encoder(EMA)在这一过程中起到了关键作用,前者通过预测...
对称损失(Symmetric Loss):SimSiam 的目标是最小化预测向量与另一个投影向量之间的距离。通常使用对称损失函数(如余弦相似度或均方误差)来测量这个距离。损失函数是对称的,因为相同的操作可以应用于两个增强视图。 通过最小化这个对称损失,SimSiam 学会对同一图像的不同视图产生相似的特征表示,这对许多下游任务(如图像...
最后,由于我们stop-gradient是参考的alternating algorithm的方法,因此不难想到,如果我们对输入x做n次(n≥2)数据增强,在计算loss时,n次均使用stop-gradient,随着n的增大,效果也会越来越好。作者的实验表明确实如此,因此也证实了前面说的Simsiam确实是在做alternating optimization。