详解自监督发展趋势! 何恺明连获三年CVPR最高引用的秘诀是?

news2024/12/23 23:09:45

点击文末公众号卡片,不错过计算机会议投稿信息

0 引言

许多加了我好友的读者知道尼谟之前的研究方向是“自监督学习”,而最近我无意中发现,CVPR最近三年引用量最高的论文竟然都是来自监督学习领域的,且三篇论文的作者都包括Facebook AI Research的何恺明(以下引用量均为2022.11.29.查询自Google Scholar):

(1)CVPR2020引用量最高论文为MoCo,引用量5224

Momentum Contrast for Unsupervised Visual Representation Learning

(2)CVPR2021引用量最高论文为SimSiam,引用量为1420

Exploring Simple Siamese Representation Learning

(3)CVPR2022引用量最高论文为MAE,引用量为834

Masked Autoencoders Are Scalable Vision Learners

碰巧这三篇论文我都较为熟悉,尼谟想斗胆聊聊(视觉)自监督学习领域为什么有这么高的关注度,以及何恺明这几篇工作究竟有什么共同点,能屡次获得高引用。希望这篇文章能对大家的科研工作有一些启发。

1 自监督学习简介

首先简单介绍下自监督学习的概念。自监督学习(Self-supervised Learning),笼统而言,是对于“损失函数中使用到的监督信息无需人工标注”的训练范式的一种统称,自监督学习可以用在预训练上,也可以用在实际任务本身的训练上,当然目前看来还是用在预训练上的情况显著更多。

具体举例来说,比如我有一堆无标注的图像数据,我希望通过这堆数据训练一个编码器网络,使其作为预训练模型迁移到下游的目标检测任务中时,可以比我从零训练得到的目标检测模型有更好的表现。于是我可以将每张无标注图像切分成九块,然后打乱其顺序,之后训练一个网络,使其能预测出正确的九宫格排列顺序,这样的训练过程就叫“自监督学习”,这样训练出了的网络的编码器(表征网络)部分就可以迁移到下游任务上使用。

所以,用于预训练模型的自监督学习也在很多论文中被说成是“无监督表征学习”(Unsupervised Representation Learning)。

在自监督学习领域,NLP(自然语言处理)显然走在CV(计算机视觉)的前列。在NLP中BERT、GPT-3等基于自监督学习的预训练模型早已在不同的NLP应用领域中大放异彩,而CV中的自监督学习还远远没有达到如此高的应用普及程度。然而这一现状也完全可以看作是一个可以“科研套利”的点,即,既然自监督学习在NLP中能有这样广泛和深入的应用,那么不久的将来,自监督学习在CV中的应用程度也会不断接近于当前NLP的现状。

进一步说,现实世界中,当我们面对特定任务时,无论是语料数据还是图像视频数据,真能有针对任务本身的标注信息的情况下的数据一定是占总数据量的1%都不到的,所以未来的大趋势必然就是要让AI能针对无标注信息有更强的学习能力,这就更体现出自监督学习的巨大潜力。

2 MoCo--对比学习的崛起

上面说了这么多废话,主要就是想说明为什么自监督学习这个领域能有这么巨大的关注度。接下去就要具体地去聊这三篇论文了。在聊这三篇文章前,我们首先要了解一个概念叫“对比学习”(Contrastive Learning)。根据我上面的介绍,大家也可以看出,自监督学习研究的核心在于,如何在数据集无标注信息的情况下设计一个好的lossfunction,使得训练得到的模型能更好地从无标注数据中学习到有利于下游任务的知识(当然针对不同的网络Backbone结构肯定有不同的适用的自监督学习方法,但这块儿研究的核心还是loss设计而不是backbone设计)。

(视觉)自监督学习最早可以追溯到16-17年,早期的方法大部分都是偏向于生成式的方法,其网络结构一般都是类Autoencoder形式的。而2020年至今自监督学习中最为常用和有影响力的loss function是什么呢?我觉得大家都会同意的答案,就是InfoNCE,而对比学习就是使用InfoNCE及其变种对网络进行自监督学习训练(以学习到样本经过随机数据增强时的Invariance)的一种统称。InfoNCE函数长成下面这个样子:

简单说下这个loss的学习目标到底是啥。将同一个样本做两次随机数据增强得到两个增强样本,这两个样本是不同的(由于数据增强具有随机性,比如增加随机的高斯噪声),但它们包含的某些语义信息是高度相似的。数据增强过程参考下图[5]:

