【自监督学习1】SimCLR论文阅读

news2024/11/25 7:47:08

文章目录

  • 一、摘要
  • 二、引言
  • 三、方法
    • 3.1 主要框架
    • 3.2 训练一个大的batchsize
  • 四、数据增强
    • 4.1 实验一 数据增强的组合对学习好的特征表达非常重要
    • 4.2 对比学习需要更多的数据增强
  • 五、一些实验证明
    • 5.1 大模型更有利于无监督对比学习
    • 5.2 非线性层的预测头增加了特征表示
    • 5.3可调节的归一化交叉熵损失函数由于其他方法
    • 5.4 对比学习更受益于大的batchsize和更长的训练时间
  • 六、结论
  • 七、其他


paper地址:https://arxiv.org/abs/2002.05709
github地址:https://github.com/google-research/simclr


一、摘要

这篇文章提出了一个对比学习的简单的框架,用来学习视觉的表征。主要贡献如下:

  • 提出了一个简化的视觉表征对比学习框架,不再需要特殊的架构或者memory bank;
  • 展示了数据增强组合的重要性,特别是再想定义一个有效的预测任务时,数据增强起着关键作用;
  • 引入了一个可学习的非线性变换,并嵌入在特征表示和损失之间,可以明显提高表征 学习的质量
  • 表示了,对比学习相比于监督学习,对比学习受益于更大的batchsize和train step

这篇文章提出时,在ImageNet上,由SimCLR学习的自监督表示训练的线性分类器达到76.5%的精度,和ResNet50相当,超过了之前提出的一些自监督学习算法约7%。 在仅有1%的数据集上微调时,也获得了85.8%的top-5准确率,比AlexNet少了100倍的标签,却得到了可媲美的精度。

在这里插入图片描述

二、引言

自监督视觉表征学习方法主流有两种,生成式和判别式:

  • 生成式方法在输入空间中学习如何生成或者建模像素,但是pixel-level的生成器计算量大,且对表征学习来说可能是不必要的;
  • 判别式方法然后用类似监督学习的目标函数来学习表征,训练时的输入和标签都来自未标注的数据。但是很多方法都依赖于定义一个pretext的启发式训练任务,可能限制表征学习的通用性

然后本文继续介绍了提出的方法SimCLR,不仅精度超过之前的方法,而且简单,不需要特殊的空间结构和memory bank. 然后系统的研究了本文的主要贡献:

  • 数据增强的组合是非常重要的,产生了高效的表征,数据表明了,对比学习相对监督学习更受益于数据增强;
  • 介绍了一个可学习的非线性变换,这个非线性变换在表征和对比损失之间加了一层MLP,极大的增加了表征学习的质量;
  • 对比交叉熵损失的表征学习受益于归一化的embedding和一个可适当调整的温度参数;
  • 对比学习更受益于大的batchsize和更长的训练时间。与监督学习类似,对比学习也受益于深又宽的网络。

此外,除了在ImageNet上取得比较好的效果外,还评估了其他的数据集,在12个数据集中,有10个都超过了监督学习的base。

三、方法

3.1 主要框架

SimCLR学习表征,经过一个潜在空间的对比损失,这个对比损失是最大化同一数据中不同增强视图之间的一致性来实现的。

本文的框架如下:同一数据增强族中随机采用两个独立的数据增强算子,并应用于每个数据示例中以获得两个相关的视图。并训练一个基础的encoder网络和一个projection 头,使用对比损失来最大化一致性。
训练结束后,丢弃projection头,使用encoder部分的表征来服务于下游任务
在这里插入图片描述
框架流程如下:
在这里插入图片描述
由于一个batch内有很多图像对,除了自己本身外,其他图像对都看成负样本。
比如图像1和图像1之间,为正样本。 图1和其他图则为负样本对,负样本对也参与损失的计算。

  1. 对一张图做两次随机数据数据增强,彩色两张图片。本文采用随机裁剪、随机颜色变换、随机高斯;
  2. 将这个数据增强后的图像送到网络 f ( ⋅ ) f(·) f() 中, 产生两个特征向量 h h h
  3. h h h 再经过一个投影操作 g ( ⋅ ) g(·) g(),其实就是一个MLP全连接操作,生成 z z z
  4. 两个 z z z,通过对比损失函数,计算相似度
  5. 最终应用于下游任务的,表征采用的是 h h h,特征提取器是 f ( ⋅ ) f(·) f()。 投影操作 g ( ⋅ ) g(·) g()则被丢弃了。

本文还定义了一个归一化后的交叉熵损失函数,如下:
在这里插入图片描述
其中 s i m ( z i , z j ) sim(z_i, z_j ) sim(zi,zj)就是余弦相似度。值得注意的是,A图和B等其他图组成一对,B也需要和A等其他图组成一对,所以最终的损失,是奇数对于偶数对之前相加,再求平均。
在这里插入图片描述
关于这里的损失函数,如何完成同类相吸,异类互斥,知乎一篇文档有详细的讲解。
https://zhuanlan.zhihu.com/p/258958247

3.2 训练一个大的batchsize

