【机器学习】对比学习(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 相关的问题也引发了自监督学习的非对比学习领域,我们根本不使用任何负样本。

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

LOJ #10134. 「一本通 4.4 练习 1」Dis

分析 根据数据范围分析一下复杂度,Floyd和dj算法都必爆。 发现题目说的是树,还是边还是双向的(树本身就是无向的,连通无回路的无向图叫做无向树,简称树。如果题目说了树,那么默认边就是双向的&#xff09…

优思学院|现代质量管理实践与六西格玛方法论如何融合?

企业要解决质量问题必然需要涉及管理,然而,如果仅仅将六西格玛法视为一种质量管理方法,必定会导致六西格玛管理法的失败。六西格玛法是一种具有特定战略性的管理方法,它涉及到市场、顾客、产品、服务、流程、质量、价值链以及财务…

利用多核的Rust快速Merkle tree

1. 引言 利用多核的Rust快速Merkle tree,开源代码见: https://github.com/anoushk1234/fast-merkle-tree(Rust) 其具有如下属性: 可调整为任意高度构建root复杂度为O(n)提供了插入和获取叶子节点的方法获取某叶子节…

centos7 利用nc命令探测某个tcp端口是否在监听

脚本 # 安装nc yum install -y ncnc -vz 192.168.3.128 60001 if [ $? -eq 0 ]; thenecho "tcp succeed" elseecho "tcp failed" fi nc -vz 192.168.3.128 60001 探测192.168.3.128服务器上60001 tcp端口, -vz说明是探测TCP的 端口开启的情况 执行…

用不用Microsoft Defender是你的自由,但不用最好也得有替代品

Microsoft Defender是预装在Windows 11操作系统上的重要安全工具。安全套件已完全集成到操作系统中,以保护你的系统免受恶意软件的攻击,但并不是每个人都喜欢它。你是否更愿意安装另一种防病毒/反间谍软件,以将Microsoft Defender推向绝境&am…

ATA-304功率放大器的电子实验案例(案例合集)

ATA-304功率放大器凭借其优异的指标参数受到不少电子工程师的喜欢,其在电子实验中的应用也非常频繁,下面为大家整理出ATA-304功率放大器的应用案例合集,希望能对领域内各位工程师、研究人员有所帮助。 案例一:ATA-304功率放大器在…

并行与分布式 第4章 数据级并行:向量体系结构和GPU

文章目录 并行与分布式 第4章 数据级并行:向量体系结构和GPU4.1 什么叫数据级并行4.1.1 数据级并行与SPMD4.1.2数据级并行——传统器件的问题4.1.3 数据级并行——向量体系结构和GPU 4.2 向量体系结构4.2.1 向量以及计算方式4.2.2 向量体系结构4.2.3 向量运算的执行…

如何在公网环境下使用内网穿透工具实现用ipad pro进行代码开发

文章目录 前言1. 本地环境配置2. 内网穿透2.1 安装cpolar内网穿透(支持一键自动安装脚本)2.2 创建HTTP隧道 3. 测试远程访问4. 配置固定二级子域名4.1 保留二级子域名4.2 配置二级子域名 5. 测试使用固定二级子域名远程访问6. iPad通过软件远程vscode6.1 创建TCP隧道 7. ipad远…

解锁数据库运维秘籍:掌握AntDB-T动态共享内存,提升进程间通信效率

动态共享内存是AntDB数据库通信的重要手段,本文主要阐述AntDB-T数据库动态共享内存的实现原理、实现方式与使用方法。 AntDB-T数据库是一款企业级通用分布式关系型数据库,其数据库内核是基于进程模型实现的,因此进程间通信(IPC&am…

撸源代码破冰杀手锏(一):Spring Security系列

一: 禅悟人生,码砖破冰感悟 二: Spring Security安全阐述 忙着去耍帅,后期补充完整.................

腾讯云服务器标准型S5实例CPU性能如何?配置特性说明

腾讯云服务器CVM标准型S5实例具有稳定的计算性能,CVM 2核2G S5活动优惠价格280.8元一年自带1M带宽,15个月313.2元、2核4G配置748.2元15个月,CPU内存配置还可以选择4核8G、8核16G等配置,公网带宽可选1M、3M、5M或10M,腾…

日期格式转化成星期几部署到linux显示英文

异常收集 原因:解决办法仰天大笑出门去,我辈岂是蓬蒿人 传入一个时间获取这个时间对应的是星期几,在开发环境(window系统)中显示为星期几,部署到服务器(linux系统)中会显示英文的时间…

什么是单片机?聊聊它的历史

前言 1946年2月15日,第一台电子数字计算机 ENIAC问世,这标志着计算机时代的到来。 ENIAC 是电子管计算机,时钟频率虽然仅有 100 kHz,但能在1s 的时间内完成 5000 次加法运算。与现代的计算机相比,ENIAC有许多不足&am…

腾讯云标准型s5和s6有什么区别?CPU处理器有差异吗?

腾讯云服务器CVM标准型S5和S6有什么区别?都是标准型云服务器,标准型S5是次新一代云服务器规格,标准型S6是最新一代的云服务器,S6实例的CPU处理器主频性能要高于S5实例,同CPU内存配置下的标准型S6实例要比S5实例性能更好…

KyLin离线安装OceanBase

去OceanBase下载若干文件 1 首先安装ob-deploy-2.3.1-2.el7.x86_64.rpm rpm -ivh ob-deploy-2.3.1-2.el7.x86_64.rpm# 运行此命令的时候他会报错 RPM should not be used directly install RPM packages, use Alien instead! 这个需要用Alien去转换为deb的包,不…

Linux中,查看Tomcat版本、如何查看Tomcat版本

方法 在tomcat的bin目录下,执行version.sh命令即可 结果

Pytorch完整的模型训练套路

Pytorch完整的模型训练套路 文章目录 Pytorch完整的模型训练套路以CIFAR10为例实践 数据集加载步骤 使用适当的库加载数据集,例如torchvision、TensorFlow的tf.data等。 将数据集分为训练集和测试集,并进行必要的预处理,如归一化、数据增强等…

桌面运维。

Windows运行命令: color 01/02切换字符颜色cls 清屏ipconfig 设备的ip信息ipconfig /all 设备ip的所有信息 破解系统密码: 进PE系统,使用里面的工具破解 vmware workstation安装 网卡 网卡:ncpa.cpl window远程控制 mstsc …

【JavaEE】Spring核心与设计思想(控制反转式程序演示、IoC、DI)

一、什么是Spring? 通常所说的 Spring 指的是 Spring Framework(Spring 框架),它是⼀个开源框架,有着活跃⽽庞⼤的社区,这就是它之所以能⻓久不衰的原因。Spring ⽀持⼴泛的应⽤场景,它可以让 …

人工智能对我们的生活影响有多大

随着科技的飞速发展,人工智能已经渗透到我们生活的方方面面,并且越来越受到人们的关注。从智能语音助手到自动驾驶汽车,从智能家居系统到医疗诊断,人工智能技术正在改变着我们的生活方式。那么,人工智能对我们的生活影…