研读何凯明大作Momentum contrast for unsupervised representation learning

Abstract

本文提出Momentum ContrastMoCo)用于无监督视觉表征学习。从contrastive learning的角度,通过一个队列和移动平均的encoder构建动态词典。在线构建一个大的且一致性词典,灵活适配于contrastive unsupervised learning

Introduction

无监督表征在NLP领域获得极大成功,例如GPTBERT。但是,在计算机视觉领域,有监督预训练依然占据主导地位,无监督方法进展缓慢。可以从它们所对应的信号空间进行理解。语言任务采用离散信号空间(词,子词单元等)来构建标记化词典,无监督学习真是基于此。与之相反,计算机视觉的原始信号是连续的高维空间,且不是结构化的。

无监督学习的一个主要目的是预训练表征(如特征),使得具体任务可以通过finetune进行优化。

Related work

         Unsupervised/self-supervised learning通常包含两部分:pretext taskloss function。何为pretext任务,指的并不是真实的任务,而是一种好的数据表征。

Method

Contrastive learning as dictionary look-up

Contrastive learning可以认为是为字典查找任务训练一个编码器。

         考虑一个query q和字典的key集合{k0,k1,k2,…}。希望字典中有一个和q匹配。Contrastive loss就是一个函数,使得在q匹配且和其它key不相似值时值较小。可以采用点乘形式来表达inforNCE

下面的累和是一个正例和K个反例。

 

Momentum contrast

好的特征表示可以通过较大字典学习获得。

本文方案的核心在于将字典维护成一个数据采样队列。从而重复利用中间过程的mini-batches编码的keys。这样字典的大小就不用受限于mini-batch的大小,可以做到远大于。字典中的样本是持续更新的,最近的mini-batch数据入队列,最久远的mini-batch数据出队列。

Momentum update

使用队列可以使字典足够大,但是它也存在不足,不能通过bp来更新编码器(梯度将传递给队列中的所有样本)。一种简单的做法是忽略梯度,将query encoder拷贝给key encoder。这种方案的结果不好。本文推测这是由于编码器更新过快,降低了key表征的一致性。

 

 

上图展示了三种方案,展示了三种不同的字典大小和一致性。

End-to-end:采用当前mini-batch数据建立字典,确保了key编码的一致性。字典的大小受制于mini-batch的大小,受制于GPU显存大小。

Memory bank:一个memory bank中包含数据库中所有样本的特征。每个mini-batch的字典从memory bank中随机采样,无梯度传递,可以支持较大尺寸字典。但是,memory bank中的样本表示,采样key的一致性较弱。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章