将这两个样本输入同一个编码器网络,能提取得到两个表征向量,而InfoNCE的学习目标,就是要让这两个来自同一样本的增强样本的表征向量尽量接近,而让每个表征向量和来自其不同样本的表征向量尽量远离。参考下图所示[5]:

这听起来是一个非常简单的idea,但是这个方法真的有效,最早该loss function被应用在(视觉)自监督学习中应该是在2019年的论文CPC中[4](我的印象中是这样,如果有人知道更早的也可以告诉我),被“发扬光大”则是在今天提到的三篇论文中的第一篇MoCo中。

MoCo之前也有人将InfoNCE应用于学习到随机数据增强中蕴含的Invariance中(以下简称为“对比学习”),但MoCo在工程实践上展现出了FAIR和何恺明的实力,它无论是在性能效果上还是在实验充分性上都有着代表性的价值,所以MoCo某种程度上可以认为是对比学习应用于视觉自监督学习中的开山之作。之后大量的对比学习工作,其各种改进和变种都喜欢以MoCo的方法为基础进行修改,可见其影响力之高(因为大家都在MoCo的基础上修修改改,所以它的引用量自然就特别高了)。

3 SimSiam--对比学习的去负样本化

继MoCo之后,对比学习中又出了SimCLR[5]等几个很有影响力的工作。而在不久后,对比学习的研究又掀起了一阵新的风潮,叫做“去负样本化”。

这个“负样本”又是个什么玩意儿呢?让我们复制一下上面对“对比学习”的描述:“而InfoNCE的学习目标,就是要让(1)这两个来自同一样本的增强样本的表征向量尽量接近,(2)而让每个表征向量和来自其不同样本的表征向量尽量远离。”对于每个表征向量来说,所有与其来自不同样本的表征向量都是它的负样本,因为InfoNCE的学习目标要求它要和与这些负样本都互相远离,而与其来自同一样本不同随机数据增强的表征向量则是它的正样本。各种自监督工作都显示,负样本越多则使用InfoNCE训练的效果越好。MoCo之所以效果好,就是因为该方法通过巧妙设计queue-based的memory bank大大增加了训练时的负样本数量。

为什么一定需要这些负样本呢?我们只让两个来自同一样本的增强样本的表征向量尽量接近,难道无法学习到Invariance吗?无数研究表明,不行。简而言之,只有目标(1)而没有(2),自监督学习训练得到的编码器网络,无论你输入什么样本,它都会输出一样的表征向量,因为这样也能完美满足目标(1)的要求,这种现象在自监督学习中被称为“complete collapse”。

然而,随着BYOL[6]工作的提出,人们逐渐发现了一些不使用显性负样本也能规避“completecollapse”的情况,由于这种现象一定程度上比较反直觉,于是这方面的工作开始受到了越来越多的关注。之后,SimSiam,也就是我们今天提到的第二篇论文,成为了“去负样本化”对比学习中具有总结性的一篇工作,而且它的学习框架可以说是最简单的。

SimSiam的详细框架这里不多做赘述了,简而言之,SimSiam在仅用(1)作为学习目标的情况下,通过一个Stop Gradient和一个被称为predictor的小MLP网络,就可以规避“complete collapse”而达到与MoCo相近的性能效果。如果用一句话来描述SimSiam,那我觉得应该是“去负样本化对比学习中最简单的方法”。

4 MAE--对比学习的新对手

之后,到了2021年11月,何恺明又在arXiv上挂了一篇新的工作,不同于以往自监督学习以卷积神经网络为主要的backbone来进行实验,何恺明的新作,主要针对Vision Transformer(一类针对视觉任务设计的Transformer结构)作为backbone来进行实验,并提出一个颠覆性的观点:类Autoencoder方法在针对Vision Transformer的自监督学习中,相较于对比学习能有更好的效果。最关键的是,这个方法的框架又又又非常简单,具有一种简洁的美感。简而言之,将一张图片中挖出很多方形的空白区域,再训练一个模型使其有能力将其填上(参考下图[3])。这个方法光看描述就像是2017年的自监督学习论文被改写了一下来水论文的,然而人家Kaiming就是能做出效果来,效果还能超对比学习,详细细节还是看论文吧。

5 结语

总结一下,何恺明参与的这三篇高引用量自监督学习工作,它们都有一个特点,都是研究范式转换的一个节点,而不是固有研究范式中的新方法或新解释。(当然也不是说其他自监督学习工作没影响力,毕竟别人可能没投CVPR。)三篇论文分别可以(不严谨地)归纳为:

