A Simple Framework for Contrastive Learning of Visual Representations 阅读笔记
Motivation
作者们构建了一种用于视觉表示的对比学习简单框架 SimCLR,它不仅优于此前的所有工作,也优于最新的对比自监督学习算法,
而且结构更加简单:这个结构既不需要专门的架构,也不需要特殊的存储库。
· 由于采用了对比学习,这个框架可以作为很多视觉相关的任务的预训练模型,可以在少量标注样本的情况下,拿到比较好的结果。
Discovery
在这篇论文中,研究者发现:
· 多个数据增强方法组合对于对比预测任务产生有效表示非常重要。
· 与监督学习相比,数据增强对于无监督学习更加有用;
· 在表示和对比损失之间引入一个可学习的非线性变换可以大幅提高模型学到的表示的质量;
· 与监督学习相比,对比学习得益于更大的批量和更多的训练步骤。
基于这些发现,他们在 ImageNet数据集上实现了一种新的自监督学习方法—SimCLR。
Model
SimCLR 通过隐空间中的对比损失来最大化同一数据示例的不同增强视图之间的一致性,从而学习表示形式。具体说来,这一框架包含四个主要部分:
· 随机数据增强模块,可随机转换任何给定的数据示例,从而产生同一示例的两个相关视图,分别表示为 x˜i 和 x˜j,我们将其视为正对;
· 一个基本的神经网络编码器 f(·),从增强数据中提取表示向量;
· 一个小的神经网络投射头(projection head)g(·),将表示映射到对比损失的空间;
· 为对比预测任务定义的对比损失函数。

下面让我们详细的理解一下simCLR算法的核心思想
首先是对比学习的基本概念,其实很简单,这是一种试图教会机器区分相似和不同的东西

可以简单总结为:
· 随机抽取一个小批量
· 给每个例子绘制两个独立的增强函数
· 使用两种增强机制,为每个示例生成两个互相关联的视图
· 让相关视图互相吸引,同时排斥其他示例

其算法可以具体表示为:

非常简单。取一幅图像,对其进行随机变换,得到一对增广图像x_i和x_j。该对中的每个图像都通过编码器以获得图像的表示。然后用一个非线性全连通层来获得图像表示z,其任务是最大化相同图像的z_i和z_j两种表征之间的相似性

首先是Data Augment这步

这个是效果,以N=2为例,则会产生2N = 4张经过数据增加的图。(文中作者使用N = 8192/batch)

然后是编码部分

下面是关于Similarity部分,也就是计算两个图像特征之间的相似度

下面是SimCLR的对比损失函数

分析结束
最后是与其他方式的比较

