对比学习链接

对比学习

  • 引言
  • bert在对比学习中起到的作用:
  • **对比学习的作用:**
  • 生成式自监督学习:
  • 判别式自监督学习
  • simCLR
  • SimCLR正负例构建
  • SimCLR表示学习系统构建
  • SimCLR上下分支
  • SimCLR损失函数
  • simCLR的两点贡献:

引言

  • 对比学习属于无监督或者自监督学习,目前多个模型的效果以及超过了有监督学习模型。
    对比学习(Contrastive Learning)最近一年比较火,各路大神比如Hinton、Yann LeCun、Kaiming He及一流研究机构比如Facebook、Google、DeepMind,都投入其中并快速提出各种改进模型:Moco系列、SimCLR系列、BYOL、SwAV……,各种方法相互借鉴,又各有创新,俨然一场机器学习领域的军备竞赛

bert在对比学习中起到的作用:

  • Bert预训练模型,通过MLM任务的自监督学习,充分挖掘出了模型从海量无标注文本中学习通用知识的能力。而在图像中的预训练通常是有监督的,也就是使用ImageNet来进行预训练,但是在下游中Fine-tune的效果,和bert下游任务中的性能提升是没法比的。

  • 既然在自然语言处理中,自监督无标注数据学习成功了,那么是不是就意味着在图像领域自监督是不是也有可能,从图像领域的有监督向自监督训练的曙光也就是对比学习。

  • 在有监督学习中,标注的数据总是有线的,我们不可能把所有数据都进行标注,这会消耗我们大量的成本,也就是偶像的数据标注。在NLP领域中吸取的经验就是:自监督使用的数据量越多,那么模型能够将会越复杂,这也就意味着相对而言模型学习到的知识是比较丰富的,这样的预训练模型对于夏有任务的效果也将会更好。

  • 基于此,我们的想法就是使用尽可能多的无标注数据来进行自监督学习,从中学习到更加丰富的先验知识,然后在下游任务中来进行微调fine-tune,将预训练学习到的知识迁移到下游任务中,提升下游任务的效果。

对比学习的作用:

  • 对比学习是自监督学习中的一种,依赖于无标注数据来进行知识学习,从无标注数据中来学习先验知识。
  • 自监督学习一般分为两类:生成式自监督学习和判别式自监督学习。

生成式自监督学习:

  • VAE和GAN属于生成式自监督学习中的两类典型方法,这种方法要求模型要重构图像或者图像的一部分,任务难度相对比较高,要求像素级别的重构,中间的图像编码包含很多细节信息。

判别式自监督学习

  • 对比学习属于典型的判别式自监督学习,相对于生成式自监督学习,判别式自监督学习难度要低一些。对比学习“无明确的定义、有指导原则”,指导原则为:通过构造一个相似实例和不相似实例来进行学习,得到一个表示学习模型,这个表示学习模型的特点为,相似的特征对象在投影空间内距离比较近,反之特征对象不相似的,距离越远。
  • 在表示学习模型中,如何构建相似实例与不相似实例,如何遵循原则来进行学习,如何反之模型坍塌,这几个点是其中的关键。
  • 目前出现的的对比学习方法有很多,从防止模型坍塌的不同角度,可以大致把现有的方法划分为:基于负例的对比学习方法,基于的对比聚类的方法、基于不对称网络结构的方法,以及基于冗余消除损失函数的的方法。

simCLR

基于负例对比学习:以SIMCLR为例

  • 在SimCLR之前,就提出了不少对比学习方法,包括:Mocov1,并且效果要比之前的方法好‘另一方面SimCLR采取大队成结构。整体结构比较清晰,比价容易说清楚。而且他奠定的结构,以及成为了对比学习模型的的标准构成结构首先了解SimCLR模型结构,但对于了解其他模型也会更加容易一些。

SimCLR正负例构建

  • 正例的构造:将原始图片通过特征增强,从可能的特征增强的集合T中,随机抽取两种:t1-T;t2-T,分别作用在原始图片上,形成两张经过增强的新图像(x1,x2),l两者互为正例。在训练时,batch内任意的其他图片均为负例。这样表示学习模型在学习的过程中就会拉进正例的距离,退远负例的距离,使得模型能够在一定程度上学习到对象之间的相似性。同时,通过这种方式,能够使模型能够忽略掉一些表面的因素,比如遮挡不变性、颜色不变形、旋转不变性,使得模型在判别是否为相似实例是能够忽略掉一些特征来进行学习。模型同通过融合多种图像增强方式,离开增强模型的表示学习能力,提升模型的对比学习的难度。

