一文弄懂什么是对比学习(Contrastive Learning)

本文是自己学习对比学习的总结,如有问题,欢迎批评指正。

前言

有的paper将对比学习称为自监督学习(Self-supervised learning),有的将其称为无监督学习(Unsupervised Learning , UL)。自监督学习是无监督学习的一种形式。

自监督学习(Self-supervised learning)可以避免对数据集进行大量的标签标注。把自己定义的伪标签当作训练的信号,然后把学习到的表示(representation)用作下游任务里。

目的学习一个编码器,此编码器对同类数据进行相似的编码,并使不同类的数据的编码结果尽可能的不同(通过代理任务引入更多的外部信息,以获得更通用(general)的表征)。

对比学习

首先要区分一下监督学习和无监督学习的区别。下图为两只猫和一只狗,监督学习的训练数据是有标签的,它的目的判断出下方图片是猫还是狗。而无监督学习的训练数据是没有标签的,它只需要判断出第一张和第二张是一类,第三张是一类就可以了!!!!!(至于图片描述的啥,对于无监督学习来说这不重要!)

将这三个图输入到一个神经网络中得到对应的特征向量f1、f2、f3。 在特征空间中f1,f2接近,f1,f3疏远(相似类别接近,不同类别疏远),如果不明白可以先看一下Embedding为什么要说这个呢?以最左边的猫的图片为例,我们对其进行简单变换(平移、旋转等)得到两个新图(当然这两张图片还是猫!!没有变成狗!!对吧?),这两张新图对应的特征向量f{1}'f{1}''在特征空间中接近,或者说相似度很高。生成新图,通过编码器将它们转化成Embedding向量,训练使f{1}'f{1}''接近,f{1}'f_{2} 疏远这个过程就是对比学习是无监督的!!,可以看出这个编码器是很关键的,它没有因为图片的变动,而把它编码成狗。那这有什么用呢?这可以作为一个pretext,当我们拥有的数据中不带标签的数据要远远大于带标签的数据的时候,我们可以用不带标签的数据进行对比学习的一个初始编码器,此编码器已经掌握了数据中的一部分特性,可以实现聚类功能,然后在用带标签数据进行微调

           

对比学习的典型范式就是:代理任务+目标函数。下图为谷歌2020年谷歌(论文:A Simple Framework for Contrastive Learning of Visual Representations)提出的一个对比学习通用框架。

图1:谷歌对比学习通用框架

  • 数据增强(代理任务)。对于同一样本x,经过数据增强生成\widetilde{x_{i}}\widetilde{x_{j}}两个样本,simCLR属于计算机视觉领域的paper,例如图片的随机裁剪、随机颜色失真、随机高斯模糊。\widetilde{x_{i}}\widetilde{x_{j}}就称为一个正样本对。
  • 特征提取编码器。f(⋅)就是一个编码器,用什么编码器不做限制。h_{i}h_{j}可理解为embedding向量。
  • g(i)(MLP层)。SimCLR中强调了这个MLP层加上会比不加好。
  • 目标函数作用阶段。对比学习中的损失函数一般是infoNCE loss(如下图二所示)

图2:nfoNCE loss

 其中,N代表的是一个batch的样本数,即对于一个batch的N个样本,通过数据增强的得到N对正样本对,此时共有2N个样本,负样本是什么?SimCLR中的做法就是,对于一个给定的正样本对,剩下的2(N-1)个样本都是负样本,也就是负样本都基于这个batch的数据生成。sim(z_{i},z{j})论文使用的是余弦相似度,负样本只出现在分母上,可见要使损失最小,则正样本相似度必须大,负样本相似度必须小。

  • 15
    点赞
  • 61
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
对比学习Contrastive Learning)是一种无监督学习方法,通过学习不同样本之间的差异来提取有用的特征。在对比学习中,一对样本会被提供给模型,其中一个样本被称为正样本,另一个样本则是负样本。正样本与负样本之间的差异将用来训练模型。 对比学习的目标是通过最大化正样本的相似性,同时最小化负样本的相似性,从而使模型能够学习到更好的特征表示。这种学习方式可以帮助模型在一个高维特征空间中区分样本,并捕捉到相对于给定任务更有用的特征。 对比学习中的一个重要概念是距离度量,用来衡量样本之间的相似性或差异性。常用的距离度量方法包括欧氏距离、余弦相似度等。模型通过优化参数来最小化正样本之间的距离,同时最大化负样本之间的距离,以获得更好的特征表示。 对比学习在许多领域都有广泛应用,例如图像处理、自然语言处理等。在图像处理中,对比学习可以用于图像检索、聚类等任务,通过学习图像之间的相似性来提取特征并进行匹配。在自然语言处理中,对比学习可以用于语义相似度计算、文本分类等任务,通过学习文本之间的差异来提取重要的语义信息。 总之,对比学习是一种通过学习样本间的差异来提取有用特征的无监督学习方法,可以应用于各种领域,帮助模型提取更好的特征表示。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值