在深度学习领域,对比学习(Contrastive Learning)作为一种无监督或自监督学习方法,通过构造正例和负例对来学习数据的有效表示,在计算机视觉、自然语言处理等领域取得了显著进展。负例的构造策略直接影响模型对特征空间区分能力的学习效果,是对比学习中的核心设计之一。本文将深入探讨对比学习中负例构造的策略,结合经典方法与最新研究,为读者提供全面的技术解析。

负例在对比学习中的作用

对比学习的核心目标是将相似的样本(正例)在特征空间中拉近,而将不相似的样本(负例)推远。负例的作用主要体现在两个方面:

  1. 提供“反例”:迫使模型学习区分不同样本的语义边界,避免特征坍缩(所有样本映射到同一区域)。
  2. 覆盖数据分布的多样性:使特征空间对不同样本的判别性更强,增强模型的泛化能力。

负例构造的基本原则

有效的负例构造需满足以下核心要求:

  1. 数量充足:足够的负样本能增强对比信号的强度,帮助模型区分不同样本。
  2. 多样性高:负样本需覆盖数据分布的广泛区域,避免模型仅适应局部模式。
  3. 语义一致性:负样本应与正样本在语义上保持一定距离,但避免引入噪声或假负例。

经典负例构造策略

1. SimCLR:基于大批次的负例采样

SimCLR是Google提出的对比学习框架,其核心创新在于通过强数据增强生成高质量正样本对,并利用大批次提供丰富负样本。

  • 正例构造:对同一原始图像应用随机组合的增强操作(如随机裁剪、颜色抖动、高斯模糊、旋转等),生成两个视图作为正样本对。
  • 负例构造:在同一批次内,除正样本对外的其他样本均作为负样本。通过增大训练批次大小(如8192),每个样本的负样本数达到2N-2(N为每批次原始样本数)。
  • 优点:简单高效,无需额外存储或维护负样本库。
  • 缺点:批次过大会导致计算和内存开销剧增,依赖GPU集群支持。

2. MoCo:动态维护负样本队列

针对SimCLR的大批次依赖问题,MoCo提出动态维护一个大规模、多样化的负样本库,解决了大批次不可行的场景(如单卡训练)。

  • 负样本库的构建
    • 队列(Queue):存储前几个批次的键特征(如65536个),作为当前批次的负样本。每次训练时,当前批次的键特征被推入队列,最旧的键特征被弹出,保持队列大小固定。
    • 动量编码器(Momentum Encoder):用于编码负样本(键特征),其参数通过动量更新(缓慢跟随查询编码器的参数变化),避免查询编码器与键编码器同步更新导致的负样本“过拟合”。
  • 优点
    • 负样本库规模大,无需依赖大批次,降低计算开销。
    • 队列动态更新保证了负样本的时效性和多样性,避免特征坍缩。
  • 性能:MoCo在ImageNet线性评估任务中,仅用单卡训练即可达到与SimCLR(需8卡大批次)相近的性能。

3. 硬负样本挖掘(Hard Negative Mining)

在度量学习中,硬负样本(即难以与锚点区分的点)对模型性能提升显著。对比学习也借鉴了这一思想,通过构造信息性更强的负样本来增强模型学习效果。

  • 策略
    • 基于相似性排序:对负样本按与锚点的相似性进行排序,选择相似性最高的负样本作为硬负样本。
    • 基于聚类:利用聚类算法将数据分为多个簇,同一簇内的样本作为潜在正例,不同簇的样本作为负例,通过聚类中心或边界样本构造硬负样本。
  • 优点:硬负样本能提供更强的对比信号,迫使模型学习更精细的特征表示。
  • 挑战:需避免引入假负样本(即实际上与锚点相似的样本),可通过语义信息或人工标注进行过滤。

负例构造的优化方向

1. 避免假负样本

假负样本会误导模型学习,降低性能。可通过以下方法减少假负样本:

  • 语义过滤:利用标签信息或预训练模型(如BERT、ResNet)提取语义特征,过滤掉与锚点语义相似的负样本。
  • 跨域负样本:引入其他数据集的样本作为负样本,扩展特征空间的判别边界。

2. 动态负样本调整

根据模型训练阶段动态调整负样本的难度和数量:

  • 早期训练:使用较多且较简单的负样本,帮助模型快速收敛。
  • 后期训练:逐渐增加硬负样本的比例,提升模型的判别能力。

3. 生成模型辅助

利用生成模型(如GAN、VAE)动态生成高质量的负样本,补充真实数据的不足:

  • 生成负样本:通过生成模型生成与锚点相似但语义不同的样本作为负样本。
  • 对抗训练:将生成模型与对比学习模型进行对抗训练,提升负样本的质量和多样性。

实际应用案例:组合图像检索(CIR)中的负例构造

组合图像检索(CIR)任务中,负例构造对模型性能影响显著。以ACMMM2024论文《利用大模型扩充正负例提升组合图像检索的对比学习性能》为例:

  • 问题:传统CIR方法依赖人工标注的正例三元组(参考图像、修改文本、目标图像),数量有限;负例仅通过批内采样构造,多样性不足。
  • 解决方案
    • 正例扩充:利用多模态大语言模型生成大量新三元组,将正例数量从20k提升至100k。
    • 负例扩充:设计两阶段微调策略,第一阶段使用批内负采样,第二阶段冻结目标编码器,利用整个候选图像集(20k)作为负例,显著提升负例数量和多样性。
  • 效果:在FashionIQ和CIRR数据集上,模型性能提升1%-6%,达到新的SOTA水平。

总结与展望

负例构造是对比学习中的关键环节,直接影响模型对特征空间区分能力的学习效果。从SimCLR的大批次采样到MoCo的动态队列,再到硬负样本挖掘和生成模型辅助,负例构造策略不断优化,推动了对比学习在多个领域的应用。未来,随着无监督学习技术的进一步发展,负例构造策略将更加智能化和自适应,为深度学习模型提供更强大的特征表示能力。

参考文献

  1. SimCLR: A Simple Framework for Contrastive Learning of Visual Representations
  2. Momentum Contrast for Unsupervised Visual Representation Learning
  3. Contrastive Learning With Hard Negative Samples
  4. ACMMM2024'北航|利用大模型扩充正负例提升组合图像检索的对比学习性能
Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