MoCo:对比学习崛起的开山之作(之一)

SimSiam:对比学习去负样本化的集大成之作(之一)

MAE:对比学习的地位动摇之作(之一)

值得一提的是,SimSiam工作提出时并不是当时同类方法中刷点最高的,MAE更是没和之前的工作在同样的实验方式下做比较(而是针对另一种backbone做研究了)。所以SOTA不是研究的全部,范式转换可能是更有性价比也更有意思的工作。当然范式转换和SOTA都挺难的,虽然我们能总结出这些高影响力工作的特点,但是其实也没啥用哈哈,看个乐吧。

参考文献

[1] He, Kaiming, et al. "Momentum contrast for unsupervised visual representation learning." Proceedings of the IEEE/CVF conference on computer vision and pattern recognition. 2020.

[2] Chen, Xinlei, and Kaiming He. "Exploring simple siamese representation learning." Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition. 2021.

[3] He, Kaiming, et al. "Masked autoencoders are scalable vision learners." Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition. 2022.

[4] Oord, Aaron van den, Yazhe Li, and Oriol Vinyals. "Representation learning with contrastive predictive coding." arXiv preprint arXiv:1807.03748 (2018).

[5] Chen, Ting, et al. "A simple framework for contrastive learning of visual representations." International conference on machine learning. PMLR, 2020.

[6] Grill, Jean-Bastien, et al. "Bootstrap your own latent-a new approach to self-supervised learning." Advances in neural information processing systems 33 (2020): 21271-21284.

三篇论文链接:

MoCo: https://arxiv.org/pdf/1911.05722.pdf 

SimSiam: https://arxiv.org/pdf/2011.10566.pdf

MAE: https://arxiv.org/pdf/2111.06377.pdf

本文首发于【计算机会议投稿】公众号,作者尼谟为中科院自动化所工程师。

该公众号为CCF所有收录会议设立投稿交流群,后台回复会议名即可进群,群内活跃度高,进群讨论不错过会议信息。

公众号文章会发布近期截稿会议、转投会议推荐、录用率趋势、录用分数分析等重要信息,欢迎各位计算机科研人关注本号或与尼谟交流。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/59361.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

(四)进程管理:进程基本概念

文章目录一. 进程的概念二. 进程的结构和特征1. 进程的结构2. 进程的特征三. 进程与【线程】1. 进程与线程的关系与区别2. 线程的实现方式1. 纯用户级方式(淘汰)2. 纯内核级方式3. 组合方式一. 进程的概念 进程(Process)&#xff…

C#,彩色图片转为灰度图的快速算法与源代码

彩色图转为灰度图的场景非常多,比如人工智能的训练与识别时,需要将彩色图片转为灰度图。 以下文字来自于: 彩色图像转灰度图像原理python_蜗牛的笨笨的博客-CSDN博客_python 彩色图转灰度图现在我们所接触到的图像绝大多数都是数字图像&…

[附源码]计算机毕业设计springboot疫情背景下社区互助服务系统

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

u-boot常用命令

u-boot常用命令查看u-boot所支持的命令查询命令u-boot版本环境变量板子相关信息环境变量操作内存操作网络操作EMMC和 SD卡操作FAT 格式文件系统操作EXT格式文件系统操作ubi格式文件系统操作boot 操作bootzbootmbootUMS 命令常用其他uboot环境变量:bootcmd和bootargs…

python基础语法15-网络编程理论

