训练与优化 / 训练目标与正则化 原理笔记入门 3 分钟阅读 查看源文件 ↗

对比损失:从候选集合识别正样本#

TL;DR#

本页内容7 个部分

1. 背景与问题#

有些任务没有固定类别标签,却能知道哪些样本应匹配,例如同一图像的两个增强视图,或匹配的图文。只拉近正样本可能让所有表征变成相同值;对比目标把正样本放进候选集合,要求模型从候选中识别它。

2. 目标与定义#

给定 anchor 表征 zz、正样本 z+z^+ 和 K−1K-1 个负样本 zk−z_k^-。相似度记为 s(z,v)s(z,v),例如非零向量的余弦相似度;温度为 τ>0\tau>0。InfoNCE 将候选识别写成分类:

L=−log⁡exp⁡(s(z,z+)/τ)exp⁡(s(z,z+)/τ)+∑k=1K−1exp⁡(s(z,zk−)/τ).\mathcal L=-\log\frac{\exp(s(z,z^+)/\tau)}{\exp(s(z,z^+)/\tau)+\sum_{k=1}^{K-1}\exp(s(z,z_k^-)/\tau)}.

分母同时包含正样本和负样本。候选可来自当前 batch、队列或其他采样方式;队列不是定义的必要条件。[1]

3. 方法与推导#

3.1 相似度如何获得梯度#

把每个候选的相似度记为 sjs_j,softmax 候选概率为 qjq_j,正样本索引为 ++。它就是以 sj/τs_j/\tau 为 logit 的交叉熵,因而:

∂L∂sj=qj−1{j=+}τ.\frac{\partial\mathcal L}{\partial s_j}=\frac{q_j-\mathbf1\{j=+\}}{\tau}.

正样本的梯度为负,梯度下降提高相似度;负样本梯度为正,降低相似度。当前概率较大的负样本获得较大梯度,但模型表征间共享参数,实际相似度变化还受其他项影响。

3.2 温度与 batch 内候选改变什么#

减小温度通常让分布更尖锐,同时放大梯度式中的 1/τ1/\tau,效果取决于相似度差与负样本。CLIP 初始化 τ=0.07\tau=0.07,学习的参数是逆温度的 log,而不是把温度初始化为 log⁡(1/0.07)\log(1/0.07)。[2]

SimCLR 的 NT-Xent 使用 NN 个原样本各生成两个视图。每个 anchor 排除自身,以另一视图为正样本,其余 2N−22N-2 个视图为负样本;对 2N2N 个有向正配对平均,即得到 batch 目标。[1]

4. 计算过程#

设一个正样本和两个负样本,相似度为 (0.8,0.4,0.2)(0.8,0.4,0.2),温度 τ=0.2\tau=0.2。除温度后的 logits 为 (4,2,1)(4,2,1),减最大值后权重为 (1,e−2,e−3)(1,e^{-2},e^{-3}):

候选 概率 qjq_j 相似度梯度
正样本 0.843795 (0.843795−1)/0.2≈−0.781026(0.843795-1)/0.2\approx-0.781026
负样本一 0.114195 0.570976
负样本二 0.042010 0.210050

损失为 −log⁡0.843795≈0.169846-\log0.843795\approx0.169846。更相似的负样本一分到较大排斥梯度;这完整连接了候选、概率、损失和更新信号。

5. 比较与边界#

目标 比较对象 产生信号的方式
InfoNCE / NT-Xent 正样本与候选集合 softmax 概率与标签之差
Triplet anchor、正样本、负样本三元组 距离差未满足 margin 时产生 hinge 信号

Triplet 的典型形式为 max⁡(0,∥f(a)−f(p)∥22−∥f(a)−f(n)∥22+m)\max(0,\|f(a)-f(p)\|_2^2-\|f(a)-f(n)\|_2^2+m),其中 m>0m>0 为间隔;它不与只含两个候选的 softmax 严格等价。[3]

负样本中可能包含语义上应匹配的样本,采样与标注会改变目标。更多负样本或更小温度都不是无条件改进。

参考资料#

  1. SimCLR(2020). §2:增强视图与 NT-Xent。
  2. CLIP(2021). §2.3 与附录:图文候选分类与可学习温度。
  3. FaceNet(2015). §3:Triplet 目标与采样。

相关阅读路线

完成一次训练更新 ↗