【深度学习:(Contrastive Learning) 对比学习】深入浅出讲解对比学习

2024-01-04 13:04

本文主要是介绍【深度学习:(Contrastive Learning) 对比学习】深入浅出讲解对比学习,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在这里插入图片描述

对比学习允许模型从未标记的数据中提取有意义的表示。通过利用相似性和不相似性,对比学习使模型能够在潜在空间中将相似的实例紧密地映射在一起,同时将那些不同的实例分开。这种方法已被证明在计算机视觉、自然语言处理 (NLP) 和强化学习等不同领域都是有效的。

在本综合指南中,我们将探讨:

【深度学习:(Contrastive Learning) 对比学习】深入浅出讲解对比学习

    • 什么是对比学习?
      • 监督对比学习(SCL)
      • 自监督对比学习(SSCL)
    • 对比学习是如何运作的?
      • 数据增强
      • 编码器网络
      • 投影网络
      • 对比学习
      • 损失函数
      • 训练与优化
      • 评估与概括
      • 下游任务评估
      • 迁移学习
      • 与基线比较
    • 对比学习中的损失函数
      • 对比损失
      • 三重态损失
      • N 对损耗
      • 信息NCE
      • 逻辑损失
    • 对比学习的实际应用
      • 半监督学习
      • 监督学习
      • 自然语言处理
      • 数据增强
    • 流行的对比学习框架
      • SimCLR
      • MoCo
      • BYOL
      • SwAV
      • Barlow Twins
    • 关键要点

什么是对比学习?

对比学习是一种学习方法,侧重于通过对比正反两方面的实例来提取有意义的表征。它利用的假设是,在学习到的嵌入空间中,相似的实例应靠得更近,而不相似的实例应离得更远。通过将学习作为一项辨别任务,对比学习允许模型捕捉数据中的相关特征和相似性。

监督对比学习(SCL)

监督对比学习(SCL)是对比学习的一个分支,它利用标记数据来明确训练模型以区分相似和不相似的实例。在 SCL 中,模型在数据点对及其标签上进行训练,指示数据点是否相似或不相似。目标是学习一个表示空间,其中相似的实例聚集得更近,而不同的实例则被推开。

一种流行的方法是信息噪声对比估计(InfoNCE)损失函数。 InfoNCE损失在学习的表示空间中最大化正样本之间的一致性并最小化负样本之间的一致性。通过优化此目标,模型学会区分相似和不相似的实例,从而提高下游任务的性能。

我们将在本文后面讨论 InfoNCe 损失以及其他损失。

自监督对比学习(SSCL)

自监督对比学习(SSCL)采用不同的方法,从未标记的数据中学习表示,而不依赖于显式标签。 SSCL 利用借口任务的设计,从未标记的数据创建正负对。这些借口任务经过精心设计,旨在鼓励模型捕获数据中有意义的特征和相似性。

SSCL 中常用的借口任务之一是生成增强视图。这涉及创建同一实例的多个增强版本并将它们视为正对,而来自不同样本的实例则被视为负对。通过训练模型来区分这些对,它可以学习捕获更高级别的语义信息并很好地推广到下游任务。

SSCL 在计算机视觉和自然语言处理等各个领域都取得了令人瞩目的成果。在计算机视觉领域,SSCL 在图像分类、目标检测和图像生成等任务中取得了成功。在自然语言处理中,SSCL已应用于句子表示学习、文本分类和机器翻译等任务。

Supervised Contrastive Learning 监督对比学习
在这里插入图片描述

对比学习是如何运作的?

对比学习已被证明是一种强大的技术,允许模型利用大量未标记数据并提高性能,即使使用有限的标记数据也是如此。对比学习背后的基本思想是鼓励相似的实例在学习的嵌入空间中被映射得更近,同时将不相似的实例推得更远。通过将学习视为一项辨别任务,对比学习允许模型捕获数据中的相关特征和相似性。

现在,让我们深入了解对比学习方法的每个步骤,以更深入地了解它的工作原理。

数据增强

对比学习通常从数据增强开始,这涉及对未标记的数据应用各种转换或扰动以创建不同的实例或增强视图。

数据增强的目标是增加数据的可变性,并将模型暴露给同一实例的不同视角。常见的数据增强技术包括裁剪、翻转、旋转、随机裁剪和颜色变换。通过生成不同的实例,对比学习可确保模型学习捕获相关信息,而不管输入数据的变化如何。

在这里插入图片描述

编码器网络

