Momentum Contrast for Unsupervised Visual Representation Learning

今日学习内容来自B站沐神对MOCO这篇论文的逐句讲解,简要做一下记录。主要是自己的一些理解,可能会存在理解不正确的地方。主要思想感觉大概理解,但是很多细节部分还不太懂,所以明天继续阅读一下源码,解决一下疑惑问题。

本文方法简:MOCO

再附上对比学习的一个总结:对比学习串烧总结

有代码,且官方发布的代码形式十分简洁明了,推荐。(正在学习中)

1、引入:

无监督学习的好处就在于不需要大量标注的data。对比学习通用的套路其实都是一致的,关键在于对正负样本的定义。简单来讲,就是取一个图像样本x,随机进行两次数据增强操作得到x1,x2。假设除了x之外的其他样本都作为负样本,x1,x2作为正样本,那么我们希望正样本之间的相似性越大越好,正样本与负样本之间的相似性越小越好。看起来很朴素无奇,但是对比学习的关键在于它的灵活性。

比如对于视频来讲,可以假设同一视频的两帧作为正样本,其他视频的所有帧都作为负样本;对于一个句子,把它送入模型,做两次前行传播且适用不同的dropout得到的两个特征作为正样本,其他句子得到的特征作为负样本;又或者,可以将一个物体的不同视角作为正样本,比如RGB图和语义分割图,其他图像作为负样本。可以看出,只要有想法,可以对自己的应用对象进行合理的正负样本的定义,就可以将它用在自己的研究方向上。

2、主要思路:

将对比学习转化为一个字典查询问题

此时我们将第一次数据增强后的样本作为一个anchor,我们称它为query,简称q; 另一次数据增强后的样本作为它的正样本,把它称为key,简称k0(其实也就是q+);其他的不同图像都作为负样本,简称k1,k2....kn.所以此时字典就可以定义为(把正样本与负样本放在一起,作为字典,因为他们都是相对于query来得到的正负样本的定义)

q                          [k0,k1,k2...........kn]

我们希望q可以查询到与它很相似的正样本k0在距离上尽可能接近, 与它不相似的k1,k2.......kn尽可能的远离。

所以此时会要求两个点:(1)这个字典key要足够大。因为只有它足够大,包含的样本信息足够丰富,模型才可以学习到更多不同的特征,泛化能力会更好

(2)希望key使用的是与query相同或者相似的编码器。排除编码器对模型训练带来的影响。因为如果使用相同的编码器,那么模型就会去学习特征,只能从特征中判断哪个样本与我相似,哪个样本与我是不相似的。否则模型就会去学习一个“ 捷径解”,比如这个key它使用的是和query相同的编码器,我就直接认为它和我是相似的,而不是深层的语义特征了。

3、损失函数

使用的是InfoNCE损失函数。K指的是负样本数量。

τ是一个温度超参数。对于该损失函数的理解就是当 ki !=k+  时,表明我们的查询q与 字典中的 k+ 不相似,尽可能让小,loss会很大,希望模型赶紧更新它的参数当  ki =k+时,表明查询q与字典中的  k+相似,希望尽可能大,log里的值会接近1,损失loss就会很小,说明模型已经学习到很好的特征。艰难理解中)

注意:温度τ的选择很重要。

看视频中是这样解释的:不能过大也不能过小。过大则损失对所有的负样本都一视同仁,导致模型不会学习到有用的特征;设置过小模型又只会关注到那些学习起来非常困难的样本,负样本里有可能存在潜在的正样本,导致模型学习不到好的特征,泛化效果不好。

4、主要改进

(1)字典以队列的形式表示出来:主要概括就是“新的进入,旧的出去”

模型在训练过程中,每个minibatch会有新的一批key进来,然后将之前最老的那些Key丢掉,那么这个字典里就可以建立的很大,有点像“动态更新?”所以key和batchsize大小就可以分离开,不会互相影响。batchsize可以固定为一个比较小的值,但是key就可以不断的动态更新,里面的值就会很多,从而建立起一个很大的字典。

(2)用动量的思想去更新编码器

但是上面Key字典建立的太大会导致一个问题,就是key这边的编码器无法进行反向传播更新梯度。所以解决办法:

理想办法:直接将q那边的编码器的参数复制一份过来,使用q的参数进行更新。但是实际上发现效果并不好。给出的解释是:快速改变的编码器降低了队列中的所有key的一致性(艰难理解中)。所以实际k这边采用的方法是:动量更新:

 别人的解释  :我理解这个一致性是对于字典中的反向传播来说,网络的参数受到每个样本的影响,而字典中包含大量的样本,那么在每一次反向传播的过程中对于字典的编码器网络的变化太大,从而导致提取的特征一致性太低,所以在这里采用的时momentum update的方法。

今日打卡!假期结束,明天继续加油呀~~~搞科研,不要emo~~~~~~~

参考链接:

学习笔记(三)对于moco模型的一些自我理解(有代码解读)

ZwQing:对比学习(Contrastive Learning)

Frank Cao:MOCO(基于动量比对的非监督式视觉表征学习)

宋原青 MoCo论文解读

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值