A SURVEY ON CONTRASTIVE SELF-SUPERVISED LEARNING

  • Introduction
  • Architectures

Introduction

这里我们介绍一篇对比学习的综述文章。对比学习是最近非常热门的自监督表示学习方法,在很多的下游任务上都达到或超过了ImageNet预训练的效果。本文比较系统地总结了目前对比学习的几个常用的方法。文章地址:https://arxiv.org/abs/2011.00362。

在之前我们介绍的自监督表示学习方法中,pretext task的设计五花八门,从实验结果来看,都取得了一定的效果,但是和ImageNet预训练模型相比还是有差距。对比学习方法采用全新的pretext task,在性能上取得了大的提升。pretext task定义为:对于同一图像及其变体(叫做正样本,通常由数据増广获得)网络应该提取相似的特征,对于不同图像(叫做负样本,从数据集中重采样获得),网络提取的特征要尽量远离。该过程用下图表示:

如图,左上为原图,左下为经过数据増广之后得到的正样本,对于这两张图网络应该输出相似的特征,但是对于右边的两张图,应该输出不同的特征。我们通常使用余弦距离来衡量特征之间的相似性,假设原图及其正负样本分别记为 X , X + , X − X,X^+,X^- X,X+,X−,网络提取的特征记为 R , R + , R − R,R^+,R^- R,R+,R−,则特征之间的相似度记为:
s i m ( R , R + ) = R T R + ∣ ∣ R ∣ ∣ . ∣ ∣ R + ∣ ∣ sim(R,R^+)=\frac{R^TR^+}{||R||.||R^+||} sim(R,R+)=∣∣R∣∣.∣∣R+∣∣RTR+​
对比学习的损失函数可以记为:
L = s i m ( R T , R + ) s i m ( R T , R + ) + ∑ R − s i m ( R T , R − ) L=\frac{sim(R^T,R^+)}{sim(R^T,R^+)+\sum_{R^-}sim(R^T,R^-)} L=sim(RT,R+)+∑R−​sim(RT,R−)sim(RT,R+)​
通过优化以上损失函数,可以得到预训练模型。尽管直接使用该方法也可以取得效果,但是很明显负样本的质量限制了该方法的性能。对于正样本,由于是经过数据増广得到的,所以在视觉上本来就很像。然而,由于数据集的规模很大,因为负样本的选择随机性太强,提升对比学习性能的关键是设计合理的负样本选取方法。

Architectures

根据当前方法的负样本生成原理,这篇文章将对比学习方法分为了四类:

下面对这几种方法进行简要的介绍,后续会单独详细介绍:
1) End-to-End
这种结构的方法代表作是hinton组的文章SimCLR。在这种结构下,算法中的所有模块都是可微的,并且参与反向传播。网络的详细图如下:

输入数据首先经过两次变换,得到2*N个数据,然后正样本之间求sim,其他的样本均为负样本。这种方法需要很大的batchsize。
2) Memory Bank
该方法使用一个在内存中的memory bank保存所有的 R R R,并且不同的 R R R在训练过程中会以滑动平均的方式更新,网络中直接输入的样本均为正样本,负样本从memory bank中取,所以不需要很大的batchsize
3) Momentum Encoder
Memory Bank尽管对batchsize的需求不大,但是却需要非常大的内存空间来保存特征。Momentum Encoder事何凯明提出的方法,通过构建一个队列来控制负样本的数量,通过设计动量encoder来保存网络历史的记录。
4) Clustering
聚类的方法将对比学习与聚类相结合,在训练的过程中,会动态的学到一个类别信息。

