再介绍一篇最新的Contrastive Self-supervised Learning综述论文

d34fd7be0e4d76c676c39ed499e509cf.png

文 | 对白
源 | 对白的算法屋

自监督学习(Self-supervised learning)最近获得了很多关注,因为其可以避免对数据集进行大量的标签标注。它可以把自己定义的伪标签当作训练的信号,然后把学习到的表示(representation)用作下游任务里。最近,对比学习被当作自监督学习中一个非常重要的一部分,被广泛运用在计算机视觉、自然语言处理等领域。它的目标是:将一个样本的不同的、增强过的新样本们在嵌入空间中尽可能地近,然后让不同的样本之间尽可能地远。这篇论文提供了一个非常详尽的对比自监督学习综述。

我们解释了在对比学习中常用的前置任务(pretext task),以及各种新的对比学习架构。然后我们对不同的方法做了效果对比,包括各种下游任务例如图片分类、目标检测、行为识别等。最后,我们对当前模型的局限性、它们所需要的更多的技术、以及它们未来的发展方向做了总结。44f8817e9a6921d0b2877ca193500f92.png

52e440114635ca2813356b73d894c043.png介绍036f87af7d54fabeb4904940b4c51542.png

深度学习从大量数据中自动学习的能力使其在各种领域广泛应用,例如CV和NLP。但是深度学习也有其瓶颈,就是它需要大量的人工标注的标签。例如在计算机视觉中,监督模型需要在图片的表示和图片的标签之间建立关联。

传统的监督学习模型极度依赖于大量的有标签数据。所以研究者们想研究出一种办法,如何利用大量的无标签数据。所以自监督学习的到了广泛关注,因为它可以从数据自己本身中寻找标签来监督模型的训练。

b8587e729f651471b4e431515ea59eee.png
▲图一:对比学习的直观理解:让原图片和增强的图片变近,让原图片和其他图片变远

监督学习不仅需要大量的标注数据,它还面临着下面的各种问题:

  • 模型的泛化性能

  • 伪相关

  • 对抗攻击

最近,自监督学习结合了生成模型和对比模型的特点:从大量无标签数据中学习表示。一种流行的方式是设计各种前置任务(pretext task)来让模型从伪标签中来学习特征。例如图像修复、图像着色、拼图、超分辨率、视频帧预测、视听对应等。这些前置任务被证明可以学习到很好的表示。

1ab46165d0643c1784563746f040d128.png
▲图二:对比自监督学习训练范式

在2014年生成对抗网络(GAN)推出之后,生成模型得到了很多关注。它之后变成了许多强大的模型的基础,例如 CycleGAN, StyleGAN, PixelRNN, Text2Image, DiscoGAN 等。

这些模型启发研究者去研究自监督学习(不需要标签)。

他们发现基于GAN的模型很复杂,不容易训练,主要是由于下面原因:

  1. 难以收敛

  2. 判别器太强大而导致生成器难以生成好的结果

  3. 判别器和生成器需要同步

790eb8c7ae9a0a69df34cee09ea2bda5.png
▲图三:不同的对比学习方法在ImageNet上的效果(TOP1 分类准确率)

与生成模型不同,对比学习是一种判别模型,它让相似样本变近,不同样本变远(见图一)。为了达到这一点,一种衡量远近的指标被用来衡量嵌入之间的远近。如图二所示,对比损失用来训练对比学习模型。

一般来说,以图片为例,对比学习把一张图片的增强版本当作一个正例,其余图片当作反例,然后训练一个模型来区分正反例。区分依赖于某种前置任务。这样做,学习到的表示就可以用到下游任务之中。

aa75ce62f90b4ae7b5628a5b7d24a866.png前置任务bab74ce59de865297cdd2d5cbf6159e4.png

前置任务是自监督学习中非常重要的一种策略。它可以用伪标签从数据中学习表示。

