对比学习(一)-双塔模型-simCLR
对比学习链接
对比学习
- 引言
- 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相关推荐
- Contrastive Learning(对比学习,MoCo,SimCLR,BYOL,SimSiam,SimCSE)
很多大佬认为,深度学习的本质就是做两件事情:Representation Learning(表示学习)和 Inductive Bias Learning(归纳偏好学习).在表示学习方面,如果直接对语义 ...
- 【ICML 2020对比学习论文解读】SimCLR: A Simple Framework for Contrastive Learning of Visual Representations
一.写在前面 对比学习(Contrastive Learning) 对比学习是一种自监督学习方法,在无标签数据集上仍可以学习到较好的表征. 对比学习的主要思想就是相似的样本的向量距离要近,不相似的要远 ...
- 图灵奖大佬 Lecun 发表对比学习新作,比 SimCLR 更好用!
文 | Rukawa_Y 编 | 智商掉了一地,Sheryc_王苏 比 SimCLR 更好用的 Self-Supervised Learning,一起来看看吧! Self-Supervised Lea ...
- 哈工大鹏程lab武大提出对比学习+超分模型,实现了新的SOTA
关注公众号,发现CV技术之美 ✎ 编 者 言 对比学习在high-level任务上取得了显著的成功,但获得的全局视觉表征不适应丰富纹理和上下文信息的low-level任务,本文对对比学习框架的改进并 ...
- 【对比学习】CUT模型论文解读与NCE loss代码解析
标题:Contrastive Learning for Unpaired Image-to-Image Translation(基于对比学习的非配对图像转换) 作者:Taesung Park, Ale ...
- 盘点近期大热对比学习模型:MoCo/SimCLR/BYOL/SimSiam
©PaperWeekly 原创 · 作者|上杉翔二 单位|悠闲会 研究方向|信息检索 很多大佬认为,深度学习的本质就是做两件事情:Representation Learning(表示学习)和 Indu ...
- 张俊林:从对比学习视角,重新审视推荐系统的召回粗排模型
分享嘉宾:张俊林博士 新浪微博 编辑整理:王岩 出品平台:DataFunTalk 导读:今天分享的主题是从对比学习的视角,即从一个不同的角度来看看推荐系统里面的召回和粗排模型.对比学习从去年年中开始比 ...
- 对比学习视角重新审视推荐系统
目录 1 什么是对比学习 1.1 对比学习的渊源和谱系 1.2 什么是对比学习系统 1.3 对比学习的典型例子 SimCLR给出的解决办法 1.4 什么是不好的对比学习系统 1.5 什么是好的对比学习 ...
- 73岁Hinton老爷子构思下一代神经网络:属于无监督对比学习
来源:机器之心 本文约2700字,建议阅读7分钟. 在近期举行的第 43 届国际信息检索年会 (ACM SIGIR2020) 上,Geoffrey Hinton 做了主题为<The Next G ...
最新文章
- Javascript 面向对象全新理练之数据的封装
- 从 volatile 说到 i++ 的线程安全问题
- android retrofit 2.0,android – Retrofit 2.0 OnFailure – 原始响应
- 【渝粤题库】国家开放大学2021春1080工程数学(本)题目
- .NET使用免费开源类库操作Excel
- php接收get参数false是字符串,php怎么接收url参数
- iQOO Pro 5G评测:配置彪悍定价亲民 成功拉低5G手机准入门槛
- Jira与敏捷项目管理
- Ubuntu16.04常用工具
- 新建工程,如何通过git上传到阿里云code
- lol超长id注册手把手教程 第一期
- Python Turtle绘图[难度2星]:横切的橙子(配色优化——邻近色/反差色)
- spark-大表join优化方案
- Spring Security 实战内容:实现自定义退出登录
- 视频理解论文汇总zoo(持续ing)
- 使用topGO进行GO富集分析
- 路径规划五种算法简述及对比
- Java项目:SSH房屋线下销售网站管理系统
- emacs常用操作笔记
- 流行:时尚健康美女10大标准
热门文章
- Pyhton生成《百年孤独》高频词词云
- 如何让span中的文字垂直居中
- 神舟电脑独显直连怎么开?
- CSS选择器常见用法总结
- 通达信接口编程语言是什么?
- 什么是网络钓鱼,攻击类型和防御?
- QCC30DFU流程android说明,qcc512x qcc302x qcc303x earbud 软件GAIA OTA DFU 空中升级实现方法以及升级步骤...
- 无源域适应(SFDA)方向的领域探究和论文复现(第一部分)
- WampServer3.2.0下载安装教程详解版
- Leetcode刷题33. 搜索旋转排序数组