对比学习——moco

1.moco: Momentum Contrast  动量对比学习.

2.pretext task:代理任务,即在自监督学习中通过图像增强的一些操作制作标签。在对比学习中正样本对儿都是由同一张图像做不同的数据增强而来。

3.设计思路:在对比学习中,每一轮参与优化的负样本越多,学习到的表征特征提取到的正负样本信息更多,表征能力就更强。但是受限于batchsize大小,每一次参与优化的样本数量不能太多,所以moco就提出了将当前轮参与优化的负样本放到队列当中,将batchsize与队列长度解耦,即一个队列可以包括很多batch。这样会遇到新的问题,即如何保证队列内多个batch之间的模型参数相近,本文就提出了动量对比学习的方式,每个batch更新模型参数时不仅依赖当前输入,还要依赖上一个batch的模型参数,使其缓慢平稳的进行参数更新,其中动量使用0.999效果最好。

4.contrastive loss:对比损失,在特征空间或是projection空间去衡量两个表征特征的相似性。info NCE loss见simCLR解析。

5.关于编码器特征学习,其中只有query的编码器是学习的,而队列中key的编码器是通过query赋值的。

6.算法流程:

7.下游任务:linear classification protocol,在分类任务上应用,把网络当成特征提取器,冻住moco的编码器(resnet),加一个mlp分类头,用30的学习率(超级大)进行微调。

8.moco贡献:①与nlp领域类似,给出大规模无监督学习的优越性。②moco相比simCLR,给出一种GPU资源相对较小(8*24G)的对比学习训练方法。

动量对比学习(Momentum Contrast Learning,简称MoCo)是由Facebook AI Research提出的自监督表示学习算法。它的目标是在不需要标注的情况下利用大量未标记的数据来预训练模型,并能够生成高质量的特征向量。MoCo的核心思想是构建一个动态字典(dictionary),并保持查询键值对之间的长期一致性。 ### MoCo 的工作原理 1. **队列机制 (Queue Mechanism)**: - MoCo 引入了一个固定大小的先入先出(FIFO) 队列来存储负样本(negative samples)。这使得在每次迭代时可以访问大量的历史负样本,而不仅仅局限于当前批次内的样本。 2. **动量更新策略 (Momentum Update Strategy)**: - 使用两个编码器网络:一个是查询编码器(query encoder),另一个是关键帧编码器(key encoder)。其中查询编码器通过梯度下降正常训练;而对于关键帧编码器,则采用一种特殊的方式——基于查询编码器参数按一定比例缓慢更新自身权重(即动量更新)。例如,如果设置动量系数 \( m \),那么每一时刻的关键帧编码器权重量会按照公式 \( E_k = mE_k + (1-m)E_q \) 来调整,这里 \( E_k \) 表示关键帧编码器的参数矩阵,\( E_q \) 则代表查询编码器对应的参数。 3. **损失函数**: - 对比损失函数用于衡量正负样本间的距离差异。对于给定的一张图片及其增强版本作为一对正样本,其余所有来自队列里的样本都视为负样本。理想状态下希望拉近相似实例的距离同时推开非同类项。 总结来说,MoCo通过维护全局一致性的词典并且结合动量更新的方法有效地解决了内存有限的问题,从而实现了高效的无标签数据挖掘和特征表征学习
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值