伪标签是从数据本身中定义而来的。这些任务可以应用到各种数据之中,例如图片、视频、语言、信号等。在对比学习的前置任务之中,原始图片被当作一种anchor,其增强的图片被当作正样本(positive sample),然后其余的图片被当作负样本。大多数的前置任务可以被分为四类:

  • 颜色变换

  • 几何变换

  • 基于上下文的任务

  • 基于交叉模式的任务

具体使用哪种任务取决于具体的问题。

颜色变换

c6668810d4060ee80a72bf0c4b0be359.png
▲图四:颜色变换前置任务,包括:原图,高四噪声,高斯模糊,颜色失真(jitter)颜色变换很好理解,不多说了。在这个前置任务中,图片经过变换,它们还是相似的图片,模型需要学会辨别这些经过颜色变换的图片。

几何变换

几何变换也很好理解,不多说了。原图被当作全局视图(global view),转换过的图片被当作局部试图(local view):

c989aac73ccad16c9871c9bb9e216402.png
▲图五:几何变换,包括:原图,裁剪、旋转、翻转等

基于上下文的

拼图

解决拼图问题是无监督学习中一个非常重要的部分。在对比学习中,原图被当作anchor,打乱后的图片被当作正样本,其余图片被当作负样本。

dc2a6080e2325100fd7231545488b88f.png
▲图六:解决一个拼图问题被当作学习表示的前置任务

基于帧的

这个策略一般应用于时许数据,例如传感器的数据或者一系列视频帧。策略背后的意义是:时间上相近的相似,时间上很远的不相似。解决这样的前置任务可以让模型学习到一些跟时间有关的表示。

在这里,一个视频中的帧被当作正样本,其余视频被当作负样本。

其余的方法还包括:随机抽样一个长视频中的两个片段,或者对每个视频片段做几何变换。目标是使用对比损失(contrastive loss)来训练模型,使得来自一个视频的片段在嵌入空间中相近,来自不同视频的片段不相近。Qian 等人 [20] 提出的一个模型中将两个正样本和其余所有的负样本之间进行对比。一对正样本是两个增强的来自同一个视频的视频片段。

这样,所有的视频在嵌入空间中都是分割开来的,每个视频占据一个小的嵌入空间。

未来预测

834199a04811939e8f49c783c385ca2d.png
▲图七:对比预测编码CPC:contrastive predictive coding。图中的例子是音频预测。类似的想法可以用在图片、视频、文本等领域上

对于时序数据做对比一个最直观的方法是预测将来或者预测缺失的信息。这个前置任务是基于已有的一系列时间点数据,去预测将来的高阶的信息。在 [21] [22] 等模型中,高阶数据被压缩在一个低维度的隐藏嵌入空间之中。强大的序列模型被当作encoder来生成一个基于上下文的,然后用来预测未来的信息。

其中蕴含的意义是最大化两者之间的互信息(Mutual information maximization)。

视图预测 View Prediction (Cross modal-based)

视图预测任务一般用在数据本身拥有多个视图的情况下。在 [23] 中,anchor和它的正样本图片来自同时发生的视角下,它们在嵌入空间中应当尽可能地近,与来自时间线中其他位置的负样本图片尽可能地远。在 [24] 中,一个样本的多视角被当作正样本(intra-sampling),其余的inter-sampling当作负样本。

aae5a09a5c33aff5adea0f73f197869a.png
▲图八:从视频帧序列中学习表示

确定对的前置任务

选择什么样的前置任务取决于你所要解决的任务。尽管已经有很多类型的前置任务在对比学习中提出来了,但是选择哪种前置任务依旧没有一个理论支撑。选择正确的前置任务对表示学习有非常大的帮助。

前置任务的本质是:模型可以学习到数据本身的一些转换(数据转换之后依然被认作是原数据,转换后到数据和原数据处于同一嵌入空间),同时模型可以判别其他不同的数据样本。但是前置任务本身是一把双刃剑,某个特定的前置任务可能对某些问题有利,对其他问题有害。

