当前位置: 首页 > news >正文

【机器学习】对比学习(contrastive learning)

对比学习是一种机器学习技术,算法学习区分相似和不相似的数据点。对比学习的目标是学习数据的表示,以捕捉不同数据点之间的基本结构和关系。

在对比学习中,算法被训练最大化相似数据点之间的相似度,并最小化不相似数据点之间的相似度。通常的做法是通过训练算法来预测两个数据点是否来自同一类别。

对比学习已经在各种应用中得到了应用,如图像识别、自然语言处理和语音识别。对比学习的一种流行方法是孪生网络,它使用一对相同的神经网络来学习数据点之间的相似度函数。

总的来说,对比学习是一种强大的技术,可以用于学习数据的表示,并可用于各种下游任务。

什么是对比学习?

对比学习是一种机器学习范例,其中将未标记的数据点相互并列,以教导模型哪些点相似,哪些点不同。

也就是说,顾名思义,样本相互对比,属于同一分布的样本在嵌入空间中被推向彼此。相比之下,属于不同分布的那些则相互拉扯。

对比学习的重要性

监督学习是一种机器学习技术,其中使用大量标记示例来训练模型。数据标签的质量对于监督模型的成功至关重要。

💡 专业提示:查看监督学习与无监督学习:有什么区别?

但是,获取如此高质量的标记数据是一项繁琐的任务,尤其是在生物医学成像等领域,需要专家医生对数据进行注释。这既昂贵又费时。在监督学习 ML 项目中,80% 的时间都花在了获取和清理模型训练的数据上。

因此,最近深度学习研究的重点是减少模型训练中对监督的要求。为此,已经提出了几种方法,如半监督学习、无监督学习和自监督学习。

在半监督学习中,使用少量标记数据和大量未标记数据来训练深度模型。在无监督学习中,模型试图理解没有任何数据标签的非结构化数据。

💡 专业提示:关于训练-验证-测试集的信息。

自我监督学习 (SSL) 的方法略有不同。

与无监督学习一样,非结构化数据作为输入提供给模型。但是,该模型会自行注释数据,并且在模型训练的未来迭代中使用已被高置信度预测的标签作为基本事实。

这不断改进模型权重以做出更好的预测。与传统监督方法相比,SSL 方法的功效引起了一些计算机视觉研究人员的注意。

💡 专业提示:通过阅读什么是数据标记以及如何高效地进行标记,了解如何更快地标记数据 [教程]。

SSL 中使用的最古老和最受欢迎的技术之一是对比学习,它使用“正”和“负”样本来指导深度学习模型。

此后,对比学习得到了进一步发展,现在被用于完全监督和半监督的环境中,并提高了现有技术水平的性能。

现在让我们讨论一下对比学习的工作原理。

对比学习如何在 Vision AI 中发挥作用?

对比学习模仿人类的学习方式。例如,我们可能不知道什么是水獭或什么是灰熊,但看到图像(如下所示),我们至少可以推断出哪些图片显示的是相同的动物。

基本的对比学习框架包括选择一个数据样本,称为“锚点”,一个与锚点属于相同分布的数据点,称为“正”样本,以及另一个属于不同分布的数据点,称为“负”样本样本。

SSL模型试图在潜在空间中最小化anchor和正样本(即属于同一分布的样本)之间的距离,同时最大化anchor和负样本之间的距离。

如上例所示,属于同一类的两幅图像在嵌入空间(“ d+ ”)中彼此靠近,而属于不同类的两幅图像彼此之间的距离较远(“ d- ”)。因此,对比学习模型(在上例中用“ theta ”表示)试图最小化距离“ d+ ”并最大化距离“ d- ”。

有几种技术可以根据锚点选择正样本和负样本,我们将在接下来讨论。

实例判别法

在这类对比学习中,整个图像都经过转换并用作锚图像的正样本。例如,如果我们选择狗的图像作为锚点,我们可以将图像镜像或将其转换为灰度图像以用作正样本。负样本可以是数据集中的任何其他图像。

下图展示了基于实例区分的对比学习技术的基本框架。距离函数可以是任何东西,从欧几里得距离到嵌入空间中的余弦距离。

