热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

【ICML2020对比学习论文解读】SimCLR:ASimpleFrameworkforContrastiveLearningofVisualRepresentations

一、写在前面对比学习(ContrastiveLearning)对比学习是一种自监督学习方法,在无标签数据集上仍可以学习到较好的表征。
一、写在前面

对比学习(Contrastive Learning)

对比学习是一种自监督学习方法,在无标签数据集上仍可以学习到较好的表征。

对比学习的主要思想就是相似的样本的向量距离要近,不相似的要远,以此获得数据的高阶信息

自监督学习(Self-Supervised Learning)

Self-Supervised Learning,又称为自监督学习,我们知道一般机器学习分为有监督学习,无监督学习和强化学习。 而 Self-Supervised Learning 是无监督学习里面的一种,主要是希望能够学习到一种通用的特征表达用于下游任务 (Downstream Tasks)。

在这里插入图片描述

在这里插入图片描述

二、对比学习经典论文SimCLR
  • Paper: A Simple Framework for Contrastive Learning of Visual Representations https://arxiv.org/pdf/2002.05709.pdf
  • PPT: SimCLR: A Simple Framework for Contrastive
    Learning of Visual Representations

(1)SimCLR预训练阶段(类比BERT预训练阶段)

  1. Data augmentation
  2. Encoding (x~i→zi,x~j→zj\tilde x_i \rightarrow z_i, \tilde x_j \rightarrow z_jx~izi,x~jzj)
  3. Contrastive loss function

SimCLR用了一种叫做 NT-Xent loss (Normalized Temperature-Scaled Cross-Entropy Loss)的对比学习损失函数,也就是我们一般提到的对比学习里面的InfoNCE loss
在这里插入图片描述

(2)对下游任务Fine-tune阶段(类比BERT对下游任务微调)

  1. 输入图片xxx
  2. Encoding h=f(x)h=f(x)h=f(x)
  3. 将表征hhh,作为下游任务的输入
  4. 用少量标注数据微调模型

(3)下游任务预测阶段

  • 使用微调好的模型进行下游任务预测

SimCLR框架


在这里插入图片描述
在这里插入图片描述

SimCLR详细架构图

在这里插入图片描述
在这里插入图片描述

SimCLR的伪代码

在这里插入图片描述

计算每个Batch里面的所有Pair的损失之和取平均:
在这里插入图片描述
在这里插入图片描述

常见的数据增强方法
在这里插入图片描述

三、相关问题

问题1:SimCLR是有两个独立的Encoder网络吗?不是的,共享网络层参数

显然不是,SimCLR中不同view的图片用的是相同的网络 fff(共享网络参数),而不是f1,f2f_1, f_2f1,f2,这个在论文里也有说明。因此在预测阶段输入一张图片,经过网络fff,就可以得到图片的表征。

这种共享网络参数的思想是很常见的,比如BERT Mask任务的Softmax分类器(如下图所示)、Transformer的全连接层是所有位置共享的,ESMM双塔结构的底层网络是共享。想想也是,我们不可能给每个位置都初始化一个网络吧,这代价也太大了。

在这里插入图片描述


问题2:SimCLR预测阶段是怎么样的?

我们通过对比学习,巧妙地在没有任何标签的情况下训练好了 SimCLR 模型,使得其Encoder的输出可以像正常有监督训练的模型一样表示图片的Representation信息。所以接下来就是利用这些 Representation的时候了,也就是在下游任务上Fine-tune。一旦 SimCLR 模型在对比学习任务上得到训练,它就可以用于迁移学习,如 ImageNet 分类,如下图19所示。此时在下游任务上 Fine-tune 模型时需要labeled data,但是数据量可以很小了。

The hidden layer before the projection head is a better representation than the layer after.

zzz只是用来做contrastive learning的训练,而真正当我们使用feature来做下游任务时,还是选取nonlinear projection前的hhh特征。这是因为hhh的信息量是要比zzz的信息量要高的。

四、相关资料
  • 🤩 视频:李沐 对比学习论文综述【论文精读】