对比学习的下一步是训练编码器网络。编码器网络将增强实例作为输入,并将它们映射到潜在表示空间,在其中捕获有意义的特征和相似性。编码器网络通常是深度神经网络架构,例如用于图像数据的卷积神经网络(CNN)或用于顺序数据的循环神经网络(RNN)。网络学习从增强实例中提取和编码高级表示,从而有助于在后续步骤中区分相似和不相似的实例。

投影网络

为了进一步细化学习到的表示,采用了投影网络。投影网络获取编码器网络的输出并将其投影到低维空间,通常称为投影或嵌入空间。这个额外的投影步骤有助于增强所学习的表示的辨别能力。通过将表示映射到较低维的空间,投影网络降低了数据的复杂性和冗余,有助于更好地分离相似和不相似的实例。

对比学习

一旦增强实例被编码并投影到嵌入空间中,就会应用对比学习目标。目标是最大化正对(来自同一样本的实例)之间的一致性,并最小化负对(来自不同样本的实例)之间的一致性。这鼓励模型将相似的实例拉得更近,同时将不同的实例推开。实例之间的相似度通常使用距离度量来测量,例如欧几里德距离或余弦相似度。该模型经过训练,可以最小化嵌入空间中正对之间的距离并最大化负对之间的距离。

损失函数

对比学习利用各种损失函数来建立学习过程的目标。这些损失函数在指导模型捕获重要表示并区分相似和不相似实例方面发挥着至关重要的作用。选择合适的损失函数取决于具体的任务要求和数据特征。每个损失函数都旨在促进有效捕获数据中有意义的相似性和差异的表示的学习。在后面的部分中,我们将详细研究这些损失函数。

训练与优化

一旦定义了损失函数,就可以使用大型未标记数据集来训练模型。训练过程涉及迭代更新模型的参数以最小化损失函数。随机梯度下降(SGD)或其变体等优化算法通常用于微调模型的超参数。训练过程通常涉及批量更新,其中一次处理增强实例的子集。

在训练过程中,模型学习捕获数据中的相关特征和相似性。迭代优化过程逐渐细化学习到的表示,从而更好地区分和分离相似和不相似的实例。

评估与概括

评估和泛化是评估学习表征的质量及其在实际应用中的有效性的关键步骤。

下游任务评估

在这里插入图片描述

图像分类、目标检测、图像分割

对比学习成功的最终衡量标准是其在下游任务上的表现。学习到的表示被用作特定任务的输入特征,例如图像分类、对象检测、情感分析或语言翻译。使用适当的指标来评估模型在这些任务上的性能,包括准确性、精确度、召回率、F1 分数或特定于任务的评估标准。下游任务的更高性能表明所学习的表示具有更好的泛化性和实用性。

迁移学习

对比学习支持迁移学习,从一项任务中学到的表示可以应用于相关任务。通过评估表征转移到新任务或数据集的程度来评估泛化能力。如果学习到的表示能够很好地推广到未见过的数据并提高新任务的性能,则表明对比学习在捕获有意义的特征和相似性方面的有效性。

在这里插入图片描述

与基线比较

为了了解对比学习的有效性,有必要将学习到的表示与基线模型或其他最先进的方法进行比较。可以在性能指标、鲁棒性、迁移学习能力或计算效率方面进行比较。这种比较可以深入了解对比学习的附加价值及其相对于其他方法的潜在优势。

了解对比学习的工作原理后,让我们探讨这种学习技术的一个重要方面:损失函数的选择和作用。

对比学习中的损失函数

在对比学习中,采用各种损失函数来定义学习过程的目标。这些损失函数指导模型捕获有意义的表示并区分相似和不相似的实例。通过了解对比学习中使用的不同损失函数,我们可以深入了解它们如何对学习过程做出贡献,并增强模型捕获数据中相关特征和相似性的能力。

对比损失

对比损失是对比学习中的基本损失函数。它的目的是在学习的嵌入空间中最大化正对(来自同一样本的实例)之间的一致性,并最小化负对(来自不同样本的实例)之间的一致性。目标是将相似的实例拉近,同时将不同的实例分开。

对比损失函数通常定义为基于边际的损失,其中实例之间的相似性是使用距离度量来测量的,例如欧几里得距离或余弦相似度。对比损失是通过惩罚嵌入空间中距离太远的正样本和距离太近的负样本来计算的。

对比损失的一种广泛使用的变体是 InfoNCE 损失,我们将很快更详细地讨论它。对比损失在包括计算机视觉和自然语言处理在内的各个领域都显示出有效性,因为它鼓励模型学习能够捕获有意义的相似性和差异的判别性表示。

