A Simple Framework for Contrastive Learning of Visual Representations阅读笔记

news2024/11/18 7:38:27

在这里插入图片描述
论文地址:https://arxiv.org/pdf/2002.05709.pdf

目前流行的无监督学范式。通过训练,使模型拥有比较的能力。即,模型能够区别两个数据(instance)是否是相同的。这在 深度聚类 领域受到广泛的关注。(在有监督中的 few-shot, 使用一些类让模型学会比较,再用一些新类去测试模型的比较能力)

我们分几个模块了解对比学习。

数据增强

对比学习主要是通过拉进 正例对 之间特征表示的相似度;以及拉远 负例对 之间特征表示的相似度。
从而使模型具有 对比的能力。因为是无监督学习,我们的数据没有标签。我们构建正例对的方法就是通过数据增强(基本不改变数据的语义信息)。
数据增强的方法有很多种:
图片数据增强
文本数据增强
语音数据增强
图数据增强

正负例对的构建

原数据: ( x 1 , x 2 , x 3 ) (x_1, x_2, x_3) (x1,x2,x3);
增强数据a: ( x 1 a , x 2 a , x 3 a ) (x_1^a, x_2^a, x_3^a) (x1a,x2a,x3a);
增强数据b: ( x 1 b , x 2 b , x 3 b ) (x_1^b, x_2^b, x_3^b) (x1b,x2b,x3b);

Aug_data{a & b} x 1 b x_1^b x1b x 2 b x_2^b x2b x 3 b x_3^b x3b
x 1 a x_1^a x1a ( x 1 a , x 1 b ) \color{red}(x_1^a, x_1^b) (x1a,x1b) ( x 1 a , x 2 b ) (x_1^a, x_2^b) (x1a,x2b) ( x 1 a , x 3 b ) (x_1^a, x_3^b) (x1a,x3b)
x 2 a x_2^a x2a ( x 2 a , x 1 b ) (x_2^a, x_1^b) (x2a,x1b) ( x 2 a , x 2 b ) \color{red}(x_2^a, x_2^b) (x2a,x2b) ( x 2 a , x 3 b ) (x_2^a, x_3^b) (x2a,x3b)
x 3 a x_3^a x3a ( x 3 a , x 1 b ) (x_3^a, x_1^b) (x3a,x1b) ( x 3 a , x 2 b ) (x_3^a, x_2^b) (x3a,x2b) ( x 3 a , x 3 b ) \color{red}(x_3^a, x_3^b) (x3a,x3b)

构成的正例对:红色;
构成的负例对:黑色。

上面说的只是原始的 对比对的构造方式。 现在还有根据 语义信息 进行去除假负例对。
假负例对: x 1 , x 2 x_1, x_2 x1,x2 属于一个 簇类, ( x 1 a , x 2 b ) (x_1^a, x_2^b) (x1a,x2b) 却属于负例对,实际上应该属于正例对,且他们的特征表示的相似度应该很大。

编码器 Φ ( ⋅ ) \Phi(\cdot) Φ()

将图片,文本,语音,图等进行编码。得到特征矩阵 H H H
对于一个原数据: X = { x i } i = 0 M X = \{ x_i \}_{i=0}^M X={xi}i=0M, 我们得到其相应的增数据: X a = { x i a } i = 0 M X^a = \{ x_i^a \}_{i=0}^M Xa={xia}i=0M, X b = { x i b } i = 0 M X^b = \{ x_i^b \}_{i=0}^M Xb={xib}i=0M M M M是batch size的大小。
然后经过编码得到特征矩阵: H a = Φ ( X a ) , H b = Φ ( X b ) H^a = \Phi(X^a), H^b = \Phi(X^b) Ha=Φ(Xa),Hb=Φ(Xb),其中, H a , H b ∈ R M × h i d d e n _ s i z e H^a, H^b \in \mathbb{R}^{M \times hidden\_size} Ha,HbRM×hidden_size

Project head f ( ⋅ ) f(\cdot) f()

一般使用一个两层的线性MLP或者三层的非线性MLP。将得到的Feature Matrix映射到一个字空间(subspace)。一般都是将其映射为128维。
对于得到的特征矩阵: H a , H b H^a, H^b Ha,Hb。我们经过 f ( ⋅ ) f(\cdot) f() 得到映射的子空间: Z a = f ( H a ) , Z b = f ( H b ) Z^a = f(H^a), Z^b = f(H^b) Za=f(Ha),Zb=f(Hb), 其中, Z a , Z b ∈ R M × 128 Z^a, Z^b \in \mathbb{R}^{M \times 128} Za,ZbRM×128

最小化对比损失