常用的基于实例判别对比学习的一些图像增强方法如下:

  1. 颜色抖动:在这里,RGB 图像的亮度、对比度和饱和度随机变化。此技术有助于确保模型不会通过场景的颜色记住给定的对象。虽然输出图像的颜色对于人类的解释可能看起来很奇怪,但这种增强有助于模型考虑对象的边缘和形状,而不仅仅是颜色。
  1. 图像旋转:图像在 0-90 度范围内随机旋转。由于旋转图像不会改变其中包含的核心信息(即图像中的狗仍然是狗),因此模型被训练为旋转不变性以进行稳健的预测。

  2. 图像翻转:图像围绕其中心垂直或水平翻转(镜像)。这是基于图像旋转的增强概念的扩展。

  3. 图像噪声:随机噪声按像素添加到图像中。这种技术允许模型学习如何将信号与图像中的噪声分开,并使其在测试期间对图像的变化更加稳健。例如,将图像中的某些像素随机更改为白色或黑色称为椒盐噪声(示例如下所示)。

  4. 随机仿射:仿射是一种保留直线和平行度但不一定保留距离和角度的几何变换。

上图显示了本节中描述的图像增强的一些示例

图像子采样/修补方法

此类对比学习方法将单个图像分解为固定尺寸的多个补丁(例如,10x10 补丁窗口)。补丁之间可能存在某种程度的重叠。

现在,假设我们拍摄一只猫的图像,并使用它的一个补丁作为锚点,同时利用其余部分作为正样本。来自其他图像的补丁(例如,浣熊、猫头鹰和长颈鹿各有一个补丁)用作负样本。

对比学习:目标

对比学习文献中定义了许多损失函数,用于不同问题的应用,每个损失函数都有自己的一组功能。让我们在本节中讨论其中的一些。

1. Max margin Contrastive Loss

它是对比学习文献(论文)中提出的最古老的损失函数之一。

这里的基本思想是,如果样本不属于同一分布,损失函数会最大化样本之间的距离,如果样本属于同一分布,则损失函数会最小化它们之间的距离。它在数学上表示如下:

这里,“ s_i ”和“ s_j ”是需要比较的对应标签“ y_i ”和“ y_j ”的两个样本,“ theta ”是嵌入网络,“ epsilon ”是超参数,定义下界距离不同类别的样本之间。

样本的标签由样本是否属于同一分布生成。例如,如果两个样本是同一图像的裁剪版本或同一样本的增强版本,则标签将相同。

2.三元组损失

三元组损失(在本文中提出)与对比损失非常相似,两者都试图最小化相似分布之间的距离并最大化不同分布之间的距离。三元组损失的主要区别在于,正样本和负样本同时作为锚样本的输入来计算损失。在数学上它表示如下:

这里,“ s_a ”、“ s+ ”、“ s- ”分别代表anchor、正样本和负样本。对于使用三元组损失函数的模型的成功,负样本难以与正样本分开是至关重要的。

例如,浣熊和环尾猫看起来非常相似(见下图)。两者都有条纹、浓密的尾巴和相似的体毛颜色。当对浣熊进行负样本采样时,选择环尾会使模型更有效地区分类别,而不是选择大象作为负样本。

3. N-pair Loss

N 对损失是三元组损失函数的扩展。不是对单个负样本进行采样,而是对“N”个负样本以及一个锚点和一个正样本进行采样。这种损失的数学表示如下:

上面显示的 N 对损失函数是为(N+1)个训练样本定义的,其中第一个样本是锚点“ s^a ”,第二个样本是正样本“ s+ ”,其余的(N -1)样本是反例。

在这个等式中,如果我们只有一个负样本而不是(N-1),那么得到的等式将等同于多类分类问题的 softmax 损失函数。

4.InfoNCE

InfoNCE,其中 NCE 代表噪声对比估计,是另一种类型的对比损失函数。

如果“ S = {s_1, s_2, …, s_N} ”表示包含一个正样本和“ N-1 ”个负样本的“ N ”个随机样本集合,则损失函数可以在数学上表示如下:

优化此损失将导致“ f_k ”估计由下式给出的密度比:

密度比保留了未来观测值“ s_{t+k} ”和上下文潜在表示“ c_t ”之间的互信息。“ p(s_{t+k}) ”是一个生成模型。

5.物流损失

逻辑损失函数是监督学习文献中广泛使用的一种简单的凸损失函数。它在数学上表示为:

损失是为“ N ”个样本定义的,这些样本由“ s_i ”表示,相应的标签(无论样本是否属于同一分布)由“ y_i ”表示。