SimCLR表示学习系统构建

  • 构造好正负例之后,模型需要来进行表示学习系统构建。
    通过将巡礼哦按数据映射到某个空间上,并且采取一定的方法,使得模型中正例之间距离比较近,负例之间距离比较远。构建过程如图所示:

  • simCLR模型结构由上下两层双塔构成,也叫做Branch。
    我们随机从数据集中选取n个branch,然后通过上述方法图像增强方法来构造两个图像增强视图,aug1 和aug1,aug1和aug2中分别包含n个增强数据,并且分别经过上下两个分支,对增强数据进行非线性变换,其中两个分支就是上下投影函数,需要将图像数据投影到某个表示空间。

SimCLR上下分支

  • 由于上下两个分支是对称的,因此只需要介绍一个分支即可。介绍AUG1经过上分支来介绍投影过程。AUg1经过特征编码encoder(一般使用Resnet来作为模型结构,这里在图中以f(x)来表示),经过CNN编码后得到特征表示hi。紧随其后,进行另一个非线性变换结构projector,其中projector由FC-BN-RLU-fc两层MLP构成,在图中由函数g(x)来进行表示,通过g函数将特征h进行非线性变换为z。总而言之,数据通过增强变换后,经过两层非线性变换,将特征映射到相应的表示空间中。
    这两个上下分支就是图像数据进行映射所需要的投影函数。

疑问:为什么在表示空间映射时,需要经过两次线性变换,一次线性变换不行吗?

我们在构建好正负例之后,期望的是模型能否将正例之间的距离拉的尽可能的近,对于负例之间的距离推的尽可能的远。这里需要一个度量函数来进行距离的判断,一般使用相似度函数来作为度量函数。一般需要对l2正则后,向量之间的点积或者向量之间cosine相似性,计算公式如下所示:

疑问:为什么一定要做l2正则后再计算相似性?

SimCLR损失函数

  • SImCLR模型采用的损失函数为:InfoNCE Loss,某个例子对应的InfoNCE Loss损失函数如下所示,其中zi表示正例在表示空间的特征向量,分子部分中,两个正例之间的距离越近函数损失函数越小,也就是正例之间的距离越近越好,分母部分则表示负例之间的距离越远越好,距离越远损失函数越小。通过设定损失函数来指引模型的训练方向,使得模型越来越接近预期目标。
  • 在模型中,需要注意:
  • SImCLR其实就是标准的预训练过程,通过海量的无标注数据,通过对比学习原则作为指导,学习到好的特征表示,需要学习到好的encorder模型以及它对应的特征表示。也就是,对于输入一个数据图像,它能够抽取到关键信息,忽略无关信息,与bert的mlp自监督学习的预训练基本是一致的,只是做法方式不太一致。通过学习到好的encorder编码层后,来欧晓解决下游任务,用学习到的参数来初始化encorder模型中的Resnet模型,下游通过微调的形式来进行模型参数调整,希望预训练的模型参数对于下游任务具有一定的迁移学习作用。simCLR中的组件包括:encorder、projector、图像增强、infoNCE损失函数,在进行模型与训练我们最后需要的是encorder部分,希望得到尽可能质量高的encorder部分。需要注意的是,所有的对比学习都是这样的。

疑问:为什么在表示空间映射时,需要经过两次线性变换,一次线性变换不行吗?
为什么要进行两次进行线性变换?在最初的特征映射过程中,只有基于Resnet的Encorder编码层,而加入projector之后,模型的效果提升显著。

simCLR的两点贡献:

simCLR最大的贡献在于:1、使用复合图像增强,表明了复合图像增强的重要性;2、在encorder的基础上加入了project实现了两次非线性变换,进一步提取了深层语义信息。通过将以上两点的结合使得对比学习的效果超过了有监督模型效果。
核心思路:
对同一item构建两个表示,使得batch内同一个item距离更近,负样本距离更远。