得到子空间表示后,在使用对比损失函数,最小化损失函数。

l i a = − log ⁡ exp ⁡ ( s ( z i a , z i b ) / τ ) ∑ j = 1 M [ exp ⁡ ( s ( z i a , z j a ) / τ ) + exp ⁡ ( s ( z i a , z j b ) / τ ) ] l i b = − log ⁡ exp ⁡ ( s ( z i b , z i a ) / τ ) ∑ j = 1 M [ exp ⁡ ( s ( z i b , z j a ) / τ ) + exp ⁡ ( s ( z i b , z j b ) / τ ) ] L = 1 2 M ∑ i = 1 M ( l i a + l i b ) \mathcal{l}^a_i = -\log \frac{\exp(s(z_i^a, z_i^b)/\tau)}{\sum_{j=1}^{M} [\exp(s(z_i^a, z_j^a)/\tau) + \exp(s(z_i^a, z_j^b)/\tau) ]} \\ \mathcal{l}^b_i = -\log \frac{\exp(s(z_i^b, z_i^a)/\tau)}{\sum_{j=1}^{M} [\exp(s(z_i^b, z_j^a)/\tau) + \exp(s(z_i^b, z_j^b)/\tau) ]} \\ \mathcal{L} = \frac{1}{2M} \sum_{i=1}^{M} (\mathcal{l}^a_i + \mathcal{l}^b_i) lia=logj=1M[exp(s(zia,zja)/τ)+exp(s(zia,zjb)/τ)]exp(s(zia,zib)/τ)lib=logj=1M[exp(s(zib,zja)/τ)+exp(s(zib,zjb)/τ)]exp(s(zib,zia)/τ)L=2M1i=1M(lia+lib)
其中, τ \tau τ 是温度参数, M M M 是batch size的大小, s ( ⋅ ) s(\cdot) s() 是相似性度量,具体表达为: s ( z i , z j ) = z i T z j / ∣ ∣ z i ∣ ∣ 2 ⋅ ∣ ∣ z j ∣ ∣ 2 s(z_i, z_j) = z_i^Tz_j / ||z_i||_2 \cdot ||z_j||_2 s(zi,zj)=ziTzj/∣∣zi2∣∣zj2

实验的超参数和一些细节

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

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

相关文章

总线(四)Modbus总线 协议

文章目录Modbus技术背景Modbus OSI分布Moudbus分类通讯过程Moudbus协议通信过程以及报文解析RTU 与 ASCII 收发数据区别Modbus技术背景 Modbus是一种串行通信协议。 1971年,Modicon公司首次退出Modbus协议,ModbusRTU和Modbus ASCII诞生于此。 后来施耐德…

图像处理特征可视化方法总结(特征图、卷积核、类可视化CAM)(附代码)

一、前言众所周知,深度学习是一个"黑盒"系统。它通过“end-to-end”的方式来工作,输入数据例如RGB图像,输出目标例如类别标签、回归值等,中间过程不可得知。如何才能打开“黑盒”,一探究竟,让“黑…

[神经网络]Transfomer架构

一、概述 Transfomer架构与传统CNN和RNN最大的区别在于其仅依赖自注意力机制,而没有卷积/循环操作。其相较于RNN,不需要进行时序运算,可以更好的进行并行;相较于CNN,其一次可以关注全图而不局限于感受野尺寸。 二、模…

充电协议: 快充协议,如何选充电宝?

快充协议(存在两种:电压; 电流) 目前市面上的快充技术大多遵循2个技术方向: 以高通QC、联发科PEP、华为FCP为首的高压低电流快充技术; 另一种就是以OPPO的VOOC以及华为SCP为首的低电压大电流快充技术。 目前常见的快充标准还有三星AFC、联发…

Fluent自定义物理场

