AI论文精读笔记-Momentum Contrast for Unsupervised Visual Representation Learning(MoCo)

1. 论文基本信息

2. 研究背景和动机

  • 研究背景:无监督学习在NLP中取得极大的成功(正如GPT以及BERT),其目标就是学到可以迁移的好特征。但是在视觉中有监督得到方式仍是主导的,其原因可能在于二者的信号空间不同:NLP 的离散单词更具语义性,CV的连续、高维信号不好构建字典。近年来的对比学习方法可以看作是构建一个动态的字典:字典中有一系列的key,无监督学习训练一个encoder来执行“字典查找”,即给定一个query,找到与之最匹配的key并尽可能远离不匹配的key,学习的目标可

MoCoMomentum Contrast)是一种对比学习框架,在计算机视觉领域具有重要影响。虽然当前引用未直接提及 MoCo 的原始论文,但可以提供其核心信息如下: MoCo 原始论文标题为《Momentum Contrast for Unsupervised Visual Representation Learning》,由 He et al. 提出,并发表于 CVPR 2020 [^3]。该论文的核心贡献在于设计了一种动态字典的方法来解决对比学习中的内存瓶颈问题。通过引入动量更新机制,MoCo 能够维持一个一致的队列以存储负样本特征,从而提高无监督表示学习的效果。 以下是 MoCo 的主要特点: - 动量更新编码器:利用两个编码器(query encoder 和 key encoder),其中 key encoder 使用动量更新策略逐步调整参数。 - 队列机制:为了避免显存占用过高,MoCo 设计了一个循环队列来保存历史负样本特征。 ```python import torch.nn as nn class MoCo(nn.Module): def __init__(self, base_encoder, dim=128, K=65536, m=0.999, T=0.07): super(MoCo, self).__init__() self.K = K self.m = m self.T = T # 创建 query 和 key 编码器 self.encoder_q = base_encoder(num_classes=dim) self.encoder_k = base_encoder(num_classes=dim) # 初始化 key 编码器权重与 query 编码器相同 for param_q, param_k in zip(self.encoder_q.parameters(), self.encoder_k.parameters()): param_k.data.copy_(param_q.data) param_k.requires_grad = False # 注册队列 self.register_buffer("queue", torch.randn(dim, K)) self.queue = nn.functional.normalize(self.queue, dim=0) @torch.no_grad() def _momentum_update_key_encoder(self): """ 更新 key 编码器参数 """ for param_q, param_k in zip(self.encoder_q.parameters(), self.encoder_k.parameters()): param_k.data = param_k.data * self.m + param_q.data * (1. - self.m) ``` [^3]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值