4323527a914322fdd07813459491e60a.png
▲图九:两张图片的形状差不多。但是,很多低阶的细节是不一样的。在这里使用正确的前置任务是非常重要的。

在 [26] 中,作者专注于选取正确的前置任务的重要性。

2bbdf400bf6afe599bb7458402b05bbf.png
▲图十:一个例子:为什么旋转前置任务有时候表现不好

5e34964653db57cee1311c5197b7193b.png架构723c88cd084926fade7f1d7b726e83d9.png

对比学习依赖于负样本的数量,来生成好的表示。它有时候可以看作是一个字典查询任务,字典有时候是整个训练集,有时候是训练集的子集。有时候对比学习可以根据如何采样负样本来进行分类。我们将对比学习的架构分为以下四类(见图十一)。

7f8d3ddd2764adb8b84efd0de4f4f688.png
▲图十一:(a)端到端训练,一个encoder用来生成正样本的表示,一个encoder用来生成负样本的表示;(b)使用一个memory bank来存储和抽取负样本;(c)使用一个momentum encoder当作一个动态的字典查询来处理负样本;(d)额外使用一个聚类机制

端到端学习

端到端学习是一种复杂的基于梯度的学习系统,其中所有的模块都是可微的。这种架构偏好于大的batch size来存储更多的负样本。除了原图片和其增强的图片,其余的batch中的图片被当作负样本。这种架构包含两个encoder:一个query一个key(见图十一a)。

这两个encoder可以是一样的,也可以是不一样的。使用一个对比损失,模型会让正样本的表示相近,让负样本和正样本的表示相远。

最近,一种端到端的模型 [15] SimCLR 获得了很大成功。他们使用了非常大的batch size(4096)训练了100个epochs。SimCLR证明了一种简单机制的模型也可以获得非常好的效果。

e2356b52797dab3a056172067f51c03b.png
▲图十二:SimCLR的效果

另外一种端到端的模型 [21] CPC从高维的时序数据中学习表示,其使用对比损失来预测将来。

端到端学习中的负样本与batch size有关。而batch size的大小受限于GPU/TPU 内存,所以这里有一个计算资源的限制,而且如何优化大batch训练也是一个问题。

使用 Memory Bank

端到端依赖于大的batch(译者:存疑,某些任务可能不需要),所以一种可行的解决方案是使用 memory bank。Memory bank:的作用是在训练的时候维护大量的负样本表示。

所以,创建一个字典来存储和更新这些样本的嵌入。Memory bank M 在数据集 D 中对每一个样本存储一个表示。

该机制可以更新负样本表示,而无需增大训练的batch size。

2255650ffb04e68ecd1c8b998d315a5f.png
▲图十三:PIRL中的memory bank

PIRL [17] 是一种使用了 Memory bank 来学习图像表示的方法。但是,在训练的时候维护一个大的memory bank是一个很复杂的任务。这种策略的一个缺点是更新表示的计算复杂度很高。

使用 Momentum Encoder

为了解决 memory bank 的缺点,momentum encoder [14] 被提了出来。这种机制创建了一种特殊的字典,它把字典当作一个队列的keys,当前的batch进入队列,最老的batch退出队列。

Momentum encoder 共享了encoder Q的参数。它不会在每次反向传播后更新,而是依据query encoder的参数来更新:

10f39c1c343fc864c6dacc7477b221ab.png

特征表示聚类 Clustering Feature Representation

上面介绍的三种架构都是用某种相似度衡量来对比样本,使得相似样本相近,不相似样本变远,从而学习到好的表示。

本节介绍的机制使用两个共享参数的端到端架构,这种架构使用聚类算法来聚类相似样本表示。

87c0379c74d0f23006751b9ec0d17cb3.png
▲图十四:传统对比样本学习 vs 对比聚类学习

SwAV [13] 使用了聚类方法。其背后的idea在于,在一个嵌入空间中,猫的样本们应该和狗的样本们相近(都是动物),而与房子的样本们相远。