对比学习(一)-双塔模型-simCLR相关推荐

  1. Contrastive Learning(对比学习,MoCo,SimCLR,BYOL,SimSiam,SimCSE)

    很多大佬认为,深度学习的本质就是做两件事情:Representation Learning(表示学习)和 Inductive Bias Learning(归纳偏好学习).在表示学习方面,如果直接对语义 ...

  2. 【ICML 2020对比学习论文解读】SimCLR: A Simple Framework for Contrastive Learning of Visual Representations

    一.写在前面 对比学习(Contrastive Learning) 对比学习是一种自监督学习方法,在无标签数据集上仍可以学习到较好的表征. 对比学习的主要思想就是相似的样本的向量距离要近,不相似的要远 ...

  3. 图灵奖大佬 Lecun 发表对比学习新作,比 SimCLR 更好用!

    文 | Rukawa_Y 编 | 智商掉了一地,Sheryc_王苏 比 SimCLR 更好用的 Self-Supervised Learning,一起来看看吧! Self-Supervised Lea ...

  4. 哈工大鹏程lab武大提出对比学习+超分模型,实现了新的SOTA

    关注公众号,发现CV技术之美 ✎ 编 者 言  对比学习在high-level任务上取得了显著的成功,但获得的全局视觉表征不适应丰富纹理和上下文信息的low-level任务,本文对对比学习框架的改进并 ...

  5. 【对比学习】CUT模型论文解读与NCE loss代码解析

    标题:Contrastive Learning for Unpaired Image-to-Image Translation(基于对比学习的非配对图像转换) 作者:Taesung Park, Ale ...

  6. 盘点近期大热对比学习模型:MoCo/SimCLR/BYOL/SimSiam

    ©PaperWeekly 原创 · 作者|上杉翔二 单位|悠闲会 研究方向|信息检索 很多大佬认为,深度学习的本质就是做两件事情:Representation Learning(表示学习)和 Indu ...

  7. 张俊林:从对比学习视角,重新审视推荐系统的召回粗排模型

    分享嘉宾:张俊林博士 新浪微博 编辑整理:王岩 出品平台:DataFunTalk 导读:今天分享的主题是从对比学习的视角,即从一个不同的角度来看看推荐系统里面的召回和粗排模型.对比学习从去年年中开始比 ...

  8. 对比学习视角重新审视推荐系统

    目录 1 什么是对比学习 1.1 对比学习的渊源和谱系 1.2 什么是对比学习系统 1.3 对比学习的典型例子 SimCLR给出的解决办法 1.4 什么是不好的对比学习系统 1.5 什么是好的对比学习 ...

  9. 73岁Hinton老爷子构思下一代神经网络:属于无监督对比学习

    来源:机器之心 本文约2700字,建议阅读7分钟. 在近期举行的第 43 届国际信息检索年会 (ACM SIGIR2020) 上,Geoffrey Hinton 做了主题为<The Next G ...

最新文章

  1. Javascript 面向对象全新理练之数据的封装
  2. 从 volatile 说到 i++ 的线程安全问题
  3. android retrofit 2.0,android – Retrofit 2.0 OnFailure – 原始响应
  4. 【渝粤题库】国家开放大学2021春1080工程数学(本)题目
  5. .NET使用免费开源类库操作Excel
  6. php接收get参数false是字符串,php怎么接收url参数
  7. iQOO Pro 5G评测:配置彪悍定价亲民 成功拉低5G手机准入门槛
  8. Jira与敏捷项目管理
  9. Ubuntu16.04常用工具
  10. 新建工程,如何通过git上传到阿里云code
  11. lol超长id注册手把手教程 第一期
  12. Python Turtle绘图[难度2星]:横切的橙子(配色优化——邻近色/反差色)
  13. spark-大表join优化方案
  14. Spring Security 实战内容:实现自定义退出登录
  15. 视频理解论文汇总zoo(持续ing)
  16. 使用topGO进行GO富集分析
  17. 路径规划五种算法简述及对比
  18. Java项目:SSH房屋线下销售网站管理系统
  19. emacs常用操作笔记
  20. 流行:时尚健康美女10大标准

热门文章

  1. Pyhton生成《百年孤独》高频词词云
  2. 如何让span中的文字垂直居中
  3. 神舟电脑独显直连怎么开?
  4. CSS选择器常见用法总结
  5. 通达信接口编程语言是什么?
  6. 什么是网络钓鱼,攻击类型和防御?
  7. QCC30DFU流程android说明,qcc512x qcc302x qcc303x earbud 软件GAIA OTA DFU 空中升级实现方法以及升级步骤...
  8. 无源域适应(SFDA)方向的领域探究和论文复现(第一部分)
  9. WampServer3.2.0下载安装教程详解版
  10. Leetcode刷题33. 搜索旋转排序数组