网络编程是指在程序中实现两台计算机之间的通信。 Python提供了大量的内置模块和第三方模块用于支持各种网络访问,而且Python语言在网络通信方面的优点特别突出,远远领先其他语言。 一、IP: 1.概念: IP:互联网协议地址(Internet Protocol Add…

CCNA-应试教育-思科网院-CCNAv7: Switching, Routing, and Wireless Essentials 交换、路由和无线基础。

CCNA-应试教育-思科网院-CCNAv7: Switching, Routing, and Wireless Essentials 交换、路由和无线基础。 拓扑 – SRWE 最终 PT 技能评估 (PTSA) 拓扑图这样连 题目 SRWE Final PT Skills Assessment (PTSA) A few things to keep in mind while co…

大淘营淘宝复制的“添加、删除、替换属性”功能如何使用?

一、添加属性添加属性填写的格式为“属性名称:属性值”,“”是添加的意思。举个例子,比如我要添加的属性为“AA”,属性值为“aa”,那么,在软件上需要填“AA:aa”。注:“:”是半角字符,中间不要有…

嵌入式 程序调试之gdb和gdbserver的交叉编译及使用

嵌入式 程序调试之gdb和gdbserver的交叉编译及使用 一、简述 记--交叉编译gdb、gdbserver并调试嵌入式程序。 gdb是功能非常强大的常用调试工具,可以直接下断点进行单步调试,是差错排错的利器。 常见三种不同使用场景的gdb: x86 pc端gdb(以下…

MyBatis ---- 自定义映射resultMap

MyBatis ---- 自定义映射resultMap1. resultMap处理字段和属性的映射关系2. 多对一映射处理a>级联方式处理映射关系b>使用association处理映射关系c>分布查询3. 一对多映射处理a>collectionb>分步查询1. resultMap处理字段和属性的映射关系 当实体类中的属性名…

一文详解数据链路相关技术

一文详解数据链路相关技术1.MAC地址2.共享介质型网络争用方式令牌传递3.非共享介质网络4.环路检测技术生成树方式源路由法5.VLAN1.MAC地址 MAC地址直译为媒体存取控制位址,也称为局域网地址(LAN Address),MAC位址,以太…

云服务器使用及Linux基本命令

文章目录前言一、Linux1.Linux发现版本2.Linux环境搭建方式云服务器使用终端软件连接Linux3.Linux基础命令(1)ls:列出该目录下的所有子目录与文件。(2)pwd:显示当前所在用户(3)cd :改…

终于来了

程序员求职简历,项目经验怎么写?免费修改简历、提供模板并内部推荐昨天我还在说"三年了,乌云还未散尽,仿佛若有光"。今天一大早,光就照进来了。深圳卫健委宣布公交、地铁、药店、公园、旅游景点等场所都不需…

数据结构(王卓)(4)附:链表的销毁与清空

销毁 Status 销毁单链表(LinkList L) {LinkList p;while (L){p L;L->next;delete p;}return OK; } 运行逻辑: (1):设定一个指针,让指针指向链表的头指针L (2):让头指针等于头指针里面指向下…

Session和Cookie

回顾 1.Servlet API 2.HttpServlet DoXXX处理哪种Http方法会调用到对应的方法 init/destroy/service—>servlet的生命周期 3.HttpServletRequest Http请求 get系列方法 协议名(版本号) url query string header query String/body HttpServletRespon…

【配准和融合相互作用,交互】

RFNet: Unsupervised Network for Mutually Reinforcing Multi-modal Image Registration and Fusion (RFNet:一种互增强的多模态图像配准与融合的无监督网络) 本文提出了一种在相互增强的框架RFNet中实现多模态图像配准与融合的新方法。我们…

第八章 集成学习

8.1 个体与集成 集成学习通过构建并结合多个学习器来完成学习任务,有时也被称为多分类系统、基于委员会的学习等。 下图显示出集成学习的一般结构:先产生一组个体学习器,再用某种策略将它们结合起来。个体学习器通常由一个现有的学习算法从训…

Redis实战——分布式锁

目录 1 一人一单并发安全问题 2 分布式锁的原理和实现 2.1 什么是分布式锁? 2.2 分布式锁的实现 1 一人一单并发安全问题 之前一人一单的业务使用的悲观锁,在分布式系统下,是无法生效的。 理想的情况下是这样的:一个线程成功…

计算机中数的表示和运算

定点数 编程时需要确定小数点位置难以表示两个大小相差较大的数存储空间利用率低 这种用二进制来表示十进制的编码方式,叫作BCD 编码(Binary-Coded Decimal)。 浮点数 小数点的位置可以左右移动的数 规格化浮点数: IEEE 754规格化的尾数…

基于Java+Swing+Mysql实现《黄金矿工》游戏

基于JavaSwingMysq实现《黄金矿工》游戏一、系统介绍二、功能展示三、其他系统一、系统介绍 《黄金矿工》游戏是一个经典的抓金子小游戏,它可以锻炼人的反应能力。。该游戏中,可以通过“挖矿”获得积分,游戏道具:有3瓶药水&#…

cubeIDE开发, 如何结合FreeRTOS开发STM32程序

一、STM32CubeIDE使用内置的FreeRTOS 不同于STM32CubeIDE使用像RTThread这些第三方物联网系统,STM32CubeIDE在安装时就已经在MiddleWare中间件一栏直接支持了FreeRTOS操作系统。 既然STM32CubeIDE已经把FreeRTOS深度整合到了自家的系统中,所以移植及使用…