在基于样本的学习中,每个样本被当作一个数据集中的离散类。

离散类在连续的嵌入空间中(相似的样本表示相近)可能会有问题。

例如在一个batch里,正样本是猫,负样本们中也有猫,模型会让正样本的猫和负样本中的猫变远,不利于表示学习。

b2bef3211a18c69fb7eb670b4b8ba7d4.pngEncoders411fc6913fc83c92f3f69c5e15a1b848.png

在自监督学习中,Encoder非常重要,因为它们把数据样本遍历到隐空间中。

e9d0be9215c86cd526089b067027ca21.png
▲图十五:训练一个Encoder,然后迁移学习到下游任务

没有一个强大的encoder的话,模型可能难以学到有效的表示,从而执行分类任务。对比学习中的大多数模型都采用了ResNet或其变种。

f24d15060079647c2f46d775d0939398.png训练56f1ea234ed148ee81a1f47f9cc27270.png

为了训练一个encoder,需要一个前置任务来利用对比损失来进行反向传播。对比学习最核心的观点是将相似样本靠近,不相似样本靠远。所以需要一个相似度衡量指标来衡量两个表示的相近程度。在对比学习中,最常用的指标是cosine similarity。

b095442c8fb080fc18f16b3e83d2a263.png

Noise Contrastive Estimation (NCE) [38] 函数定义为:e296693c8c508456ccf825fceeff12b5.png

如果负样本的数量很多,NCE的一个变种 InfoNCE 定义为:1d5fd240f216dfd0644a40f347d8f833.png
与其他深度学习模型类似,对比学习应用了许多训练优化算法。训练的过程包括最小化损失函数来学习模型的参数。

常见的优化算法包括 SGD 和 Adam 等。

训练大的 batch 的网络有时需要特殊设计的优化算法,例如 LARS。

7fccb1082aad67e984a794282ea49af7.png下游任务28a9e8edf9d22f9152047190325a0aa9.png

ab77ffab15391e26747148aac4a55d61.png
▲图十六:计算机视觉中的各种下游任务

一般来说,计算机视觉的自监督训练包括两个任务:

  • 前置任务

  • 下游任务

下游任务聚焦于具体的应用,在优化下游任务的时候,模型利用到了前置任务优化时期所学到的知识。这些任务可以是分类、检测、分割、预测等。图十七提供了一个迁移学习的流程。

a95e26a78a8d4c659c908cf47af2d7ca.png
▲图十七:计算机视觉中的下游任务

为了测试自监督学习中学习到的特征对下游任务的效果,一些方法,例如

  • kernel visualization

  • feature map visualization

  • nearsest-neighbor based approaches

被用来分析前置任务的有效性。

对 Kernels 和 特征图进行可视化

在这里,第一个卷积层的特征的kernels(分别来自于自监督训练和监督训练)被用来做比较。

类似地,不同层的 attention maps 也可以被用来测试模型的有效性。

16f6cb28149f30dcfcb164f79b8e604d.png
▲图十八:AlexNet所训练的 attention map

最近相邻撷取

一般来说,相同类的样本在隐藏空间中的位置应该相近。对一个输入的样本,使用最近相邻方法,可以在数据集中使用 top-K 抽取来分析自监督学习的模型是否有效。

2cfcfc466d2ac81da122cf25bec6d22f.png基准7e23f0581dbdd464e1763afdccb1502d.png

最近,许多自监督学习模型挑战了监督模型的效果。在本章中,我们收集和对比了这些模型的效果,在下游任务上。对于图像分类,我们选择了ImageNet和Places数据集。类似的,对于目标检测,我们选择了Pascal VOC数据集。行为识别和视频分类我们选择了UCF-101,HMDB-51和Kinetics。

bb10a4d5203f8e7797b6b312b8ba09ad.pnga428573e366c5f6983f7920f1e4d0ca0.png

58b5fb4bdde08f4a31893a88c8428c91.png结论32c87acd022a1f2521ce5f23a26e5d3c.png

