什么是自监督学习?

举个通俗的例子:即使不记得物体究竟是什么样子,我们也可以在野外识别物体。

我们通过记住高阶特征并忽略微观层面的细节来做到这一点。那么,现在的问题是,我们能否构建不关注像素级细节,只编码足以区分不同对象的高阶特征的表示学习算法?通过对比学习,研究人员正试图解决这个问题。

什么是对比学习?

对比学习是一种自监督学习方法,用于在没有标签的情况下,通过让模型学习哪些数据点相似或不同来学习数据集的一般特征

让我们从一个简单的例子开始。想象一下,你是一个试图理解世界的新生婴儿。在家里,假设你有两只猫和一只狗。

即使没有人告诉你它们是“猫”和“狗”,你仍可能会意识到,与狗相比,这两只猫看起来很相似。

仅仅通过识别它们之间的异同,我们的大脑就可以了解我们的世界中物体的高阶特征。

例如,我们可能意识地认识到,两只猫有尖尖的耳朵,而狗有下垂的耳朵。或者我们可以对比狗突出的鼻子和猫的扁平脸。

本质上,对比学习允许我们的机器学习模型做同样的事情。它会观察哪些数据点对“相似”和“不同”,以便在执行分类或分割等任务之前了解数据更高阶的特征。

为什么这个功能如此强大?

这是因为我们可以在没有任何注释或标签的情况下,训练模型以学习很多关于我们的数据的知识,因此术语,自监督学习

在大多数实际场景中,我们没有为每张图像设置标签。以医学成像为例,为了创建标签,专业人士必须花费无数个小时查看图像以手动分类、分割等。

通过对比学习,即使只有一小部分数据集被标记,也可以显著提高模型性能。

现在我们了解了对比学习是什么,以及它为什么有用,让我们看看对比学习是如何工作。

对比学习如何工作?

在本文中,我将重点介绍SimCLRv2,这是 Google Brain 团队最近提出的最先进的对比学习方法之一。

整个过程可以简明地描述为三个基本步骤:

(1)对于数据集中的每个图像,我们可以执行两种增强组合(即裁剪 + 调整大小 + 重新着色、调整大小 + 重新着色、裁剪 + 重新着色等)。我们希望模型知道这两个图像是“相似的”,因为它们本质上是同一图像的不同版本。
(2)为此,我们可以将这两个图像输入到我们的深度学习模型(Big-CNN,例如 ResNet)中,为每个图像创建向量表示。目标是训练模型输出相似图像的相似表示。

(3)最后,我们尝试通过最小化对比损失函数来最大化两个向量表示的相似性
随着时间的推移,模​​型将了解到猫的两个图像应该具有相似的表示,而猫的表示应该与狗的表示不同。

这意味着模型能够在不知道图像是什么的情况下区分不同类型的图像!

我们可以通过将其分解为三个主要步骤来进一步剖析这种对比学习方法:数据增强、编码和损失最小化

1)数据增强


我们随机执行以下增强的任意组合:裁剪、调整大小、颜色失真、灰度。我们对批次中的每张图像执行两次此操作,以创建包含两个增强图像的一对正对a positive pair)。

2)编码

然后,我们使用我们的Big-CNN神经网络,我们可以认为它是一个简单的函数,h=f(x)h=f(x)h=f(x),其中“x”是我们的增强图像之一,以此将我们的两个图像编码为矢量表示。

然后,将CNN的输出输入到一组称为projection head的Dense Layers中,z=g(h)z=g(h)z=g(h)将数据转换到另一个空间。经验表明,这个额外的步骤可以提高性能。

通过将我们的图像压缩为潜在空间表示,该模型能够学习图像的高阶特征

事实上,随着我们继续训练模型以最大化相似图像之间的向量相似度,我们可以想象模型正在学习潜在空间中相似数据点的clusters

例如,猫表示将更接近,但与狗表示更远,因为这是我们训练模型学习的内容。

3)损失最小化

现在我们有两个向量zzz,我们需要一种方法来量化它们之间的相似性

由于我们正在比较两个向量,因此自然选择余弦相似度,它基于空间中两个向量之间的角度。

合乎逻辑的是,当向量在空间中靠得越近(它们之间的夹角越小),它们就越相似。因此,如果我们将余弦(两个向量之间的角度) 作为度量,当角度接近 0 时,我们将获得高相似度,否则将获得低相似度,这正是我们想要的。

我们还需要一个可以最小化的损失函数。一种选择是 NT-Xent(标准化温度标度交叉熵损失 Normalized Temperature-Scaled Cross-Entropy Loss)。

我们首先计算两个增强图像相似的概率

请注意, 分母是esimilaritye^{similarity}esimilarity(所有对,包含负对)。通过在我们的增强图像和我们批次中的所有其他图像之间创建对来获得负对

最后,我们将该值包装在−log()-log()−log()中,这样最小化这个损失函数对应于最大化两个增强图像相似的概率。

对比学习的应用

半监督学习

当我们的标签很少,或者很难获得特定任务(即临床注释)的标签时,我们希望能够同时使用标记数据和未标记数据来优化模型的性能和学习能力。这就是半监督学习的定义。

一种在文献中得到广泛关注的方法是无监督的预训练、有监督的微调、知识蒸馏范式(knowledge distillation paradigm)。

在这个范式中,自监督对比学习方法是一个关键的“预处理”步骤,它允许 Big CNN 模型(即 ResNet-152)在尝试使用有限的标记的图像对图像进行分类之前首先从未标记的数据中学习一般特征数据。

Google Brain 团队证明,这种半监督学习方法的label-efficient非常高,并且更大的模型可以带来更大的改进,尤其是对于低标签分数。