在线性评估方面,SimCLR 实现了 76.5% 的 top-1 准确率,比之前的 SOTA 提升了 7%。在仅使用 1% 的 ImageNet 标签进行微调时,SimCLR 实现了 85.8% 的 top-5 准确率,比之前的 SOTA 方法提升了 10%。在 12 个其他自然图像分类数据集上进行微调时,SimCLR 在 10 个数据集上表现出了与强监督学习基线相当或更好的性能。
Code
Tensorflow实现:https://github.com/googl-research/simclr
Pytorch实现:https://github.com/leftthomas/SimCLR
Reference
https://blog.csdn.net/u011984148/article/details/106233313/
最后,都看到这了,姑且给一个赞,推荐,关注一键三连呗~
A Simple Framework for Contrastive Learning of Visual Representations 阅读笔记的更多相关文章
- 论文解读(SimCLR)《A Simple Framework for Contrastive Learning of Visual Representations》
1 题目 <A Simple Framework for Contrastive Learning of Visual Representations> 作者: Ting Chen, Si ...
- A Simple Framework for Contrastive Learning of Visual Representations
目录 概 主要内容 流程 projection head g constractive loss augmentation other 代码 Chen T., Kornblith S., Norouz ...
- 【CV】ICCV2015_Unsupervised Learning of Visual Representations using Videos
Unsupervised Learning of Visual Representations using Videos Note here: it's a learning note on Prof ...
- 论文解读(PCL)《Prototypical Contrastive Learning of Unsupervised Representations》
论文标题:Prototypical Contrastive Learning of Unsupervised Representations 论文方向:图像领域,提出原型对比学习,效果远超MoCo和S ...
- Deep Learning of Graph Matching 阅读笔记
Deep Learning of Graph Matching 阅读笔记 CVPR2018的一篇文章,主要提出了一种利用深度神经网络实现端到端图匹配(Graph Matching)的方法. 该篇文章理 ...
- 【ML】ICML2015_Unsupervised Learning of Video Representations using LSTMs
Unsupervised Learning of Video Representations using LSTMs Note here: it's a learning notes on new L ...
- 论文解读(SimGRACE)《SimGRACE: A Simple Framework for Graph Contrastive Learning without Data Augmentation》
论文信息 论文标题:SimGRACE: A Simple Framework for Graph Contrastive Learning without Data Augmentation论文作者: ...
- Deep Reinforcement Learning for Visual Object Tracking in Videos 论文笔记
Deep Reinforcement Learning for Visual Object Tracking in Videos 论文笔记 arXiv 摘要:本文提出了一种 DRL 算法进行单目标跟踪 ...
- 论文解读(SUGRL)《Simple Unsupervised Graph Representation Learning》
Paper Information Title:Simple Unsupervised Graph Representation LearningAuthors: Yujie Mo.Liang Pen ...
随机推荐
- 手写一个最迷你的Web服务器
今天我们就仿照Tomcat服务器来手写一个最简单最迷你版的web服务器,仅供学习交流. 1. 在你windows系统盘的F盘下,创建一个文件夹webroot,用来存放前端代码. 2. 代码介绍: ( ...
- 【Redis】利用 Redis 实现分布式锁
技术背景 首先我们需要先来了解下什么是分布式锁,以及为什么需要分布式锁. 对于这个问题,我们可以简单将锁分为两种--内存级锁以及分布式锁,内存级锁即我们在 Java 中的 synchronized 关 ...
- spring boot配置MySQL8.0 Druid数据源
创建spring boot项目,在pom中添加相应依赖 <!--web--> <dependency> <groupId>org.springframework.b ...
- CTF-lottery[git文件泄露利用+PHP弱类型]
知识点:PHP弱类型 .git文件泄露 玩攻防世界 遇到一个题lottery 进去看看 分析玩法 我们发现 进入登陆用户都是初始值 金钱是20 彩票号码必须输入7位 然后看你输入的彩票号码有多少 ...
- python-基础入门-1
Python的打印为 print,等价于c语言的printf 1 print "hello again" 就能打印出hello again,简简单单,就这么一句. 我用的vsc ...
- ATM管理系统(三)
一.作业信息 博客班级 软件工程 作业要求 作业要求 作业目标 你理解的作业目标具体内容 学号 3180701218 二.题目要求 编写一个ATM管理系统,语言不限,要求应包括以下主要功能:(1)开户 ...
- sql常用函数整理
SQL中包含以下七种类型的函数: 聚合函数:返回汇总值. 转型函数:将一种数据类型转换为另外一种. 日期函数:处理日期和时间. 数学函数:执行算术运算. 字符串函数:对字符串.二进制数据或表达式执行操 ...
- 记录一下Comparator的用法
Collections.sort(res, new Comparator<ArrayList<Integer>>() { @Override ...
- jmeter脚本的编写
前几天讲到了性能测试的入门,今日继续来讲解jmeter的使用,本文讲的都是比较细,希望各位耐心的看完. 一.jmeter的安装与打开 前提条件:给大家一个jmeter的安装包 百度网盘的路径如下:链 ...
- echarts柱状图接口提供的数据是数值,要在顶部展示百分比
查阅echarts配置文档,柱状图并没有类似于饼图的直接展示百分比的参数,所以需要自己配置. window.onload = function () { var list1=[25.02,19.76, ...