三重态损失

三元组损失是对比学习中使用的另一种流行的损失函数。它的目的是保留学习的表示空间中实例之间的相对距离。三元组损失涉及形成实例的三元组:锚点实例、正样本(与锚点相似)和负样本(与锚点不同)。目的是确保anchor与正样本之间的距离比anchor与负样本之间的距离小指定的幅度。

在这里插入图片描述
三元组损失背后的直觉是创建一个“三元组约束”,其中锚实例被拉近正样本,同时被推离负样本。通过学习满足三元组约束的表示,模型可以更好地区分相似和不相似的实例。

三元组损失已广泛应用于计算机视觉任务,例如人脸识别和图像检索,其中捕捉细粒度的相似性至关重要。然而,三元组损失可能对三元组的选择很敏感,因为从大型数据集中选择信息丰富的三元组可能具有挑战性并且计算成本昂贵。

N 对损耗

N 对损失是三元组损失的扩展,它考虑给定锚实例的多个正样本和负样本。 N-pair loss 不是将锚实例与单个正样本和负样本进行比较,而是旨在最大化锚实例与所有正实例之间的相似性,同时最小化锚实例与所有负实例之间的相似性。

在这里插入图片描述
N 对损失鼓励模型捕获多个实例之间的细微关系,从而在学习过程中提供更强大的监督。通过同时考虑多个实例,N对损失可以捕获更复杂的模式,并提高学习表示的判别能力。

N对损失已成功用于各种任务,例如细粒度图像识别,其中捕获相似实例之间的细微差异至关重要。它通过利用多个正负实例来缓解与三元组丢失相关的一些挑战,但在处理大型数据集时,它仍然可能对计算要求很高。

信息NCE

信息噪声对比估计(InfoNCE)损失源自噪声对比估计框架。它测量学习嵌入空间中正对和负对之间的相似性。InfoNCE 损失使正对之间的一致性最大化,并使负对之间的一致性最小化。

InfoNCE 损失背后的关键思想是将对比学习问题视为二元分类器。给定一个正对和一组负对,该模型被训练以区分正实例和负实例。实例之间的相似性是使用概率方法(例如 softmax 函数)来衡量的。

InfoNCE 损失通常用于自监督对比学习,其中正对是从同一实例的增强视图中创建的,而负对是使用来自不同样本的实例形成的。通过优化 InfoNCE 损失,该模型学习捕获数据点中有意义的相似性和差异性,从而获得强大的表示。

逻辑损失

逻辑损失,也称为逻辑回归损失或交叉熵损失,是机器学习中广泛使用的损失函数。它已被改编为作为概率损失函数用于对比学习。逻辑损失根据两个实例在嵌入空间中各自的表示来模拟它们相似或不同的可能性。

逻辑损失通常用于对比学习,以估计两个实例属于同一类(相似)或不同类(不同)的概率。通过最大化正对相似的可能性和最小化负对相似的可能性,逻辑损失引导模型进行有效区分。

逻辑损失的概率性使其适用于对复杂关系进行建模和捕获实例之间的细粒度差异。物流损失已成功应用于图像识别、文本分类、推荐系统等多个领域。

这些不同的损失函数提供了不同的方法来优化对比学习目标,并鼓励模型学习在数据点中捕获有意义的相似性和差异性的表示。损失函数的选择取决于任务的具体要求和数据的特征。

通过利用这些目标,对比学习使模型能够学习强大的表示,从而促进在各种机器学习应用中更好地区分和泛化。

对比学习的实际应用

让我们探讨一些对比学习已被证明有效的突出用例:

半监督学习

半监督学习是指使用标记和未标记数据训练模型的学习场景。在许多现实情况下,获取标记数据可能既昂贵又耗时,而未标记数据却很丰富。对比学习在半监督学习中特别有益,因为它允许模型利用大量未标记数据来学习有意义的表示。

通过使用对比学习对未标记数据进行训练,模型可以在标记数据有限时捕获有用的模式并提高性能。对比学习使模型能够学习捕获数据中相关特征和相似性的判别表示。然后可以利用这些学习到的表示来增强下游任务的性能,例如图像分类、对象识别、语音识别等。

监督学习

对比学习在标记数据丰富的传统监督学习场景中也有应用。在监督学习中,模型根据标记数据进行训练以预测或分类新实例。然而,标记数据可能并不总是能够捕获现实世界实例的全部多样性和复杂性,从而导致泛化方面的挑战。

