查看原文
其他

CVPR 2021接收论文:AdCo基于对抗的对比学习

王虓 PaperWeekly 2022-07-04


©作者|王虓

学校|普渡大学PhD

研究方向|自监督


在自监督学习领域,基于 contrastive learning(对比学习)的思路已经在下游分类检测和任务中取得了明显的优势。其中如何充分利用负样本提高学习效率和学习效果一直是一个值得探索的方向,本文第一次全新提出了用对抗的思路 end-to-end 来直接学习负样本,在 ImageNet 和下游任务均达到 SOTA。

AdCo 仅仅用 8196 个负样本(八分之一的 MoCo v2 的负样本量),就能达到与之相同的精度。同时,这些可直接训练的负样本在和 BYOL 中 Prediction MLP 参数量相同的情况下依然能够取得相似的效果。这说明了在自监督学习时代,通过将负样本可学习化,对比学习仍然具有学习效率高、训练稳定和精度高等一系列优势。



论文标题:

AdCo: Adversarial Contrast for Efficient Learning of Unsupervised Representations from Self-Trained Negative Adversaries


论文链接:

https://arxiv.org/abs/2011.08435


代码链接:

https://github.com/maple-research-lab/AdCo


众所周知,负样本和正样本是对比学习的关键。进一步而言,负样本的数量和质量对于对比学习又是其中的重中之重。在 BYOL [1] 提出后,对于是否需要负样本也引发了很多讨论,本文从对抗的角度去探索负样本,也揭示了负样本的本质和 BYOL 在去除负样本之后仍然能够达到非常好的效果的原因。


要不要负样本?

首先,去年 DeepMind 提出的无监督模型 BYOL [1] 的一个突出特点是去掉了负样本,在讨论 AdCo 前,一个很核心的问题就是在自监督时代,我们究竟要不要负样本? 

首先,从比较纯粹的实用主义角度来说,MoCo V2 [2] 这类基于负样本的对比学习方法,自监督训练的时间都是比 BYOL 较少的。这点不难理解,MoCo V2 不需要基于 Global Batch Normalization (BN)(GPU 之间需要通讯),所以从速度来说仅仅需要 BYOL 约 1/3 的时间。 

另一方面,类似 MoCo V2 的方法一个比较麻烦的地方是要不断得维护一个负样本的队列。但是,用一组负样本做对比学习,从训练性能的角度来说,从前诸多的实验来看可能更稳定,毕竟多个负样本的对比可以提供更多的样本的分布信息,比 BYOL 只在单个图像的两个变换增强样本得到的特征上做 MSE 从训练的角度来说可以更稳定。同时 memory bank 维持的负样本并不需要梯度计算,所以相关计算量可以忽略不计。 

因此,我们认为负样本在对比学习里仍然是一个值得探索的方向。但需要解决如何提高负样本的质量和使用效率的问题。一个比较好的想法是我们能不能不再依赖一个被动的维护一个负样本队列去训练对比模型,而是直接通过主动学习的方法把负样本当作网络参数的一部分去做 end-to-end 的训练


AdCo vs. BYOL

BYOL 中除了 global BN 外,为了用一个分支得到的特征去监督另外一个分支输出的特征,还需要训练一个只存在于 query 分支的 MLP 的预测器(predictor)以达到非对称的结构防止训练 collapse。虽然 BYOL 的 predictor 里的参数不是负样本,但某种意义上可以看作是某种包含典型样本对应特征的 codebook,这个 codebook 的组合形成了对另一个分支输出特征的预测。为了达到精确预测的目的,势必要求这个 codebook 要比较 diverse,能比较好的覆盖另外一个分支输出的特征,从而阻止 collapse 的可能。 

从模型参数的角度来说,这个额外的 Predictor Layer 相当于一般对比学习里用到的负样本,只不过前者是直接通过反向传播训练得到的,而后者在 MoCo V2 [2] 和 SimCLR [3] 里是通过收集过去或者当前的 batch 中的特征得到的。 

那么,一个自然的问题就是,负样本能够也能像预测器一样通过训练出来吗?如果可以,就意味着对比学习中的负样本也可以看作是模型的一部分,并且可以通过训练的方法得到,这就给出了一种更加直观优美的方法来构造负样本。 

遗憾的是,直接去最小化 contrastive loss 并不能用来训练负样本,因为这样得到的是远离所有 query 样本的负样本,因此我们在 AdCo 中采取了对抗学习的思路。


新思路:用对抗对比学习去直接训练负样本!

