术语表

对比学习

发现对比学习的威力,这是一种自监督技术,可利用最少的标记数据实现稳健的数据表示。

使用Ultralytics HUB 对YOLO 模型进行简单培训

了解更多

对比学习是机器学习(ML)中的一项强大技术,在自我监督学习(SSL)中尤为突出。它不依赖于精心标注的数据,而是通过教授一个模型来区分相似和不相似的数据点,从而学习有意义的表征。其核心思想很简单:在嵌入空间中将 "相似 "示例的表征拉近,同时将 "不相似 "示例的表征推远。这种方法可以让模型从大量未标记的数据中学习丰富的特征,然后通过微调使其适用于各种下游任务。

对比学习如何发挥作用

这一过程通常包括以下步骤:

  1. 数据增强:从未标明的数据点(如图像)开始。为该数据点创建两个或多个增强版本。这些增强版本形成 "正对",因为它们来自同一来源,应被视为相似。常见的数据增强技术包括随机裁剪、颜色抖动、旋转或添加噪音。
  2. 负采样:从数据集中(或当前批次)选择与原始数据点不同的其他数据点。这些数据点与原始数据点的增强数据形成 "负对"。
  3. 编码:将正样本和负样本通过编码器神经网络 (NN),通常是用于图像的卷积神经网络 (CNN),或用于文本或图像的变换器(视觉变换器 (ViT))。该网络将输入数据转换为低维表示,即嵌入
  4. 损失计算:应用对比损失函数,如 InfoNCE(噪声对比估计)或三重损失。该函数根据嵌入式之间的距离计算分数。它鼓励正向数据对的嵌入式数据接近(低距离/高相似性),而反向数据对的嵌入式数据相距甚远(高距离/低相似性)。
  5. 优化:使用随机梯度下降(SGD)亚当(Adam 等优化算法,根据计算出的损失更新编码器权重,通过反向传播迭代改进所学表征的质量。

对比学习与相关术语

对比学习与其他 ML 范式不同:

  • 监督学习要求每个数据点都有明确的标签(如 "猫"、"狗")。对比学习主要使用无标签数据,通过正负配对产生自己的监督信号。
  • 无监督学习(聚类) K-Means等方法根据固有结构对数据进行分组。对比学习明确地训练一个模型,以创建一个表示空间,其中的相似性是由正/负对定义的,重点是学习判别特征。
  • 生成模型 GANs扩散模型等模型通过学习生成与训练数据相似的新数据。对比学习侧重于学习判别表征,而不是生成数据。

实际应用

对比学习擅长学习能很好地迁移到其他任务中的表征:

  • 计算机视觉预训练: SimCLRMoCo等模型在大型无标记图像数据集(如ImageNet)上进行预训练。当针对图像分类物体检测等任务对模型进行微调时,学习到的特征会大大提高性能。 Ultralytics YOLO11语义分割。例如,在一般图像上使用对比学习预训练的模型,可以有效地针对医疗图像分析卫星图像分析等标注数据较少的专业任务进行微调。
  • 自然语言处理(NLP):用于学习高质量的句子或文档嵌入。例如,可以训练模型来识别描述同一概念的两个不同措辞的句子(正对)应具有相似的嵌入,而含义不相关的句子(负对)应具有不同的嵌入。这对于语义搜索问题解答和文本聚类非常有用。CLIP模型特别使用对比学习来连接文本和图像表征。
  • 推荐系统基于交互模式学习用户和项目的嵌入。
  • 异常检测通过学习正常数据紧密聚类的表示方法来识别异常数据点,使异常值更容易被发现。

优势与挑战

好处

  • 减少标签依赖性:利用大量未标记数据,减少了昂贵而耗时的数据标记需求。
  • 鲁棒性表征:与纯粹的监督式方法相比,它通常能学习不受干扰变化影响的特征。
  • 有效的预训练:为特定下游任务的微调提供了绝佳的起点,往往能带来更好的性能,尤其是在标注数据有限的情况下(少量学习)。

挑战:

  • 阴性样本的选择:性能对阴性样本的数量和质量非常敏感。选择翔实的阴性样本至关重要,但也极具挑战性。
  • 增强策略:数据扩增技术的选择在很大程度上影响着模型学习的不变量。
  • 计算成本:通常需要较大的批量规模和大量的计算资源(GPU)才能进行有效的训练,不过目前正在研究如何降低这种成本。Ultralytics HUB等平台有助于管理和训练这些模型。框架,如 PyTorch(官方网站)和 TensorFlow(官方网站)等框架提供了实施对比学习方法的工具。
阅读全部