6. NT-Xent 损失

Normalized Temperature-scaled Cross-Entropy 或 NT-Xent 损失是多类 N 对损失的修改,增加了温度 (T) 参数。它在数学上表示如下:

“ sim(.) ”表示余弦相似度函数,“ z_i ”和“ z_j ”分别是样本“ s_i ”和“ s_j ”的编码特征。

上面的等式显示了自监督学习中使用的 NT-Xent 损失的表达式。对于监督学习,上面显示的对比损失无法处理由于标签的存在,已知不止一个样本属于同一类的情况。推广到任意数量的积极因素导致在多个可能的功能之间进行选择。

因此,NT-Xent 损失在监督学习范式中的扩展表示如下:

这里,( 2N_{y_i} -1 ) 表示多视图批处理中不同于“ i ”的所有正样本的索引集。

监督对比学习 (SSCL) 与自我监督对比学习 (SCL)

监督学习是指一种学习范式,其中数据及其对应的标签都可用于训练模型。另一方面,在自监督学习中,模型在没有任何外部支持的情况下使用原始输入数据生成标签。

💡 专业提示:查看机器学习中数据预处理的简单指南。

在自监督对比学习 (SSCL) 中,由于没有类标签,正样本和负样本是通过各种数据增强技术从锚图像本身生成的。所有其他图像的增强版本被视为“负”样本。

这些挑战阻碍了模型训练。例如,如果我们有一张狗的图像作为锚样本,那么只有该图像的增强版本才能形成正样本。因此,其他狗的图像也属于负样本集。

因为,根据自监督学习框架,对比损失函数将迫使两个不同的狗图像在嵌入空间中远离,而实际上,它们应该尽可能靠近。

因此,监督对比学习 (SCL) 有效地利用了标签信息,并允许相同分布的样本(如不同狗的几张图像)在潜在空间中靠得很近,而属于不同类别的样本在潜在空间中被排斥。

因此,SCL 框架的损失函数也不同于 SSCL 框架中使用的损失函数。上一节在解释 NT-Xent 损失函数时探讨了一个这样的例子。

这里提到的与 SSCL 相关的问题也引发了自监督学习的非对比学习领域,我们根本不使用任何负样本。

我们只使用正样本来训练模型,其目的是将样本的表示(属于同一分布)推到嵌入空间中彼此靠近。这是一个广阔的研究领域,本文无法进一步详述。

相关文章:

【机器学习】对比学习(contrastive learning)

对比学习是一种机器学习技术,算法学习区分相似和不相似的数据点。对比学习的目标是学习数据的表示,以捕捉不同数据点之间的基本结构和关系。 在对比学习中,算法被训练最大化相似数据点之间的相似度,并最小化不相似数据点之间的相似…...

开源和闭源的优劣势比较

开源与闭源软件之争一直是技术领域一个备受关注的话题,而在近期特斯拉CEO马斯克的表态中,关于开源的讨论更是引发了广泛的关注。以下是一些关于开源和闭源的优劣势以及对未来大模型发展的一些见解: 开源软件的优势: 创新与合作&a…...

html手势密码解锁插件(附源码)

文章目录 1.设计来源1.1 界面效果 2.效果和源码2.1 动态效果2.2 源代码 源码下载 作者:xcLeigh 文章地址:https://blog.csdn.net/weixin_43151418/article/details/134534785 html手势密码解锁插件(附源码),仿手机手势密码,拖动九…...

Jetson JetPack-5.1.2-L4T-R35.4.1 修复deskew algorithm的问题

1. 前言 官方Orin Nano开发套件 版本: JetPack 5.1.2 2. 问题描述 使用的是带有Orin Nano EVK的GMSL相机,但我无法看到MIPI帧。 这里是媒体设备信息: Media controller API version 5.10.120Media device information ------------------------ driver tegra-…...

Doris的分区表和分桶表

1 列定义 以AGGREGATE KEY数据模型为例进行说明。更多数据模型参阅Doris数据模型。 列的基本类型,可以通过在mysql-client中执行HELP CREATE TABLE; 查看。 AGGREGATE KEY数据模型中,所有没有指定聚合方式(SUM、REPLACE、MAX、MIN)的列视为Key列。而其余则为Value列。 定义…...

华为HCIE技术(HCIP、HCIE)汇总