1 概述场(field)是物理的基础概念之一,表明了物理量在空间的分布。根据物理量的类型,可分为标量场(scalar field)、向量场(vector field)、张量场(tensor field&#xff…

linux环境下安装mariadb

采用yum的形式,linux发行版为Rocky Linux9.1,安装用户为有sudo权限的用户,非root用户 1.查询是否已经安装过 yum list installed|grep mariadb2.安装mariadb 如果使用非root用户,请记得加sudo yum install mariadb sudo yum in…

SQLI-Labs(3)8-14关【布尔盲注和时间盲注】

目录 第八关 第九关: 第十关 第十一关 第十二关 第十三关 第十四关 第八关 我们用测试语句来测试是否为注入点 从上图中得知存在注入点,那么接下来就是爆列 一共有三列,接下来用union select 和报错注入都试一下发现没有回显点&…

C语言-基础了解-14-C指针

C指针 一、指针 通过指针,可以简化一些 C 编程任务的执行,还有一些任务,如动态内存分配,没有指针是无法执行的 每一个变量都有一个内存位置,每一个内存位置都定义了可使用 & 运算符访问的地址,它表示…

(蓝桥真题)异或数列(博弈)

题目链接:P8743 [蓝桥杯 2021 省 A] 异或数列 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 样例输入: 4 1 1 1 0 2 2 1 7 992438 1006399 781139 985280 4729 872779 563580 样例输出: 1 0 1 1 分析:容易想到对于异或最大值…

计算机体系结构分类和嵌入式系统

一、计算机体系结构分类——flynn分类法 二、嵌入式系统芯片 在嵌入式系统中,常见的芯片主要分为四种类似 DSP芯片,也称数字信号处理器,是一种特别适合于进行数字信号处理运算的微处理器,其主要应用是实时快速地实现各种数字信号…

【C3】进程休眠,时间和延时,延缓,proc文件系统,内存分配,数据类型,内核中断,通过IO内存访问外设

文章目录1.实现进程休眠:条件不够歇一歇,把CPU让给其他进程2.内核表示时间和实现延时:linux中有一个时钟会周期性产生中断,linux将这中断作为时间基准3.内核实现延缓操作:内核定时器,tasklet,wo…

蓝桥杯-李白打酒加强版

蓝桥杯-李白打酒加强版1、问题描述2、解题思路3、代码实现1、问题描述 话说大诗人李白, 一生好饮。幸好他从不开车。 一天, 他提着酒显, 从家里出来, 酒显中有酒 2 斗。他边走边唱: 无事街上走,提显去打酒。 逢店加一倍, 遇花喝一斗。 这一路上, 他一共遇到店 N 次…

西电软件工程概论核心考点汇总(期末真题+核心考点)

文章目录前言一、历年真题1.1 选择题1.2 判断题1.3 简答题1.4 应用题二、核心考点2.1 软件工程概念2.2 计算机科学和软件工程概念对比2.3 考虑质量的三种方法2.4 过程质量模型2.5 系统组成元素2.6 螺旋模型2.7 关键路径法计算2.8 风险管理2.9 需求类型判断(根据例子选择需求类型…

【论文阅读 WWW‘23】Zero-shot Clarifying Question Generation for Conversational Search

文章目录前言MotivationContributionsMethodFacet-constrained Question GenerationMultiform Question Prompting and RankingExperimentsDatasetResultAuto-metric evaluationHuman evaluationKnowledge前言 最近对一些之前的文章进行了重读,因此整理了之前的笔记…

ubuntu安装使用putty

一、安装 安装虚拟机串口 sudo apt-get install putty sudo apt install -y setserial 二、使用 虚拟机连接串口 sudo setserial -g /dev/ttyS* 查看硬件对应串口 找到不是unknown的串口 sudo putty

插件化开发入门

一、背景顾名思义,插件化开发就是将某个功能代码封装为一个插件模块,通过插件中心的配置来下载、激活、禁用、或者卸载,主程序无需再次重启即可获取新的功能,从而实现快速集成。当然,实现这样的效果,必须遵…

【博学谷学习记录】超强总结,用心分享丨人工智能 自然语言处理 文本特征处理小结

目录文本特征处理作用常见的文本特征处理方法添加n-gram特征说明提取n-gram文本长度规范说明实现导包问题记录心得文本特征处理作用 文本特征处理包括为语料添加具有普适性的文本特征, 如:n-gram特征 以及对加入特征之后的文本语料进行必要的处理, 如: 长度规范. 这些特征处…

vue3的插槽slots

文章目录普通插槽Test.vueFancyButton.vue具名插槽Test.vueBaseLayout.vue作用域插槽默认插槽Test.vueBaseLayout.vue具名作用域插槽Test.vueBaseLayout.vue普通插槽 父组件使用子组件时,在子组件闭合标签中提供内容模板,插入到子组件定义的出口的地方 …

云桌面技术初识:VDI,IDV,VOI,RDS

VDI(Virtual Desktop Infrastucture,虚拟桌面架构),俗称虚拟云桌面 VDI构架采用的“集中存储、集中运算”构架,所有的桌面以虚拟机的方式运行在服务器硬件虚拟化层上,桌面以图像传输的方式发送到客户端。 …

序列化与反序列化概念

序列化是指将对象的状态信息转换为可以存储或传输的形式的过程。 在Java中创建的对象,只要没有被回收就可以被复用,但是,创建的这些对象都是存在于JVM的堆内存中,JVM处于运行状态时候,这些对象可以复用, 但…