CVPR2021「自监督学习」领域重磅新作,只用负样本也能学?

简介: 在自监督学习领域,基于contrastive learning(对比学习)的思路已经在下游分类检测和任务中取得了明显的优势。

微信图片_20220112225628.jpg

 新智元报道  

来源:CVPR 2021编辑:LQ

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


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


微信图片_20220112225633.png


论文链接:https://arxiv.org/abs/2011.08435

论文代码已开源:https://github.com/maple-research-lab/AdCo


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


目录

1、要不要负样本?

2、AdCo vs. BYOL

3、新思路:Adversarial Contrast: 对抗对比学习

4、实验结果


1、 要不要负样本?

去年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的训练?


2、 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中采取了对抗学习的思路。

 

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


依据此,我们提出了AdCo对抗对比学习,通过直接训练负样本的方式来进一步提高负样本的质量从而促进对比学习。


1、相比于memory bank去存储过往图片embedding的方式,我们完全可以把负样本作为可学习的权重来训练,这里的好处是我们的所有负样本可以在每次迭代中同步更新。质量。作为对比,MoCo V2每次只能更新当前负样本队列里的很小的一部分,这导致了最早进入memory bank的负样本对于对比学习的贡献相对较小。


2、当然,更新负样本就不能去最小化对应的contrastive loss,而要最大化它,使得得到的负样本更加地困难,而对训练representation network更有价值,这就得到了一个对抗性的对比学习,对抗的双方是负样本和特征网络。


3、通过对update负样本的梯度进行分析,我们发现这种方法具有非常明显的物理意义。负样本每次更新的方向都是指向当前正样本的一个以某个负样本所归属的正样本的后验概率为权重,对正样本做加权平均得到的梯度方向;


具体而言,文章中的公式(6)通过最大化对比损失函数可以给出直接训练负样本的梯度:


                                         微信图片_20220112225636.png


其中的条件概率是

               

                             微信图片_20220112225639.png


微信图片_20220112225642.png


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


4、实验结果


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


                    微信图片_20220112230506.png


                    微信图片_20220112230509.png


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


           微信图片_20220112230512.png


我们进一步AdCo是否可以通过训练更少的负样本来得到同样好的无监督预训练模型。答案是肯定的。


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


            微信图片_20220112230514.png


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

                       

                         

                  微信图片_20220112230517.png


参考资料:[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.


推荐你看:惨烈!特斯拉再次撞上白色卡车,两名乘客急送ICU

「油管」翻译太别扭?最符合国人习惯的词典,收好了!

相关文章
|
Linux 数据安全/隐私保护 网络架构
如何搭建远程控制家中设备的Home Assistant智能家居系统【内网穿透】(上)
如何搭建远程控制家中设备的Home Assistant智能家居系统【内网穿透】
1522 0
|
3月前
|
机器学习/深度学习 人工智能 自然语言处理
Transformer架构深度解析:重新定义序列建模的革命
Transformer是一种基于自注意力机制的神经网络架构,2017年由Google提出,彻底摒弃了RNN的循环结构,实现并行化处理序列数据。其核心通过QKV机制捕捉长距离依赖,以“圆桌会议”式交互提升效率与性能,成为大模型时代的基石。
|
8月前
|
存储 设计模式 Java
Java 期末考试不挂科必背基础知识点复习笔记整理
这是一份全面的Java基础知识点复习笔记,涵盖核心特性、数据类型、流程控制、数组、异常处理、JVM原理、多线程、设计模式及Java 8+新特性等内容。结合买飞机票、验证码生成和评委打分等应用实例,助你掌握考试重点,轻松应对Java期末考试,避免挂科!附带代码资源,供深入学习使用。链接:[https://pan.quark.cn/s/14fcf913bae6](https://pan.quark.cn/s/14fcf913bae6)
438 0
|
10月前
|
人工智能 自然语言处理 数据可视化
两大 智能体框架 Dify vs Langchain 的全面分析,该怎么选?资深架构师 做一个彻底的解密
两大 智能体框架 Dify vs Langchain 的全面分析,该怎么选?资深架构师 做一个彻底的解密
两大 智能体框架 Dify vs Langchain 的全面分析,该怎么选?资深架构师 做一个彻底的解密
|
机器学习/深度学习 人工智能 算法
体验升级:扫描全能王智能高清滤镜2.0全面测评
**扫描全能王智能高清滤镜2.0测评概览** - **技术亮点:** 结合深度学习与多尺度感知融合,提升图像清晰度。 - **智能处理:** 利用深度学习识别透字、颜色和文字,自适应调整处理策略。 - **测评场景:** - **透字文件**:有效抑制透字噪声,增强文字可读性。 - **有阴影的发票**:去除阴影,清晰呈现内容。 - **曲度较大书籍**:准确扫描曲面,保持文字形状。 - **电脑屏幕文本**:优化屏幕显示文本的扫描质量。 - **图画扫描**:颜色还原准确,保持图像细节。 - **总结展望:** 强大的处理能力,满足多样化文档需求,期待未来功能拓展。
511 6
|
机器学习/深度学习
【Python-Keras】keras.layers.Dense层的解析与使用
关于Python-Keras库中keras.layers.Dense层的解析与使用。
919 1
|
Kubernetes Ubuntu Docker
Kubernetes(K8S v1.1版本) 集群管理Docker容器之部署篇
Kubernetes(K8S v1.1版本) 集群管理Docker容器之部署篇
|
机器学习/深度学习 数据采集 人工智能
【AI在金融科技中的应用】详细介绍人工智能在金融分析、风险管理、智能投顾等方面的最新应用和发展趋势
人工智能(AI)在金融领域的应用日益广泛,对金融分析、风险管理和智能投顾等方面产生了深远影响。以下是这些领域的最新应用和发展趋势的详细介绍
1883 1
|
机器学习/深度学习 存储 人工智能
【博士每天一篇文献-算法】Memory aware synapses_ Learning what (not) to forget
本文介绍了一种名为“记忆感知突触”(Memory Aware Synapses, MAS)的终身学习方法,该方法通过无监督在线评估神经网络参数的重要性,并在新任务学习时对重要参数的更改进行惩罚,有效防止了旧任务知识的覆盖,实现了内存效率和性能提升,同时具有灵活性和通用性。
447 1
|
机器学习/深度学习 数据可视化 计算机视觉
可视化VIT中的注意力
ViT中最主要的就是注意力机制,所以可视化注意力就成为了解ViT的重要步骤,所以我们这里介绍如何可视化ViT中的注意力
1193 0