这篇论文总结了各种流行的自监督对比模型。
我们解释了对比学习中不同的模块:

  • 如何选择正确的前置任务

  • 如何选择学习架构

  • 如何在下游任务上优化

基于对比学习的模型获得了非常好的实验效果。

本文最后总结了当前对比学习面临的问题。

83180b57ec04e648010492d740c57bae.png后台回复关键词【入群

加入卖萌屋NLP/IR/Rec与求职讨论群

后台回复关键词【顶会

获取ACL、CIKM等各大顶会论文集!

19c49116a1056ec11720b42bc54ea0f2.gif

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

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

相关文章

论文浅尝 | 重新审视语言模型与知识库的关系

笔记整理:陈卓,浙江大学在读博士,主要研究方向为低资源学习和知识图谱论文链接:https://arxiv.org/pdf/2106.09231发表会议:ACL 2021动机这篇文章类似于是批判性的文章,反驳的之前EMNLP2019的一篇文章knowl…

Spark在美团的实践

本文已发表在《程序员》杂志2016年4月期。 前言 美团是数据驱动的互联网服务,用户每天在美团上的点击、浏览、下单支付行为都会产生海量的日志,这些日志数据将被汇总处理、分析、挖掘与学习,为美团的各种推荐、搜索系统甚至公司战略目标制定提…

LeetCode 958. 二叉树的完全性检验(层序遍历)

1. 题目 给定一个二叉树,确定它是否是一个完全二叉树。 百度百科中对完全二叉树的定义如下: 若设二叉树的深度为 h,除第 h 层外,其它各层 (1~h-1) 的结点数都达到最大个数,第 h 层所有的结点都连续集中在…

论文浅尝 | 通过学习中间步骤的监督信号改进多跳知识库问答

笔记整理:陈永锐,东南大学博士论文链接:https://arxiv.org/pdf/2101.03737.pdf概述该论文处理多跳知识库问答(KBQA)任务,主要关注训练过程在中间步骤缺乏监督信号的挑战。由于这一挑战,多跳 KBQ…

打破情感分类准确率 80 分天花板!更加充分的知识图谱结合范式

文 | SeverusNLP的研究者们一直都在尝试,怎么样让模型像人类一样,学会“知识”。而最直观的想法莫过于将人类已经总结出来供机器解读的“知识体系”,及其嵌入表示作为额外的特征添加到NLP模型之中。至少,从直觉上看,将…

分布式块存储系统Ursa的设计与实现

引言 云硬盘对IaaS云计算平台有至关重要的作用,几乎已成为必备组件,如亚马逊的EBS(Elastic Block Store)、阿里云的盘古、OpenStack中的Cinder等。云硬盘可为云计算平台带来许多优良特性,如更高的数据可靠性和可用性、灵活的数据快照功能、更…

LeetCode 919. 完全二叉树插入器(层序遍历队列)

1. 题目 完全二叉树是每一层(除最后一层外)都是完全填充(即,结点数达到最大)的,并且所有的结点都尽可能地集中在左侧。 设计一个用完全二叉树初始化的数据结构 CBTInserter,它支持以下几种操作…

开源开放 | 中文相对复杂词汇识别数据集RCWI-Dataset(CCKS2021)

OpenKG地址:http://openkg.cn/dataset/rcwi-dataset开放许可协议:CC BY-SA 4.0 (署名相似共享)贡献者:北京语言大学(阙孟溪、张宇飞、于东)1. 摘要中文领域的词汇复杂度评估资源较为匮乏&#x…

提升 NLP 实战技能的一点建议

作为最典型的 AI 领域之一,NLP 这些年也是越来越热门,基本上是各大厂必备了。随着 OpenAI 等技术的诞生、迁移学习等技术的成功应用,使得 NLP 技术在搜索、推荐、信息流、互联网金融、社交网络等领域不断发展壮大。与此同时,NLP 工…

深入FFM原理与实践

