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

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

相关文章
|
算法 测试技术 定位技术
数据结构与算法——DFS(深度优先搜索)
数据结构与算法——DFS(深度优先搜索)
|
Ubuntu 定位技术 API
python 通过图片(原图)精确获取图片拍摄的位置,时间,设备等信息
python 通过图片(原图)精确获取图片拍摄的位置,时间,设备等信息
python 通过图片(原图)精确获取图片拍摄的位置,时间,设备等信息
|
6月前
|
存储 设计模式 Java
Java 期末考试不挂科必背基础知识点复习笔记整理
这是一份全面的Java基础知识点复习笔记,涵盖核心特性、数据类型、流程控制、数组、异常处理、JVM原理、多线程、设计模式及Java 8+新特性等内容。结合买飞机票、验证码生成和评委打分等应用实例,助你掌握考试重点,轻松应对Java期末考试,避免挂科!附带代码资源,供深入学习使用。链接:[https://pan.quark.cn/s/14fcf913bae6](https://pan.quark.cn/s/14fcf913bae6)
245 0
|
Cloud Native 关系型数据库 分布式数据库
阿里云牵手海亮科技,共建“教育科技数据库创新应用中心”
近日,阿里云与世界500强旗下、国内领先的教育服务提供商海亮科技集团(以下简称“海亮科技”)达成合作,联合成立“教育科技数据库创新应用中心”。双方将充分整合优势资源,共同推进教育科技领域的数据库技术研究和国产数据库的应用与发展。
297 8
|
10月前
|
机器学习/深度学习 存储 人工智能
大模型综述
本文是一篇关于大模型的综述文章,旨在帮助读者快速了解并深入研究大模型的核心概念和技术细节。
1755 11
|
机器学习/深度学习 人工智能 算法
体验升级:扫描全能王智能高清滤镜2.0全面测评
**扫描全能王智能高清滤镜2.0测评概览** - **技术亮点:** 结合深度学习与多尺度感知融合,提升图像清晰度。 - **智能处理:** 利用深度学习识别透字、颜色和文字,自适应调整处理策略。 - **测评场景:** - **透字文件**:有效抑制透字噪声,增强文字可读性。 - **有阴影的发票**:去除阴影,清晰呈现内容。 - **曲度较大书籍**:准确扫描曲面,保持文字形状。 - **电脑屏幕文本**:优化屏幕显示文本的扫描质量。 - **图画扫描**:颜色还原准确,保持图像细节。 - **总结展望:** 强大的处理能力,满足多样化文档需求,期待未来功能拓展。
433 6
Meta浙大校友让评估模型自学成才,数据全合成无需人工标注,训练Llama 3 70B超过405B
【9月更文挑战第21天】近日,一篇名为《Self-Taught Evaluators》的论文引起了广泛关注。该论文由Meta与浙江大学校友合作完成,提出一种创新的模型评估方法,通过让评估模型自学习训练,无需依赖昂贵且易过时的人工标注数据。此方法利用合成数据,通过迭代生成对比模型输出并训练基于大型语言模型的评估器,从而实现自我迭代改进。研究结果显示,在不使用任何标注偏好数据的情况下,这种方法显著提升了评估模型的性能,甚至超越了一些现有模型。尽管如此,该方法在实际应用中仍需进一步验证。论文地址:https://arxiv.org/abs/2408.02666
275 4
|
机器学习/深度学习
【Python-Keras】keras.layers.Dense层的解析与使用
关于Python-Keras库中keras.layers.Dense层的解析与使用。
805 1
|
Kubernetes Ubuntu Docker
Kubernetes(K8S v1.1版本) 集群管理Docker容器之部署篇
Kubernetes(K8S v1.1版本) 集群管理Docker容器之部署篇
|
JavaScript 前端开发 小程序
uniapp中nvue页面如何全屏,map组件如何全屏?
uniapp中nvue页面如何全屏,map组件如何全屏?
913 3