通过利用未标记数据和标记数据,对比学习可以增强学习过程并提高模型的判别能力。未标记的数据提供了额外的信息,并允许模型捕获更稳健的表示。这可以提高各种监督学习任务的性能,例如图像分类、情感分析、推荐系统等。

自然语言处理

对比学习在自然语言处理(NLP)领域显示出了可喜的成果。 NLP 涉及人类语言的处理和理解,对比学习已被应用于增强各种 NLP 任务。

通过从大量未标记的文本数据中学习表示,对比学习使模型能够捕获语义信息和上下文关系。这已应用于句子相似度、文本分类、语言建模、情感分析、机器翻译等任务。

例如,在句子相似性任务中,对比学习允许模型学习捕获句子对之间语义相似性的表示。通过利用对比学习的力量,模型可以更好地理解句子的含义和上下文,从而促进更准确和更有意义的比较。

数据增强

增强涉及对未标记的数据应用各种转换或扰动以创建不同的实例或增强视图。这些增强的视图在对比学习过程中充当正对,使模型能够学习捕获相关特征的鲁棒表示。

对比学习中使用的数据增强技术包括裁剪、翻转、旋转、颜色变换等。通过生成不同的实例,对比学习可确保模型学会捕获相关信息,无论输入数据如何变化。

数据增强在应对数据稀缺和解决标记数据的局限性方面发挥着至关重要的作用。通过对比学习和数据增强有效利用未标记的数据,模型可以学习更通用和更稳健的表示,从而提高各种任务的性能,特别是在计算机视觉领域。

流行的对比学习框架

近年来,几种对比学习框架由于其在学习强大表示方面的有效性而在深度学习中获得了突出的地位。让我们探索一些引起关注的流行对比学习框架:

SimCLR

简单表示对比学习 (SimCLR) 是一种自监督对比学习框架,因其在学习强大表示方面的有效性而获得了广泛认可。它通过利用数据增强、精心设计的对比目标和对称神经网络架构的组合,建立在对比学习的原则之上。

在这里插入图片描述

SimCLR 的核心思想是最大化同一实例的增强视图之间的一致性,同时最小化不同实例的视图之间的一致性。通过这样做,SimCLR 鼓励模型学习捕获数据中有意义的相似点和差异的表示。该框架采用大批量训练方案来促进高效且有效的对比学习。此外,SimCLR 还采用了一种称为“归一化温度尺度交叉熵”(NT-Xent) 损失的特定归一化技术,可增强训练稳定性并提高学习表示的质量。

SimCLR 在计算机视觉、自然语言处理和强化学习等各个领域都表现出了卓越的性能。它在多个基准数据集和任务中优于现有方法,展示了其在不依赖显式标签的情况下学习强大表示的有效性。

MoCo

动量对比(MoCo)是另一个著名的自监督对比学习框架,引起了广泛关注。它引入了负实例动态字典的概念,这有助于模型捕获数据中有意义的特征和相似性。 MoCo 利用动量编码器,逐渐更新负例的表示,以增强模型捕获相关信息的能力。

在这里插入图片描述
该框架最大化正对之间的一致性,同时最小化负对之间的一致性。通过维护负面实例的动态字典,MoCo 为学习表示提供了一组更丰富的对比示例。它在计算机视觉和自然语言处理等多个领域表现出了强大的性能,并在多个基准数据集上取得了最先进的结果。

BYOL

Bootstrap Your Own Latent (BLOY) 是一种自监督对比学习框架,强调目标网络参数的在线更新。它采用一对在线网络和目标网络,目标网络通过在线网络权重的指数移动平均值进行更新。 BYOL 专注于学习表示,而不需要反例。

在这里插入图片描述
该框架最大限度地提高了同一实例的增强视图之间的一致性,同时将相似性估计与负面示例解耦。 BYOL 在计算机视觉和自然语言处理等各个领域都展现了令人印象深刻的性能。它在表示质量方面显示出显着的进步,并在多个基准数据集中取得了最先进的结果。

SwAV

交换增强和视图 (SwAV) 是一种自监督对比学习框架,引入基于聚类的目标来学习表示。它利用小批量中同一图像的多次增强和多个视图来鼓励模型将相似的表示分配给同一实例的增强视图。

通过使用聚类目标,SwAV 旨在识别相似表示的聚类,而不需要显式的类标签。它在各种计算机视觉任务(包括图像分类和目标检测)中显示出了可喜的结果,并且在多个基准数据集上取得了具有竞争力的性能。

Barlow Twins

Barlow Twins 是一种自我监督的对比学习框架,专注于减少潜在表征之间的互相关性。它引入了去相关损失,明确鼓励模型为相似的实例产生不同的表示,从而增强整体判别力。