自监督学习(十九):对比学习方法综述相关推荐

  1. 智能化软件开发微访谈·第十九期暨2022新年特辑:软件智能化开发:进展与挑战...

    CodeWisdom 智能化软件开发沙龙是复旦大学CodeWisdom团队参与组织的专注于代码大数据与智能化软件开发的学术和技术沙龙,面向相关领域的学术界研究者和工业界实践者,通过各种线上和线下交流活 ...

  2. CV领域的对比学习综述

    对比学习发展历程 发展历程大概可以分为四个阶段 1.百花齐放 InstDisc(instance discrimination) CPC CMC 在这个阶段中,方法.模型.目标函数.代理任务都还没有统 ...

  3. bmp文件头_「正点原子FPGA连载」第十九章SD卡读BMP图片LCD显示

    1)摘自[正点原子]领航者 ZYNQ 之嵌入式开发指南 2)实验平台:正点原子领航者ZYNQ开发板 3)平台购买地址:https://item.taobao.com/item.htm?&id= ...

  4. JavaScript五十问——对比来说CSS的Grid与FlexBox(下篇)

    前言 在上篇--JavaScript五十问--对比来说CSS的Grid与FlexBox(上篇),我介绍了Flex的属性与使用,今天我们来总结一下Grid的具体使用方法,最后会结合Flex与Grid布局 ...

  5. WPF,Silverlight与XAML读书笔记第三十九 - 可视化效果之3D图形

    原文:WPF,Silverlight与XAML读书笔记第三十九 - 可视化效果之3D图形 说明:本系列基本上是<WPF揭秘>的读书笔记.在结构安排与文章内容上参照<WPF揭秘> ...

  6. 大白话5分钟带你走进人工智能-第十九节逻辑回归之优化点(4)

                                                                                          第十九节逻辑回归之优化点(4 ...

  7. SimCSE 对比学习方法

    SimCSE 对比学习方法 某厂四面技术面面试过程问到了这个,遂记录一下,补个漏 早期计算句子相似性的方法 之前写过一篇博客,记录的是比较早期的文本相似性计算方法,感兴趣可以移步 文本相似性计算. 在 ...

  8. 信息系统项目管理师必背核心考点(六十九)访问控制授权方案

    科科过为您带来软考信息系统项目管理师核心重点考点(六十九)访问控制授权方案,内含思维导图+真题 [信息系统项目管理师核心考点]访问控制授权方案 一.自主访问控制(DAC) 1.指明用户能够访问哪些资源 ...

  9. [Python从零到壹] 五十九.图像增强及运算篇之图像锐化Scharr、Canny、LOG实现边缘检测

    欢迎大家来到"Python从零到壹",在这里我将分享约200篇Python系列文章,带大家一起去学习和玩耍,看看Python这个有趣的世界.所有文章都将结合案例.代码和作者的经验讲 ...

最新文章

  1. VMware推出vRealize,全面加速数字化与混合云的迁移
  2. Navisworks API 简单二次开发 (自定义工具条)
  3. java 匹配最后一次出现的字符_在Java中查找字符串中字符的最后一次出现
  4. Liferay CE 6.1安装教程
  5. 随想录(lua源码学习)
  6. java 注解原理_在java中实现组合注解原理分析(注解继承)
  7. 记录一次k3的SQLServerException: 将截断字符串或二进制数据
  8. Hibernate配置文件与关联映射介绍
  9. HTML5基础语法详述
  10. 计算机系统修复命令提示符,老司机帮您w10蓝屏后用命令提示符修复系统的方法...
  11. 浪曦struts2学习笔记3
  12. 期刊投稿时,word文档分栏问题
  13. 贝叶斯网络经典matlab源代码解析
  14. Processing摸索前行(8)-弹珠游戏
  15. 小学生计算机编程题,真题|小学组倒数第二道编程题,做不出来罚你点赞三遍!...
  16. C++ [实验一] CMatrix类设计与实现
  17. 【R语言】期末考试五道题
  18. 复旦大学2016--2017学年第一学期高等代数I期末考试情况分析
  19. mysql经常挂掉_mysql 数据库经常报错挂掉
  20. python中.any() 和.all()的用法

热门文章

  1. 一篇学会java数组(包含实例解析+算法实现,建议看后上手实操)
  2. 0 pandas概述--1文件读取与写入--2 基本操作
  3. Selenium 底层实现原理详解
  4. git 本地文件删除了更新不下来
  5. React-Native调试状态下App运行缓慢问题解决方案
  6. 使用SQL创建视图和存储过程
  7. 【2】 CSE3 概述
  8. js复制字符串到粘贴板
  9. 巨型企业数字化,根本没有所谓的个性化定制化
  10. WTI原油周度价格历史曲线