本文将Batchsize从256尝试到8192,每个正样本对应双倍的增强,比如batchsize=8192时,就有16282个负样本。
当使用具有线性学习率尺度时SGD/Momentum,大的batchsize可能不稳定,因此,本文使用LARS优化器

值得注意,本文采用GlobalBN 来解决普通BN之间信息泄漏的问题,有些方法是采用shuffle-BN(每个节点的均值方差互换)或者layer norm。

  • 标准的ResNet使用batch normalization,在分布式训练中,BN的均值和方差都是在当前的device上计算,回导致信息泄漏。特别在本文,所有的正样本对都在同一个device上计划,模型很可能会利用局部信息的泄漏来提高预测准确率,但是却不增加表征。
    本文采用globanBN,在所有的设备上,聚合方差和均值,其他方法比如在交叉设备上shuffling data ,或者用layer norm替代BN

四、数据增强

这篇文章以前,尽管数据增强已经被广泛应用,但都没有系统性应用数据增强到对比学习中。
以前的通常都是改变网络结构,比如:

  • 通过压缩网络的感受野来实现全局到局部的预测
  • 通过固定图像切割过程和上下文聚合网络实现相邻视图的预测

这些过程,可以通过随机裁剪来实现,如下图
在这里插入图片描述

4.1 实验一 数据增强的组合对学习好的特征表达非常重要

在这里插入图片描述

实验一、数据增强的组合对学习好的特征表达非常重要,数据论证了:

1、没有一个单一的论证可以学到好的特征表示;
2、随机crop和随机颜色变换组合是最佳的

在这里插入图片描述
颜色失真也很重要,不然的化,仅仅靠直方图就能判断两个图像是不是同一个图crop的
在这里插入图片描述

4.2 对比学习需要更多的数据增强

表1表示了,对比学习需要更多的数据增强,且本文还对比了监督学习算法中的一种自动数据增强,发现在对比学习中,效果也不是很好。
在这里插入图片描述

五、一些实验证明

5.1 大模型更有利于无监督对比学习

图7表示了,无监督学习更受益于大模型。
在这里插入图片描述

5.2 非线性层的预测头增加了特征表示

图8表示,加了非线性层的预测头后,特征表示更好了。
这里有个有趣的现象,也就是非线性层预测头的维度,对特征表示没有多大影响。
文中如此解释: z = g ( h ) z=g(h) z=g(h) 被训练为对数据的变换是不变的(同一图,做不同的数据增强,都是求相似度),因此失去了对下游任务支持的信息。
在这里插入图片描述

5.3可调节的归一化交叉熵损失函数由于其他方法

这里也做了一系列的对比实验
在这里插入图片描述

5.4 对比学习更受益于大的batchsize和更长的训练时间

图9也实验证明了这点,文中表示,大的batchsize提供了更多的负样本,有利于收敛。

but, 动不动就4096的batchsize, 小实验一般玩不起啊!
在这里插入图片描述

六、结论

本文提出了一个简单的框架及其实例化的对比视觉表示学习。并仔细研究了其组成部分,展示了不同设计选择的影响。通过结合,大大改进了以前的自我监督、半监督和迁移学习的方法。

然后是,本文方法与ImageNet上的标准监督学习仅在3个方面不同:数据增强的选择、在网络末端使用非线性头部和损失函数方面。

这个简单框架的优势表明,尽管最近人们的兴趣激增,但自监督学习仍然被低估了。

七、其他

还有更多的实验在附录中,如在验证集中随机选择了10个类别,应用t-SNE降维后,视觉表征层相比投影层的特征界限,更加明显。
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/650207.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

字符设备实现内部驱动原理及分步注册流程

字符设备实现内部驱动原理: 应用层:open函数回调到驱动中open操作方法的路线: open()--->sys_open()--->struct inode结构体--->struct cdev结构体--->struct file_operations结构体--->mycdev_open()…

RVEA多目标优化