FM和FFM模型是最近几年提出的模型,凭借其在数据量比较大并且特征稀疏的情况下,仍然能够得到优秀的性能和效果的特性,屡次在各大公司举办的CTR预估比赛中获得不错的战绩。美团技术团队在搭建DSP的过程中,探索并使用了FM和FFM模型进…

LeetCode 993. 二叉树的堂兄弟节点(层序遍历)

文章目录1. 题目2. 解题2.1 层序遍历2.2 递归查找1. 题目 在二叉树中,根节点位于深度 0 处,每个深度为 k 的节点的子节点位于深度 k1 处。 如果二叉树的两个节点深度相同,但父节点不同,则它们是一对堂兄弟节点。 我们给出了具有…

论文浅尝 | IRW:基于知识图谱和关系推理的视觉叙事框架

笔记整理:孙悦,天津大学 链接:https://www.aaai.org/AAAI21Papers/AAAI-3382.XuC.pdf动机视觉叙事是生成一个短篇故事来描述有序图像流的任务。与视觉字幕不同,故事不仅包含事实描述,还包含未出现在图像中的想象概念。…

薅羊毛 Colab使用外部数据的7种方法!

文 | Coggle源 | Coggle数据科学Colab作为非常强大且优惠的计算平台,一直广受大家喜爱。可以随时随地使用,还有免费的GPU可以薅羊毛。那么如何在Colab中使用外部数据集,来完成竞赛呢,本文将给出几种常见的方法。方法1:…

高可用性系统在大众点评的实践与经验

背景 所谓高可用性指的是系统如何保证比较高的服务可用率,在出现故障时如何应对,包括及时发现、故障转移、尽快从故障中恢复等等。本文主要以点评的交易系统的演进为主来描述如何做到高可用,并结合了一些自己的经验。需要强调的是&#xff0c…

图灵奖大佬+谷歌团队,为通用人工智能背书!CV 任务也能用 LM 建模!

文 | ZenMoore编 | 小轶图灵奖大佬 Geoffrey Hinton 的团队和 Google Brain 团队近日发布新工作 Pix2seq,将 CV 经典任务 目标检测 转换为了语言模型的下游任务。这就很有意思了朋友们!因为这是一个很一般化的范式!也就是说,不光是…

论文浅尝 | 异构图 Transformer

笔记整理:许泽众,浙江大学博士在读论文链接:https://arxiv.org/abs/2003.01332本文主要提出一种处理异构图的方法,所谓异构图(Heterogeneous graph)是指在一个图中会出现不同类型的边和节点的图。早期对于图…

LeetCode 1145. 二叉树着色游戏(计算节点个数)

1. 题目 有两位极客玩家参与了一场「二叉树着色」的游戏。游戏中,给出二叉树的根节点 root,树上总共有 n 个节点,且 n 为奇数,其中每个节点上的值从 1 到 n 各不相同。 游戏从「一号」玩家开始(「一号」玩家为红色&a…

常见的时间序列预测模型python实战汇总

最完整的时间序列分析和预测(含实例及代码):https://mp.weixin.qq.com/s/D7v7tfSGnoAqJNvfqGpTQA 1 时间序列与时间序列分析 在生产和科学研究中,对某一个或者一组变量 x(t)x(t) ARIMA 模型对时间序列的要求是平稳型。因此&#x…

简单复读机LR如何成为推荐系统精排之锋?

文 | 水哥源 | 知乎saying1. 众所周知, 人类(划掉)推荐的本质是复读机2. 精排之锋,粗排之柔,召回之厚3. 在推荐里谈“过拟合”很容易给我们造成心理上的松懈,导致我们忽略环境,氛围等多种因素的…

从0到1构建美团压测工具

背景 美团内部的RPC服务大多构建在Thrift之上,在日常开发服务的过程中,需要针对这些服务进行压力测试(以下简称压测)来发现潜在问题。常用的方法有: 使用一些脚本语言如:Python、Ruby等,读取线上…