MoCo解读

MoCo是一种由何凯明团队提出的无监督对比学习方法,它通过对比学习思想,利用字典查询任务设计代理任务损失函数。InfoNCE损失函数用于拉近相似样本,拉开不相似样本。MoCo采用动量更新策略解决负样本限制和特征一致性问题,实现大规模样本预训练。实验显示,MoCo在ImageNet上的预训练效果超过有监督模型,在多种下游任务中表现出色。
摘要由CSDN通过智能技术生成

MoCo方法由何凯明团队提出,是无监督对比学习的代表作。经过MoCo预训练的视觉表征迁移到各种下游任务时,其效果超过了有监督预训练模型。

两点创新

对比学习的思想是将相似的样本距离拉近,不相似的样本距离拉远。对比学习主要在两方面进行设计:

  • 代理任务
  • 损失函数

MoCo将对比学习当作字典查询任务,在字典中与query匹配的key视为正样本,否则为负样本:

1

损失函数InfoNCE为:
L q = − log ⁡ exp ⁡ ( q ⋅ k + / τ ) ∑ i = 0 K exp ⁡ ( q ⋅ k i / τ ) \mathcal{L}_q=-\log \frac{\exp \left(q \cdot k_{+} / \tau\right)}{\sum_{i=0}^K \exp \left(q \cdot k_i / \tau\right)} Lq=logi=0Kexp(qki/τ)exp(qk+/τ)
其中, τ \tau τ 是温度系数,该超参设置需要注意。太大会导致query与所有样本的相似度都很接近,太小会导致模型偏向学习区分度高的样本。

上式与多分类交叉熵损失函数非常相似,只不过前者 K K K 表示样本类别,而后者表示正样本与负样本的总个数。

与传统自监督学习对比

2

  • 图(a)中两个编码器同步更新,保证了样本特征的一致性,但负样本个数受限,即使能达到8000多,还是无法放下所有的负样本
  • 图(b)放下了所有的负样本,但bank中不同样本的特征是在不同时刻的编码器下获得的,牺牲了特征的一致性

3

  • 图©则是采样了动量更新key编码器的方式,解决了字典大小受限和特征不一致性问题:

θ k ← m θ k + ( 1 − m ) θ q \theta_{\mathrm{k}} \leftarrow m \theta_{\mathrm{k}}+(1-m) \theta_{\mathrm{q}} θkmθk+(1m)θq

伪代码解读

4

  1. 新的batch进行一轮前向传播

  2. 更新query编码器参数

  3. 动量更新key编码器参数

  4. 将该batch放入队列

    • 虽然同一队列的batch样本表征仍然是不同时刻的key编码器获得,但由于key编码器更新非常缓慢,样本表征的差异可以忽略不计:
      5
  5. 将老batch移出队列:这样MoCo就能无限扩展,预训练海量样本

实验结果

原始数据集ImageNet

6

下游任务

7

与传统自监督学习对比

8


参考

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值