对比损失:从候选集合识别正样本#
TL;DR#
本页内容7 个部分
1. 背景与问题#
有些任务没有固定类别标签,却能知道哪些样本应匹配,例如同一图像的两个增强视图,或匹配的图文。只拉近正样本可能让所有表征变成相同值;对比目标把正样本放进候选集合,要求模型从候选中识别它。
2. 目标与定义#
给定 anchor 表征 、正样本 和 个负样本 。相似度记为 ,例如非零向量的余弦相似度;温度为 。InfoNCE 将候选识别写成分类:
分母同时包含正样本和负样本。候选可来自当前 batch、队列或其他采样方式;队列不是定义的必要条件。[1]
3. 方法与推导#
3.1 相似度如何获得梯度#
把每个候选的相似度记为 ,softmax 候选概率为 ,正样本索引为 。它就是以 为 logit 的交叉熵,因而:
正样本的梯度为负,梯度下降提高相似度;负样本梯度为正,降低相似度。当前概率较大的负样本获得较大梯度,但模型表征间共享参数,实际相似度变化还受其他项影响。
3.2 温度与 batch 内候选改变什么#
减小温度通常让分布更尖锐,同时放大梯度式中的 ,效果取决于相似度差与负样本。CLIP 初始化 ,学习的参数是逆温度的 log,而不是把温度初始化为 。[2]
SimCLR 的 NT-Xent 使用 个原样本各生成两个视图。每个 anchor 排除自身,以另一视图为正样本,其余 个视图为负样本;对 个有向正配对平均,即得到 batch 目标。[1]
4. 计算过程#
设一个正样本和两个负样本,相似度为 ,温度 。除温度后的 logits 为 ,减最大值后权重为 :
| 候选 | 概率 | 相似度梯度 |
|---|---|---|
| 正样本 | 0.843795 | |
| 负样本一 | 0.114195 | 0.570976 |
| 负样本二 | 0.042010 | 0.210050 |
损失为 。更相似的负样本一分到较大排斥梯度;这完整连接了候选、概率、损失和更新信号。
5. 比较与边界#
| 目标 | 比较对象 | 产生信号的方式 |
|---|---|---|
| InfoNCE / NT-Xent | 正样本与候选集合 | softmax 概率与标签之差 |
| Triplet | anchor、正样本、负样本三元组 | 距离差未满足 margin 时产生 hinge 信号 |
Triplet 的典型形式为 ,其中 为间隔;它不与只含两个候选的 softmax 严格等价。[3]
负样本中可能包含语义上应匹配的样本,采样与标注会改变目标。更多负样本或更小温度都不是无条件改进。
参考资料#