A Reference Vector Guided Evolutionary Algorithm for Many-objective Optimization 目标函数预备知识参考向量引导选择更新参考向量流程整体框架参考向量引导选择参考向量自适应 for Many-objective Optimization) 目标函数 min ⁡ X f ( X ) ( f 1 ( X ) , f 2 ( X ) , . …

游泳耳机买什么牌子好一点?推荐四款出色的游泳耳机

游泳和跑步类似,短距离冲刺时,大脑没什么想法,而中长距离的有氧运动时,肉体是疲惫的,大脑是异常清晰的,时间却是格外难熬的。如何打发时间,让游泳锻炼变得不无聊,这是我从孩子时期就…

从零开始 Spring Boot 41:事件

从零开始 Spring Boot 41:事件 图源:简书 (jianshu.com) Spring 实现了一个简单、实用的事件框架,利用它我们可以在多个组件之间进行松耦合式的通信。 简单示例 让我们从一个简单的示例开始: public record Email(String addr…

sqli-labs靶场通关(21-30)

Less-21 还是adminadmin登录 可以看出uname是base64加密过的,解码得到:admin。 那么本关和less-20相似,只是cookie的uname值经过base64编码了。 抓包看一下也是如此 那么我们只需要上传paylaod的时候base64加密一下就可以了 base64加密工…

多线程-线程的创建的方式3、4:实现Callable与线程池

JDK5.0新增线程创建方式 简要概况: 1. 创建多线程的方式三:实现Callable(jdk5.0新增的)与之前的方式的对比:与Runnable方式的对比的好处 > call()可以有返回值,更灵活 > call()可以使用throws的方式…

模板模式(十六)

相信自己,请一定要相信自己 上一章简单介绍了代理模式(十五), 如果没有看过, 请观看上一章 一. 模板模式 引用 菜鸟教程里面的 模板模式介绍: https://www.runoob.com/design-pattern/template-pattern.html 在模板模式(Template Pattern)…

简要介绍 | 三维点云配准:理论、方法与挑战

三维点云配准:理论、方法与挑战 注:”简要介绍“系列仅从概念上对某一领域进行非常简要的介绍,不适合用于深入和详细的了解 三维点云配准 是计算机视觉和机器人领域的重要课题,涉及从不同视角或时间点采集的三维点云数据之间寻找最…

面试半年,总结了 1000 道 2023 年 Java 架构师岗面试题

半年前还在迷茫该学什么,怎样才能走出现在的困境,半年后已经成功上岸阿里,感谢在这期间帮助我的每一个人。 面试中总结了 1000 道经典的 Java 面试题,里面包含面试要回答的知识重点,并且我根据知识类型进行了分类&…

Linux5.5 Mysql索引、事务与存储引擎

文章目录 计算机系统5G云计算第四章 LINUX Mysql索引、事务与存储引擎一、Mysql索引1. 索引的概念2.索引的作用3.索引的副作用4.创建索引的原则依据5.索引的分类和创建1)普通索引2)唯一索引3)主键索引4)组合索引5)全文…

验证attention是否在图像分类问题上起决定性作用

来源:投稿 作者:摩卡 编辑:学姐 Motivation 现阶段出现了大量的Transformer-style图像分类模型,并且这些模型在ImageNet上取得了不俗的成绩,这些Transformer-style模型将取得高性能的功劳归功于Multi-head attention注…

【软件设计】模块设计耦合的其中类型

一.什么是高内聚、低耦合? 在结构化分析与模块设计方法中,模块化是一个很重要的概念,它是将一个待开发的软件分解成为若干个小的模块,每个模块可以独立地开发、测试。使得复杂问题的“分而治之”,令程序的结构清晰、易…

vue3+router4的基本使用

一、安装router npm i vue-router二、路由跳转 2.1 创建路由实例 在src目录下创建router文件夹,在其中创建一个index.js文件,创建路由实例。 通过vue-router的createRouter方法创建一个router对象。其中有history和routes 1.history: histo…

微机保护的数据采集系统(2)

(二)采样保持电路(S/H)和模拟低通滤波器(ALF) 1.采样保持电路(S/H) (1)采样保持原理。 S/H电路的作用是在一个…

Linux进程间通信 - 共享内存

之前的文章中我们讲述了匿名管道与命名管道相关的知识点,在本文中我们将继续讲述一种进程间通信的方式:共享内存。 systemV共享内存 共享内存区是最快的IPC形式。一旦这样的内存映射到共享它的进程的地址空间,这些进程间数据传递不再涉及到…

Downie 4 4.6.18 MAC上最新最好用的一款视频下载工具

Downie for Mac 简介 Downie是Mac下一个简单的下载管理器,可以让您快速将不同的视频网站上的视频下载并保存到电脑磁盘里然后使用您的默认媒体播放器观看它们。 Downie 4 下载 Downie 4 for Mac Downie 4 for Mac软件特点 支持许多站点 -当前支持1000多个不同的…

间接采购管理中常见的五大挑战

间接采购,有时也被称为间接费用或尾部支出,这些商品或服务不是制造产品直接必需的,而是日常运营所需的。 ● 办公室和行政用品 ● 商店地点的消耗品(例如,清洁用品) ● 设施管理费用 ● 专业服务 ● 旅行…

Linux 服务器重启之后执行指定脚本文件

有些时候,我们部署服务、中间件、数据库等应用的机器可能会因为机房停电、断电而宕机,这样大部分服务就随之关闭了,可能会需要手动去进行重启,我们可以通过 Linux 的开机启动来实现服务自动重启。 一、配置 /etc/rc.d/rc.local 文…

VOSviewer软件的基础与应用

VOSviewer是一款免费且专业的文献计量分析软件,也是一个知识图谱可视化工具,由荷兰莱顿大学开发,主要用于构建和查看文献计量知识图谱,基于文献的共引和共被引原理,具有可视化能力强、适合于大规模样本数据的特点&…

抖音矩阵系统源代码开发部署--源码搭建

抖音矩阵系统是一个具有强大功能的开放性平台,通过数据挖掘技术能够实现精准的用户画像和个性化推荐,这也是抖音成为国内最受欢迎的短视频平台之一的原因之一。矩阵系统的开发需要大量的技术支持和数据分析,同时也需要综合运用大数据、机器学…