Contrastive Loss/zh

    From Marovi AI
    This page is a translated version of the page Contrastive Loss and the translation is 100% complete.
    Other languages:
    Article
    Topic area representation learning
    Prerequisites Loss function, Embedding, Neural network


    概述

    对比损失是一类训练目标,通过将语义相似的输入的表示相互拉近、将不相似的输入的表示相互推远来塑造一个嵌入空间。对比目标不预测目标标签,而是比较成对(或更大元组)的样本,当相似对距离过远或不相似对距离过近时对模型进行惩罚。Hadsell、Chopra 和 LeCun 在 2006 年为降维任务提出的最初表述,使用了基于欧几里得距离并带固定边界的合页函数。[1]此后该思想已推广为一个内容广泛的工具集——包括三元组损失InfoNCENT-Xent有监督对比损失——支撑着现代的度量学习人脸识别自监督学习系统,例如SimCLRMoCoCLIP

    起源与动机

    Hadsell 等人提出对比损失作为一种学习不变低维映射的方法,无需像主成分分析自编码器那样依赖全局重建目标。给定一个将输入$ x $映射嵌入$ f_\theta(x) \in \mathbb{R}^d $孪生网络,该网络在被标记为相似($ y = 0 $)或不相似($ y = 1 $)的成对样本$ (x_i, x_j) $上进行训练。损失直接塑造嵌入空间中的欧几里得距离,避开了对类别标签的需要,并允许在弱监督信号上进行训练,例如视频中的时间相邻、同一图像的增强或文本中的共现。

    这一视角将表示学习重新表述为一个几何问题:对比学习不问"该输入属于哪一类",而是问"哪些输入应当彼此靠近"。这一转变意义重大,因为获取成对样本远比逐类标注成本低,而所学到的嵌入通过简单的线性探测或最近邻检索就能很好地迁移到下游任务。

    表述

    $ D_{ij} = \|f_\theta(x_i) - f_\theta(x_j)\|_2 $表示两个嵌入之间的欧几里得距离,$ y_{ij} \in \{0, 1\} $为成对样本的标签($ 0 $ = 相似,$ 1 $ = 不相似)。带边界$ m > 0 $的经典对比损失

    $ {\displaystyle \mathcal{L}_{\text{contrastive}}(x_i, x_j) = (1 - y_{ij})\, \tfrac{1}{2} D_{ij}^2 + y_{ij}\, \tfrac{1}{2} \max(0,\, m - D_{ij})^2.} $

    第一项以与平方距离成正比的二次惩罚将相似对拉近。第二项——基于负距离的合页函数——将不相似对推开,但仅推到它们之间至少相距$ m $单位为止;越过边界后,梯度为零,优化器会忽略该对。两项之间的这种不对称性至关重要:若无边界,损失会将不相似对推向无限远,这既会破坏训练稳定性,也会在已经容易区分的负样本上浪费容量

    实际中会出现若干基本形式的变体。一些实现去掉$ \tfrac{1}{2} $系数,直接使用距离而非平方距离,或将损失建立在余弦相似度而非欧几里得距离之上。距离度量的选择很重要:当嵌入经过 L2 归一化时,余弦相似度是标准做法,此时欧几里得距离和余弦距离单调相关,边界则获得了角度间隔的几何解释。

    变体

    现代对比学习以每次损失评估比较两个以上样本的表述为主导,这能产生方差更低的梯度和每批次更强的梯度信号。

    • 三元组损失(Schroff 等,2015,FaceNet)作用于由锚点、正样本和负样本组成的三元组$ (x_a, x_p, x_n) $,损失为$ \max(0,\, D_{ap}^2 - D_{an}^2 + m) $。它隐式地强制相对顺序而非绝对距离,被广泛用于人脸识别和图像检索。[2]
    • InfoNCE(van den Oord 等,2018)将对比学习视为多类分类问题:给定一个锚点和$ K $个候选中的一个正样本,预测哪个是正样本。损失为$ -\log \frac{\exp(s_{ap}/\tau)}{\sum_{k} \exp(s_{ak}/\tau)} $,其中$ s $是相似度分数,$ \tau $温度InfoNCE是锚点与正样本视图之间互信息的一个下界。[3]
    • NT-Xent(归一化温度缩放交叉,Chen 等,2020)是SimCLR的目标函数:在 L2 归一化嵌入上、使用余弦相似度的 InfoNCE 风格损失,将批内其他所有样本都视为负样本。大型批量(4096 或更大)免费提供负样本。[4]
    • 有监督对比损失(Khosla 等,2020)将 NT-Xent 扩展到有监督场景,将批内同类的所有样本都视为正样本,在分类基准上往往优于交叉熵损失[5]
    • N 对损失(Sohn,2016)和提升结构化损失(Oh Song 等,2016)是中间形式,将一个锚点与一个批次内的多个负样本进行比较,早于并预示了 InfoNCE/NT-Xent 系列。

    训练与推理

    使用对比损失进行训练的核心问题是如何构造具有信息量的成对样本。随机负样本通常易于区分,导致梯度为零并浪费算力。有若干策略来解决这一问题:

    • 困难负样本挖掘选择当前模型感到困惑的负样本——那些尽管标签不同但与锚点相似度高的样本。FaceNet 推广了半困难挖掘:选择比正样本更远但仍在边界内的负样本。
    • 内存库与队列(Wu 等,2018;MoCo)跨批次维护一大批负样本嵌入,使负样本数量与批量大小解耦,代价是特征略有过时。
    • 动量编码器(MoCo、BYOL)将负样本编码器作为查询编码器的指数移动平均进行更新,提高了存储特征的一致性。
    • 大批量SimCLR)通过将批内所有样本作为负样本来绕过队列;这需要大量加速器内存,但简化了流水线。

    InfoNCE风格损失中的温度$ \tau $是最敏感的超参数之一。较低的温度($ \tau \approx 0.05 $$ 0.1 $)会使softmax更尖锐,并实际上对困难负样本进行加权;较高的温度产生更平滑的梯度但信号更弱。Wang 和 Liu(2021)将这一权衡分析为一致性与容忍度之间的平衡。

    在推理时,经过对比训练的编码器通常以两种方式使用:作为下游任务的特征提取器,配合一个线性分类头;或者直接用于检索、聚类,或针对参考集合进行零样本匹配。

    与其他目标的比较

    对比损失交叉熵损失的区别在于它不要求固定的标签词表。这正是开放词表模型如CLIP得以实现的原因,在这些模型中"类别"是任意的文本提示。与具有参数化最后一层的 softmax 分类相比,对比头是非参数化的——类别原型是从数据中即时计算得到的——这在标签集合大、动态或无界时具有优势。

    对比目标与噪声对比估计NCE)密切相关,后者通过区分真实数据与噪声样本来估计概率模型。InfoNCE明确了这一联系:它是 NCE 的多类推广,并对互信息给出了下界。

    与非对比的自监督方法相比——如BYOLSimSiamVICReg,它们通过停止梯度或协方差正则化避免使用显式负样本——对比方法在概念上更简单,但对批量大小和负样本质量更为敏感。近期工作(Tian 等,2021)表明这两类方法比看上去更为相似,可以统一在一个信息论框架之下。

    局限性

    对比损失对"相似"和"不相似"的定义较为敏感。当成对样本的标签存在噪声,或数据流形中包含许多被标记为负样本的近似重复样本时,训练效果会下降。在自监督场景下,常用的正样本——同一图像的两次增强——是一种启发式做法,过于激进的增强可能破坏语义区分(例如,颜色抖动会破坏细粒度分类中的物种线索)。

    第二个局限是对负样本数量和质量的依赖。小批量下的NT-Xent表现不佳;MoCo风格的队列增加了工程复杂度;困难负样本挖掘可能将标签噪声放大进训练信号。所有嵌入收敛为单一点的表示坍缩失效模式可以通过边界或InfoNCE的分母得到缓解,但当所有负样本都过于容易时,基于边界的损失仍可能出现问题。

    最后,对比嵌入本身并未经过校准:两个嵌入之间的绝对距离没有概率解释,需要校准相似度的下游任务(例如带置信阈值的检索)通常需要额外的校准步骤。所学空间的几何结构也不是唯一的;嵌入空间的旋转使损失保持不变,这使得跨训练运行的直接比较变得困难。

    参考文献