在这里插入图片描述

通过减少互相关性,Barlow Twins 的目标是在学习的表示中捕获更多独特且信息丰富的特征。该框架在计算机视觉和自然语言处理等各个领域展示了令人印象深刻的性能,并在多个基准数据集中取得了最先进的结果。

通过利用对比学习的原理并结合创新方法,这些框架为计算机视觉、自然语言处理和强化学习等各个领域的进步铺平了道路。

关键要点

  • 对比学习是一种强大的技术,可以从未标记的数据中学习有意义的表示,利用相似性和相异性来映射潜在空间中的实例。
  • 它包括带有标记数据的监督对比学习(SSCL)和带有针对未标记数据的借口任务的自监督对比学习(SCL)。
  • 重要的组件包括数据增强、编码器网络和投影网络,捕获相关特征和相似性。
  • 对比学习中常用的损失函数有对比损失、三重损失、N 对损失、InfoNCE 损失和逻辑损失。
  • 对比学习具有多种应用,例如半监督学习、监督学习、NLP 和数据增强,可提高模型性能和泛化能力。

这篇关于【深度学习:(Contrastive Learning) 对比学习】深入浅出讲解对比学习的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/569416

相关文章

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06

学习hash总结

2014/1/29/   最近刚开始学hash,名字很陌生,但是hash的思想却很熟悉,以前早就做过此类的题,但是不知道这就是hash思想而已,说白了hash就是一个映射,往往灵活利用数组的下标来实现算法,hash的作用:1、判重;2、统计次数;

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd  zadd key [NX | XX] [GT | LT]   [CH] [INCR] score member [score member ...]

【机器学习】高斯过程的基本概念和应用领域以及在python中的实例

引言 高斯过程(Gaussian Process,简称GP)是一种概率模型,用于描述一组随机变量的联合概率分布,其中任何一个有限维度的子集都具有高斯分布 文章目录 引言一、高斯过程1.1 基本定义1.1.1 随机过程1.1.2 高斯分布 1.2 高斯过程的特性1.2.1 联合高斯性1.2.2 均值函数1.2.3 协方差函数(或核函数) 1.3 核函数1.4 高斯过程回归(Gauss

【学习笔记】 陈强-机器学习-Python-Ch15 人工神经网络(1)sklearn

系列文章目录 监督学习:参数方法 【学习笔记】 陈强-机器学习-Python-Ch4 线性回归 【学习笔记】 陈强-机器学习-Python-Ch5 逻辑回归 【课后题练习】 陈强-机器学习-Python-Ch5 逻辑回归(SAheart.csv) 【学习笔记】 陈强-机器学习-Python-Ch6 多项逻辑回归 【学习笔记 及 课后题练习】 陈强-机器学习-Python-Ch7 判别分析 【学

系统架构师考试学习笔记第三篇——架构设计高级知识(20)通信系统架构设计理论与实践

本章知识考点:         第20课时主要学习通信系统架构设计的理论和工作中的实践。根据新版考试大纲,本课时知识点会涉及案例分析题(25分),而在历年考试中,案例题对该部分内容的考查并不多,虽在综合知识选择题目中经常考查,但分值也不高。本课时内容侧重于对知识点的记忆和理解,按照以往的出题规律,通信系统架构设计基础知识点多来源于教材内的基础网络设备、网络架构和教材外最新时事热点技术。本课时知识

计算机毕业设计 大学志愿填报系统 Java+SpringBoot+Vue 前后端分离 文档报告 代码讲解 安装调试

🍊作者:计算机编程-吉哥 🍊简介:专业从事JavaWeb程序开发,微信小程序开发,定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事,生活就是快乐的。 🍊心愿:点赞 👍 收藏 ⭐评论 📝 🍅 文末获取源码联系 👇🏻 精彩专栏推荐订阅 👇🏻 不然下次找不到哟~Java毕业设计项目~热门选题推荐《1000套》 目录 1.技术选型 2.开发工具 3.功能

线性代数|机器学习-P36在图中找聚类

文章目录 1. 常见图结构2. 谱聚类 感觉后面几节课的内容跨越太大,需要补充太多的知识点,教授讲得内容跨越较大,一般一节课的内容是书本上的一章节内容,所以看视频比较吃力,需要先预习课本内容后才能够很好的理解教授讲解的知识点。 1. 常见图结构 假设我们有如下图结构: Adjacency Matrix:行和列表示的是节点的位置,A[i,j]表示的第 i 个节点和第 j 个