总结

  • 对比学习是一种自监督的、与任务无关的深度学习技术,它允许模型学习数据,即使没有标签。
  • 该模型通过学习哪些类型的图像相似,哪些不同,来学习数据集的一般特征。
  • SimCLRv2是对比学习方法的一个例子,它学习如何表示图像,使得相似的图像具有相似的表示,从而允许模型学习如何区分图像。
  • 当标签稀缺时,对数据有一般理解的预训练模型可以针对特定任务进行微调,例如图像分类,以显着提高标签效率,并有可能超越监督方法。

参考:
[1] https://towardsdatascience.com/understanding-contrastive-learning-d5b19fd96607
[2] https://analyticsindiamag.com/contrastive-learning-self-supervised-ml/

对比学习(contrastive learning)相关推荐

  1. 从对比学习(Contrastive Learning)到对比聚类(Contrastive Clustering)

    从对比学习(Contrastive Learning)到对比聚类(Contrastive Clustering) 作者:凯鲁嘎吉 - 博客园 http://www.cnblogs.com/kailug ...

  2. 对比学习Contrastive Learning

    对比学习是一种常用的自监督学习方法. 核心思想:把正样本距离拉近,正样本与负样本距离拉远.(类似度量学习中的margin, 但是对比学习为正负样本分类,无margin概念) 方式:通过一个正样本,以及 ...

  3. 理解对比表示学习(Contrastive Learning)

    目录 一.前言 二.对比学习 三.主要论文(附代码分析) 1. AMDIM ([Bachman](https://arxiv.org/pdf/1906.00910.pdf) *et al.* 2019 ...

  4. 理解对比学习(contrasive learning)

    1.什么是对比学习? 对比学习,顾名思义就是在训练中和某些东西进行对比从而学习,在自编码器中,输出与自己进行对比,从而得到一个中间量latent code,我认为这也是一种对比学习. 2.对比学习框架 ...

  5. 图对比学习入门 Contrastive Learning on Graph

    对比学习作为近两年的深度学习界的一大宠儿,受到了广大研究人员的青睐.而图学习因为图可以用于描述生活中广泛出现的非欧式数据,具有广大的应用前景.当图学习遇上了对比学习- 本文从对比学习入手,再介绍图对比 ...

  6. SimCSE:用于句子嵌入的对比学习

    目录 引言 对比学习Contrastive Learning SimCSE思想 无监督下的SimCSE 有监督下的SimCSE 连接各向异性Connection to Anisotropy 分析 引言 ...

  7. MoCo 动量对比学习——一种维护超大负样本训练的框架

    MoCo 动量对比学习--一种维护超大负样本训练的框架 FesianXu 20210803 at Baidu Search Team 前言 在拥有着海量数据的大型互联网公司中,对比学习变得逐渐流行起来 ...

  8. 对比学习顶会论文系列-3-2

    文章目录 一.特定任务中的对比学习 1.2 摘要生成中的对比学习--SimCLS: A Simple Framework for Contrastive Learning of Abstractive ...

  9. 张俊林:对比学习研究进展精要

    作者 | 张俊林 编辑 | 夕小瑶的卖萌屋 对比学习(Contrastive Learning)最近一年比较火,各路大神比如Hinton.Yann LeCun.Kaiming He及一流研究机构比如F ...

  10. 对比学习(一)-双塔模型-simCLR

    对比学习链接 对比学习 引言 bert在对比学习中起到的作用: **对比学习的作用:** 生成式自监督学习: 判别式自监督学习 simCLR SimCLR正负例构建 SimCLR表示学习系统构建 Si ...

最新文章

  1. 如何解决uiaotomator定位工具报错
  2. Activity平移动画
  3. golang 程序后台运行的方法 linux windows
  4. [LCP28] 采购方案
  5. Java工作笔记-使用IDEA开始我的第一个Spring项目
  6. stylus vue 报错_带你玩转webpack 从零构建Vue工程
  7. 按自己的思想写商业计划
  8. 电梯液晶显示控制方案
  9. linux中qt浏览器崩溃解决,解决Firefox火狐浏览器总是崩溃问题
  10. google浏览器无法更新_如何更新谷歌浏览器
  11. python绝技运用python成为顶级pdf_python绝技运用Python成为顶级黑客PDF高清文档免费下载...
  12. c语言中一般命名方式,C语言常见命名规则
  13. java 声明和动态创建数组
  14. Sniper模拟器的安装
  15. 文章详情页----- 详细步骤
  16. GBase8s数据库INTERSECT 运算符
  17. kaze算法的图像配准研究(1)-KAZE算法原理
  18. 2D转换之旋转和旋转三角形的做法(7)
  19. 【心电信号】基于多种滤波去除心电信号基线漂移含Matlab源码
  20. 【电脑使用】介绍几种安装Windows系统的方法及一些个人理解

热门文章

  1. java课程设计打字训练测试软件_打字训练测试软件-Java课程设计
  2. Google Earth Engine(GEE)——美国大陆(CONUS)30米土壤属性概率图数据库
  3. win7 使用自带无线网卡分享无线网络
  4. 计算机网络基础知识笔记五--会话层/表示层/应用层
  5. 我不喜欢代码,却为何坚持做程序员?
  6. 苹果商城怎么调成中文_深入探讨:承德洋葱电商平台怎么开店
  7. 苹果ipad有哪几款_iPad 已经出品十年了,缅怀一下
  8. LATTICE下载器hw-usbn-2A 2B软件下载驱动安装diamond和ISPVM下载详细使用说明
  9. 吐槽微信公众号技术团队的故障处理效率
  10. 十一、Spring Boot整合Redis(一)