依据此,我们提出了 AdCo 对抗对比学习,通过直接训练负样本的方式来进一步提高负样本的质量从而促进对比学习。 
1. 相比于 memory bank 去存储过往图片 embedding 的方式,我们完全可以把负样本作为可学习的权重来训练,这里的好处是我们的所有负样本可以在每次迭代中同步更新。质量。作为对比,MoCo V2 每次只能更新当前负样本队列里的很小的一部分,这导致了最早进入 memory bank 的负样本对于对比学习的贡献相对较小。 
2. 当然,更新负样本就不能去最小化对应的 contrastive loss,而要最大化它,使得得到的负样本更加地困难,而对训练 representation network 更有价值,这就得到了一个对抗性的对比学习,对抗的双方是负样本和特征网络。 
3. 通过对 update 负样本的梯度进行分析,我们发现这种方法具有非常明显的物理意义。负样本每次更新的方向都是指向当前正样本的一个以某个负样本所归属的正样本的后验概率为权重,对正样本做加权平均得到的梯度方向。
具体而言,文章中的公式(6)通过最大化对比损失函数可以给出直接训练负样本的梯度:


其中的条件概率是:

不难看出,用来更新每个负样本 的梯度方向正是沿着对每个 batch 中正样本 通过 进行加权平均方向得到的方向。这样做,可以最大化地引导负样本不断地靠近正样本,进而能够提高对比学习地效率。

实验发现,在同样的训练时间、minibatch 大小下,AdCo 的精度都会更高。这说明了,AdCo 比其他的自监督方法就有更高的训练效率和精度。这种提升来自对负样本更有效的更新迭代。


实验结果


相比于基于 memory bank 的方法,我们的模型在 ImageNet 分类任务上有了显著的提升。


同时,在下游检测和分类任务中,我们相比过往自监督方法和全监督方法都有显著的提升:



我们进一步 AdCo 是否可以通过训练更少的负样本来得到同样好的无监督预训练模型。答案是肯定的。 
如下面的结果所展示的,只用原先 1/4 和 1/8 的样本,在 ImageNet 上的 top-1 accuracy 几乎没有任何损失。这进一步说明了,通过直接用对抗的方式训练负样本,把负样本看成是模型可训练参数的一部分,完全可以得到非常好的训练效果,而且相对于其他的模型,所用的 GPU 训练时间也更少。


进一步而言,我们的学习效率也显著优于基于 memory bank 的方法,以下是不同自监督训练轮数下在 ImageNet 上的对比:




参考文献

[1] Grill, Jean-Bastien, et al. "Bootstrap your own latent: A new approach to self-supervised learning." arXiv preprint arXiv:2006.07733 (2020). 
[2] Chen, Xinlei, et al. "Improved baselines with momentum contrastive learning." arXiv preprint arXiv:2003.04297 (2020). 
[3] Chen, Ting, et al. "A simple framework for contrastive learning of visual representations." International conference on machine learning. PMLR, 2020.

更多阅读




#投 稿 通 道#

 让你的论文被更多人看到 



如何才能让更多的优质内容以更短路径到达读者群体,缩短读者寻找优质内容的成本呢?答案就是:你不认识的人。


总有一些你不认识的人,知道你想知道的东西。PaperWeekly 或许可以成为一座桥梁,促使不同背景、不同方向的学者和学术灵感相互碰撞,迸发出更多的可能性。 


PaperWeekly 鼓励高校实验室或个人,在我们的平台上分享各类优质内容,可以是最新论文解读,也可以是学习心得技术干货。我们的目的只有一个,让知识真正流动起来。


📝 来稿标准:

• 稿件确系个人原创作品,来稿需注明作者个人信息(姓名+学校/工作单位+学历/职位+研究方向) 

• 如果文章并非首发,请在投稿时提醒并附上所有已发布链接 

• PaperWeekly 默认每篇文章都是首发,均会添加“原创”标志


📬 投稿邮箱:

• 投稿邮箱:hr@paperweekly.site 

• 所有文章配图,请单独在附件中发送 

• 请留下即时联系方式(微信或手机),以便我们在编辑发布时和作者沟通



🔍


现在,在「知乎」也能找到我们了

进入知乎首页搜索「PaperWeekly」

点击「关注」订阅我们的专栏吧



关于PaperWeekly


PaperWeekly 是一个推荐、解读、讨论、报道人工智能前沿论文成果的学术平台。如果你研究或从事 AI 领域,欢迎在公众号后台点击「交流群」,小助手将把你带入 PaperWeekly 的交流群里。



您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存