在这里插入图片描述

  • 对比学习(Contrastive Learning)中的损失函数
  • https://keremturgutlu.github.io/self_supervised/10%20-%20simclr.html
  • [论文笔记]——SimCLR(Google Brain)ICML2020
  • https://ai.googleblog.com/2020/04/advancing-self-supervised-and-semi.html
  • Self-Supervised Learning 超详细解读 (二):SimCLR系列(推荐阅读)

五、To Do
  • SimCLR代码实现
  • 对比学习论文综述【论文精读】

推荐阅读
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • sklearn数据集库中的常用数据集类型介绍
    本文介绍了sklearn数据集库中常用的数据集类型,包括玩具数据集和样本生成器。其中详细介绍了波士顿房价数据集,包含了波士顿506处房屋的13种不同特征以及房屋价格,适用于回归任务。 ... [详细]
  • 深度学习中的Vision Transformer (ViT)详解
    本文详细介绍了深度学习中的Vision Transformer (ViT)方法。首先介绍了相关工作和ViT的基本原理,包括图像块嵌入、可学习的嵌入、位置嵌入和Transformer编码器等。接着讨论了ViT的张量维度变化、归纳偏置与混合架构、微调及更高分辨率等方面。最后给出了实验结果和相关代码的链接。本文的研究表明,对于CV任务,直接应用纯Transformer架构于图像块序列是可行的,无需依赖于卷积网络。 ... [详细]
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
  • 推荐系统遇上深度学习(十七)详解推荐系统中的常用评测指标
    原创:石晓文小小挖掘机2018-06-18笔者是一个痴迷于挖掘数据中的价值的学习人,希望在平日的工作学习中,挖掘数据的价值, ... [详细]
  • 解决VS写C#项目导入MySQL数据源报错“You have a usable connection already”问题的正确方法
    本文介绍了在VS写C#项目导入MySQL数据源时出现报错“You have a usable connection already”的问题,并给出了正确的解决方法。详细描述了问题的出现情况和报错信息,并提供了解决该问题的步骤和注意事项。 ... [详细]
  • 一句话解决高并发的核心原则
    本文介绍了解决高并发的核心原则,即将用户访问请求尽量往前推,避免访问CDN、静态服务器、动态服务器、数据库和存储,从而实现高性能、高并发、高可扩展的网站架构。同时提到了Google的成功案例,以及适用于千万级别PV站和亿级PV网站的架构层次。 ... [详细]
  • 本文介绍了绕过WAF的XSS检测机制的方法,包括确定payload结构、测试和混淆。同时提出了一种构建XSS payload的方法,该payload与安全机制使用的正则表达式不匹配。通过清理用户输入、转义输出、使用文档对象模型(DOM)接收器和源、实施适当的跨域资源共享(CORS)策略和其他安全策略,可以有效阻止XSS漏洞。但是,WAF或自定义过滤器仍然被广泛使用来增加安全性。本文的方法可以绕过这种安全机制,构建与正则表达式不匹配的XSS payload。 ... [详细]
  • 如何自行分析定位SAP BSP错误
    The“BSPtag”Imentionedintheblogtitlemeansforexamplethetagchtmlb:configCelleratorbelowwhichi ... [详细]
  • IhaveconfiguredanactionforaremotenotificationwhenitarrivestomyiOsapp.Iwanttwodiff ... [详细]
  • Google Play推出全新的应用内评价API,帮助开发者获取更多优质用户反馈。用户每天在Google Play上发表数百万条评论,这有助于开发者了解用户喜好和改进需求。开发者可以选择在适当的时间请求用户撰写评论,以获得全面而有用的反馈。全新应用内评价功能让用户无需返回应用详情页面即可发表评论,提升用户体验。 ... [详细]
  • 也就是|小窗_卷积的特征提取与参数计算
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了卷积的特征提取与参数计算相关的知识,希望对你有一定的参考价值。Dense和Conv2D根本区别在于,Den ... [详细]
  • Python瓦片图下载、合并、绘图、标记的代码示例
    本文提供了Python瓦片图下载、合并、绘图、标记的代码示例,包括下载代码、多线程下载、图像处理等功能。通过参考geoserver,使用PIL、cv2、numpy、gdal、osr等库实现了瓦片图的下载、合并、绘图和标记功能。代码示例详细介绍了各个功能的实现方法,供读者参考使用。 ... [详细]
author-avatar
mobiledu2502862343
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有