我所在的岗位是网络运维,路由与交换用的比较多,外网技术比较少。所以把经常用的写的比较详细。大家多多包涵。 理论部分 网络基础:ISO网络七层模型 交换机部分 首次Console口登陆配置Telnet访问 VLAN VLAN的介绍、单交换机vlan划分实验…...

React结合antd5实现整个表格编辑

通过react hooks 结合antd的table实现整个表格新增编辑。 引入组件依赖 import React, { useState } from react; import { Table, InputNumber, Button, Space, Input } from antd;定义数据 const originData [{ key: 1, name: 白银会员, value: 0, equity: 0, reward: 0…...

【C++进阶之路】第八篇:智能指针

文章目录 一、为什么需要智能指针?二、内存泄漏1.什么是内存泄漏,内存泄漏的危害2.内存泄漏分类(了解)3.如何检测内存泄漏(了解)4.如何避免内存泄漏 三、智能指针的使用及原理1.RAII2.智能指针的原理3.std:…...

保护服务器免受攻击:解析攻击情境与解决之道

在数字化时代,服务器安全问题日益突出,因为它们是企业和个人网络活动的核心。服务器被攻击可能引发一系列问题,理解攻击的不同情境以及采取相应的解决方法变得至关重要。 DDoS 攻击(分布式拒绝服务攻击) 情境&#xff…...

Python 获取两个数组中各个坐标点对之间最短的欧氏距离

Python 获取两个数组中各个坐标点对之间最短的欧氏距离 代码如下: import numpy as np from scipy import spatialxy1 = np.array([[243, 3173],[525, 2997]]...

假ArrayList导致的线上事故......

假ArrayList导致的线上事故… 线上事故回顾 晚饭时,当我正沉迷于排骨煲肉质鲜嫩,汤汁浓郁时,产研沟通群内发出一条消息,显示用户存在可用劵,但进去劵列表却什么也没有,并附含了一个视频。于是我一边吃了排…...

K8S精进之路-控制器Deployment-(1)

在K8S中,最小运行单位为POD,它是一个逻辑概念,其实是一组共享了某些资源的容器组。POD是能运行多个容器的,Pod 里的所有容器,共享的是同一个 Network Namespace,并且可以声明共享同一个 Volume。在POD中能够hold住网络…...

flutter iOS 视频mov格式转MP4格式

flutter iOS 视频mov格式转MP4格式 前言一、使用video_compress压缩视频总结 前言 今天在写项目的时候,突然发现iOS 里面的有些视频格式是mov的格式,这就导致在视频播放组件无法播放的问题,期间试过替换视频格式,但是又不想存储文…...

datafilecopy header validation failure for file +DATA/orcl/datafile/file1.ora

环境 linux 6.8 oracle 11.2.0.4 rac 未打补丁 现象: 数据库日志中显示 datafilecopy header validation failure for file DATA/orcl/datafile/file1.ora原因 用rman的backup as copy 对数据文件进行了copy或者叫位置更改时候,在sqlplus中对文件名进行…...

[机缘参悟-119] :一个IT人的反思:反者道之动;弱者,道之用 VS 恒者恒强,弱者恒弱的马太效应

目录 前言: 一、道家的核心思想 二、恒者恒强,弱者恒弱的马太效应 三、马太效应与道家思想的统一 3.1 大多数的理解 3.2 个人的理解 四、矛盾的对立统一 前言: 马太效应和强弱互转的道家思想,都反应了自然规律和社会规律&…...

CentOS用nginx搭建文件下载服务器

Nginx 是开源、高性能、高可靠的 Web 和反向代理服务器,而且支持热部署,几乎可以做到 7 * 24 小时不间断运行,即使运行几个月也不需要重新启动。在工作中,我们经常会用到需要搭建文件服务器的情况,这里就以在linux下搭…...

Ubuntu下载离线安装包

旧版Ubuntu下载地址 https://old-releases.ubuntu.com/releases/ 下载离线包 sudo apt-get --download-only -odir::cache/ncayu install net-tools下载snmp离线安装包 sudo apt-get --download-only -odir::cache/root/snmp install snmp snmpd snmp-mibs-downloadersudo a…...

【UE】线框材质

一、方式1 新建一个材质,混合模式设置为“已遮罩”,勾选“双面” 勾选“线框” 然后可以随便给一个自发光颜色,这样最基本的线框材质就完成了 二、方式2 新建一个材质,混合模式设置为“已遮罩”,勾选“双面”&#x…...

物联网网关在工业行业的应用与优势

物联网网关在工业行业的应用与优势 随着科技的发展,物联网(IoT)在各个行业得到了广泛应用。工业行业是其中的一个重要领域。工业行业涉及到许多生产和运输环节,需要不断地监测和控制各个环节的数据和参数。物联网网关&#xff08…...

【excel技巧】单元格内的公式如何隐藏?

Excel文件中最重要的除了数据还有就是一些公式了,但是只要点击单元格,公式就能显示出来,如果不想别人看到公式应该如何设置呢?今天分享隐藏excel单元格数据的方法。 选中单元格,点击右键打开【设置单元格格式】&#x…...

day52 ResNet18 CBAM

在深度学习的旅程中,我们不断探索如何提升模型的性能。今天,我将分享我在 ResNet18 模型中插入 CBAM(Convolutional Block Attention Module)模块,并采用分阶段微调策略的实践过程。通过这个过程,我不仅提升…...

JavaScript 中的 ES|QL:利用 Apache Arrow 工具

作者:来自 Elastic Jeffrey Rengifo 学习如何将 ES|QL 与 JavaScript 的 Apache Arrow 客户端工具一起使用。 想获得 Elastic 认证吗?了解下一期 Elasticsearch Engineer 培训的时间吧! Elasticsearch 拥有众多新功能,助你为自己…...

从零实现富文本编辑器#5-编辑器选区模型的状态结构表达

先前我们总结了浏览器选区模型的交互策略,并且实现了基本的选区操作,还调研了自绘选区的实现。那么相对的,我们还需要设计编辑器的选区表达,也可以称为模型选区。编辑器中应用变更时的操作范围,就是以模型选区为基准来…...

Python:操作 Excel 折叠

💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在CSDN上与你们相遇~💖 本博客的精华专栏: 【自动化测试】 【测试经验】 【人工智能】 【Python】 Python 操作 Excel 系列 读取单元格数据按行写入设置行高和列宽自动调整行高和列宽水平…...

在 Nginx Stream 层“改写”MQTT ngx_stream_mqtt_filter_module

1、为什么要修改 CONNECT 报文? 多租户隔离:自动为接入设备追加租户前缀,后端按 ClientID 拆分队列。零代码鉴权:将入站用户名替换为 OAuth Access-Token,后端 Broker 统一校验。灰度发布:根据 IP/地理位写…...

MySQL中【正则表达式】用法

MySQL 中正则表达式通过 REGEXP 或 RLIKE 操作符实现(两者等价),用于在 WHERE 子句中进行复杂的字符串模式匹配。以下是核心用法和示例: 一、基础语法 SELECT column_name FROM table_name WHERE column_name REGEXP pattern; …...

OpenLayers 分屏对比(地图联动)

注:当前使用的是 ol 5.3.0 版本,天地图使用的key请到天地图官网申请,并替换为自己的key 地图分屏对比在WebGIS开发中是很常见的功能,和卷帘图层不一样的是,分屏对比是在各个地图中添加相同或者不同的图层进行对比查看。…...

算法笔记2

1.字符串拼接最好用StringBuilder&#xff0c;不用String 2.创建List<>类型的数组并创建内存 List arr[] new ArrayList[26]; Arrays.setAll(arr, i -> new ArrayList<>()); 3.去掉首尾空格...

在Mathematica中实现Newton-Raphson迭代的收敛时间算法(一般三次多项式)

考察一般的三次多项式&#xff0c;以r为参数&#xff1a; p[z_, r_] : z^3 (r - 1) z - r; roots[r_] : z /. Solve[p[z, r] 0, z]&#xff1b; 此多项式的根为&#xff1a; 尽管看起来这个多项式是特殊的&#xff0c;其实一般的三次多项式都是可以通过线性变换化为这个形式…...

三分算法与DeepSeek辅助证明是单峰函数

前置 单峰函数有唯一的最大值&#xff0c;最大值左侧的数值严格单调递增&#xff0c;最大值右侧的数值严格单调递减。 单谷函数有唯一的最小值&#xff0c;最小值左侧的数值严格单调递减&#xff0c;最小值右侧的数值严格单调递增。 三分的本质 三分和二分一样都是通过不断缩…...