对比学习:用正对与负对塑造表示空间
从 InfoNCE、温度与梯度方向,到增强不变性、大批量、假负样本、表示坍缩和迁移验收。
- 定义下游语义与不变性
- 构造正对和候选负对
- 编码归一化并计算相似度
- InfoNCE 聚焦困难候选
- 监控假负、捷径和坍缩
- 用迁移与反事实测试验收
1训练信号是一张“谁与谁相同”的关系表直觉
对比学习并不需要先知道“鞋”“汽车”这样的类别名称,但它必须知道哪些视图应被视为同一个对象。训练数据的构造规则承担了这个角色:从同一个原始样本生成两种视图,把它们标为正对;把来自其他样本的视图作为负对。这样,每个训练批次都形成了一张隐式的关系表——它不回答样本属于什么类别,只回答“谁应靠近、谁应远离”。
一张增强后的视图先输入编码器 f,得到表示 z=f(view)。z 是希望留给下游任务使用的特征。随后,投影头 g 把 z 映射到对比损失实际计算的空间,得到 g(z)。训练时,相似度比较和拉近、推远发生在投影空间中;训练信号再经由 g 反向传到 f,更新编码器。把表示空间和损失空间分开,意味着下游可以使用投影前的 z,而不必直接使用为对比目标专门塑造的投影结果。
以鞋图 A 为锚点,A⁺ 是由 A 裁剪得到的另一视图,因此 A 与 A⁺ 构成正对;另一双鞋 B 和汽车 C 都来自其他样本,因此按当前构造规则被当作负对。它们与 A 的余弦相似度依次为 0.8、0.6、0.1,温度 τ=0.2。0.8 表示正视图已经较接近锚点,0.6 表示 B 虽被标成负样本,却仍与锚点相当相似,0.1 则表示汽车 C 已明显远离。损失据此提高 A 与 A⁺ 的相对相似度,并降低其他候选相对于正样本的竞争力。
因此,模型学到什么,不只取决于编码器结构,还取决于这张关系表如何构造。正对规定了模型应忽略哪些视图差异,负对规定了哪些样本关系要被区分。这里的“正”“负”是训练规则给出的关系标签,不等同于真实语义类别:B 虽然也是鞋,仍会因为来自另一原始样本而被当作负对。这一边界决定了对比目标能提供的监督,也提醒我们不能把由样本身份构造的关系直接解释成完整的类别语义。
2InfoNCE 让一个正样本与整组候选竞争公式
InfoNCE 把表示学习转化为一个随锚点临时建立的分类问题:给定锚点 i,把它当作查询,在一组候选向量中识别唯一的正视图。候选集合同时包含正对和负对,因此“类别”不是固定的语义标签,而是当前候选中哪一个与锚点构成正对。
锚点 i 的损失为:
ℓᵢ = −log[exp(sim(zᵢ, zᵢ⁺) / τ) / Σⱼ∈candidates exp(sim(zᵢ, zⱼ) / τ)]
其中,zᵢ 是锚点向量,zᵢ⁺ 是与它对应的正视图向量;j 遍历候选集合,zⱼ 既可能是正样本,也可能是负样本。sim(zᵢ, zⱼ) 衡量锚点与候选的相似程度,τ 用来缩放相似度。每个缩放后的相似度 sim(zᵢ, zⱼ)/τ 都是一个 logit,exp 把它转换为正值,分母中的求和再把全部候选归一化。由此,分式可以解释为模型分配给正确正样本的 softmax 概率,而 ℓᵢ 就是这个概率的负对数。
这条公式形成了清晰的因果链:正对相似度升高 → 正对 logit 增大 → 正对在分母全部候选中的概率份额提高 → 负对数损失下降。反向传播因此会拉高正对 logit。与此同时,每个负对受到多大推力取决于它当前的 softmax 概率:与锚点越相似、概率越高的负对,对损失影响越大;已经很不相似、概率接近零的负对,影响则较弱。分母必须包含正对,因为归一化比较的是“正确候选相对于所有候选”的份额,而不是孤立地最大化一个相似度。
如果直接用未归一化向量计算相似度,模型可能通过放大向量范数来增大 logit,而不是真正改善向量方向所表达的关系。通常先归一化向量,使相似度主要反映方向上的接近程度,从而避免仅靠增大范数降低损失。InfoNCE 的结果应解释为正样本在当前候选集合中的相对识别概率;它优化的是候选间的相对排序与间隔,不是脱离候选集合的绝对相似度。
3完整手算:相似鞋比汽车贡献更大梯度逐步演算
沿用锚点鞋图 A:A⁺ 是它的正视图,另一双鞋 B 和汽车 C 是负候选。三者与 A 的余弦相似度依次为 [0.8, 0.6, 0.1],温度 τ=0.2。InfoNCE 先把相似度除以温度,得到 logits:
[0.8/0.2, 0.6/0.2, 0.1/0.2] = [4, 3, 0.5]
再对每个 logit 取指数:
[exp(4), exp(3), exp(0.5)] ≈ [54.60, 20.09, 1.65]
这些指数分数的总和为:
54.60 + 20.09 + 1.65 = 76.34
因此,正对 A⁺ 获得的 softmax 概率是:
p⁺ = 54.60 / 76.34 ≈ 0.715
锚点 A 的损失是正对概率的负对数:
ℓ = −log(0.715) ≈ 0.335
这个数值表示:在 A⁺、B、C 三个候选共同竞争时,模型给正确候选 A⁺ 分配了约 71.5% 的概率。损失仍大于零,是因为另外两个候选,尤其是相似度较高的 B,仍占据了一部分概率质量。
| 候选 | 与 A 的关系 | 相似度 | softmax 概率 | 训练作用 |
|---|---|---|---|---|
| A⁺ | 正对 | 0.8 | 0.715 | 继续拉近 |
| B | 负样本鞋 | 0.6 | 0.263 | 强力推远 |
| C | 负样本汽车 | 0.1 | 0.022 | 推远梯度很小 |
交叉熵对负候选 logit 的导数等于该候选当前的 softmax 概率。因此,B 对应的导数为 0.263,而 C 只有 0.022;B 带来的推远信号约是 C 的 0.263/0.022 倍。原因不是模型预先知道 B 更重要,而是 B 与锚点更相似,经过 softmax 后占据了更多错误概率。汽车 C 已经容易区分,继续推远它对降低损失帮助有限;鞋 B 才是当前更难的竞争者。
这种梯度分配是否符合任务目标,取决于“不同实例就应分开”的关系假设。若目标是实例检索,另一双鞋 B 是需要区分的困难负样本,强力推远是合理的;若目标是学习鞋类语义,B 与 A 可能本应接近,此时它就是假负样本。相同的 0.335 损失和 0.263 梯度,在不同目标下可能代表有效训练,也可能代表对语义结构的破坏。
| 候选 | 相似度 | softmax概率 | 训练作用 |
|---|---|---|---|
| A⁺ 正对 | 0.8 | 0.715 | 继续拉近 |
| B 鞋 | 0.6 | 0.263 | 强力推远 |
| C 汽车 | 0.1 | 0.022 | 梯度很小 |
4温度控制模型关注多难的负样本温度
温度 τ 位于相似度与 softmax 之间,候选 j 的 logit 为 sim(zᵢ, zⱼ)/τ。它不改变候选按相似度排列的顺序,却会改变相似度差异进入 softmax 后被放大的程度,从而决定训练信号集中在哪些候选上。
当 τ 变小时,同一组相似度都除以更小的数,相邻候选的 logit 差距随之扩大。softmax 概率会集中到得分最高的少数候选:正样本若最高,就获得更高的识别概率;与锚点很相似的困难负样本也会获得更大的概率和梯度,而容易负样本的概率迅速趋近于零。因果链是:τ 变小 → logit 差距放大 → 概率分布变尖锐 → 梯度更集中于最难区分的候选 → 表示受到更强的局部区分压力。
当 τ 变大时,logit 差距被压缩,softmax 分布更平滑,更多候选共同参与训练。若 τ 过大,各候选概率会接近均匀,相似度高低对概率的影响变弱,模型得到的区分信号也会不足。
| 温度 | 概率分布 | 主要作用 | 主要风险 |
|---|---|---|---|
| 较小 | 尖锐,集中于最高分候选 | 聚焦困难负样本,强化区分 | 对错配和假负样本敏感,梯度可能不稳 |
| 较大 | 平滑,多候选共同作用 | 分散单个候选的影响 | 区分压力不足,训练信号偏弱 |
较小的 τ 并不天然更好。若最高分负候选其实是错配,或它与锚点在目标语义上本应相近,尖锐的 softmax 会把大量梯度集中到这个错误关系上,猛烈推开本应接近的样本。温度因此同时控制“关注多难的负样本”和“放大多少数据噪声”。
τ 可以固定,也可以学习,但不能脱离训练配置单独选择。batch 决定候选集合及困难负样本出现的机会,相似度归一化决定分数尺度,数据噪声决定高相似负对中有多少错误关系。只有把这三者与温度一起考虑,τ 所代表的尖锐或平滑程度才具有稳定含义。
| τ | 分布 | 风险 |
|---|---|---|
| 较小 | 尖锐,聚焦 hard negatives | 噪声敏感、梯度不稳 |
| 较大 | 平滑,多候选共同作用 | 区分压力不足 |
5原创图:增强与采样共同雕刻空间可视化
对比损失看到的不是样本的真实类别,而是增强与采样共同构造出的关系。增强从同一原始样本产生正视图,决定哪个点应向锚点靠近;采样把其他样本放入候选集合,决定哪些点应被推远。两种规则叠加后,才形成表示空间中的实际移动方向。
简单负样本 C ← 锚点 A → 正样本 A⁺ 小幅推远 │ 拉近 │ 困难负样本 B 强力推远
图中,A 是锚点,A⁺ 是按增强规则得到的正样本。损失会提高 A 与 A⁺ 的相对相似度,因此两者在表示空间中继续靠近。B 与 A 很相似,却按采样关系被标为负样本,是当前更有竞争力的候选;它会获得较强的推远信号。C 已经与 A 相差很远,是简单负样本,对当前损失的影响较小,因而移动也较弱。
这幅图表达的重点不是所有点都以固定距离移动,而是梯度方向和相对强弱由构造关系与当前相似度共同决定:正对被拉近;负对被推远;负对越像锚点,通常越能参与竞争,受到的推远作用也越强。训练持续进行时,这些局部移动累积起来,逐步塑造整个表示空间。
B 的含义不能只凭图中的“困难负样本”标签判断。若下游任务要求区分不同实例,B 与 A 相似但确实应分开,它就是合理的困难负样本;若下游语义要求同类样本聚在一起,B 本应与 A 接近,却因构造规则被推远,它就是错误的假负样本。损失本身无法区分这两种情况,因为它只知道输入给它的正负关系。增强和采样因此不是训练前的附属步骤,而是在直接规定表示空间保留什么、忽略什么以及分开什么。
6增强定义模型应忽略哪些变化不变性
数据增强不是无害的预处理,而是在向模型声明一种不变性。对同一个样本施加变换得到两种视图,并把它们作为正对拉近,相当于要求编码器输出相近的表示。两种视图之间发生了什么变化,模型就会被训练成尽量忽略什么变化。
随机裁剪改变物体在视图中的位置,并可能造成局部缺失。把原图与裁剪图拉近,就是训练模型对位置变化和一定程度的局部缺失保持不变。颜色抖动改变色彩,把抖动前后的视图拉近,就是训练色彩不变性。文本中的回译改变措辞而试图保留含义,把原句与回译句拉近,就是训练措辞不变性。因果链可以写成:选择增强变换 → 生成存在特定差异的正对 → 对比目标拉近两种表示 → 编码器减少对该差异的敏感度。
这种不变性只有在增强改变的因素确实不影响目标语义时才有价值。如果颜色决定食物熟度,颜色抖动可能抹掉判断熟度所需的信息;如果旋转或翻转改变医学方位,强迫变换前后的表示一致就可能压掉方位信号;如果裁剪删掉主体,生成的视图不再表达原样本语义,却仍被当作正对;如果文本改写替换了否定词或实体,所谓正对实际上已经改变含义。此时,训练仍会忠实执行“拉近”指令,但结果是把有用差异当成无关差异消除。
| 领域 | 可能合理的增强 | 可能破坏标签的情况 |
|---|---|---|
| 自然图像 | 轻微裁剪、颜色变化 | 小目标被裁掉 |
| 医学影像 | 有限噪声 | 左右翻转改变侧别 |
| 文本 | 保义改写 | 否定或实体被替换 |
判断增强是否合理,不能只看变换后的样本是否“看起来像”原样本,而要看变换是否保留当前任务所需的语义与标签。增强强度也有边界:轻微变化可能建立有用的不变性,越过语义保持范围后,同一种变换就会制造错误正对。因而,增强策略实质上是对目标语义的假设;表示最终保留什么信息、压掉什么信息,会直接受这个假设约束。
| 领域 | 可能合理 | 可能破坏标签 |
|---|---|---|
| 自然图像 | 轻微裁剪/颜色 | 小目标被裁掉 |
| 医学影像 | 有限噪声 | 左右翻转改变侧别 |
| 文本 | 保义改写 | 否定或实体被替换 |
7大 batch、队列和动量编码器解决的是负样本供给系统
对比损失需要让正样本与一组负样本竞争,因此训练系统必须持续提供足够的负候选。大 batch、跨设备共享和队列都是扩大候选集合的办法,但它们在显存、通信和表示一致性上采用了不同取舍。
SimCLR 直接用大 batch:同一步中编码出的其他样本可以成为负样本。这样候选向量来自当前参数下的同一次计算,坐标一致,但 batch 越大,占用的显存和计算资源也越多。跨设备 all-gather 可以汇集各设备上的向量,让每个查询共享更多负样本,却会增加设备间通信。
MoCo 不要求把所有负样本同时放进一个超大 batch。它把历史步骤生成的 key 保存在队列中;当前查询到来时,既可与当前正 key 比较,也可把队列中的历史 key 当作负候选。队列把负样本的产生时间与使用时间分开,从而用跨步骤积累代替单步超大 batch。
问题在于,历史 key 若由快速变化的编码器生成,它们会与当前向量落在不断变化的坐标系中。MoCo 因此用动量编码器生成并更新 key,其参数满足:
θ_key ← mθ_key + (1−m)θ_query
θ_key 是生成队列 key 的编码器参数,θ_query 是当前通过梯度训练的查询编码器参数,m 是接近 1 的动量系数。每一步更新都保留 m 比例的旧 key 参数,只吸收 1−m 比例的新 query 参数。于是 key 编码器变化得更慢,相邻步骤写入队列的向量相对一致,历史 key 与当前 key 才能在较稳定的坐标系中共同参与比较。
这套机制解决的是负样本供给,而不是保证负样本越多效果越好。队列中的 key 太旧时,即使编码器缓慢更新,也可能与当前表示产生漂移;大 batch 扩大候选集合的同时,也会提高把语义相近样本当作负对的机会。实际设计需要同时考虑候选数量、显存、通信、队列新鲜度和假负样本风险。系统吞吐决定能提供怎样的候选集合,而候选集合又直接改变训练的统计目标,两者不能分开优化。
8假负样本会把同类语义撕裂采样边界
假负样本是按训练构造规则被标成负对、但按目标语义本应接近的样本。两张不同的鞋图是否构成假负,不能只由“它们不是同一张图”或“它们都是鞋”决定,而要看表示最终服务什么任务。
如果目标是实例区分,模型需要识别每张图的独特性。两张不同鞋图虽然类别相同,仍可以作为负对;把它们分开有助于区分具体实例。如果目标是类别检索,查询一张鞋图时希望其他鞋也靠近,那么把另一双鞋作为负对就会产生错误监督。损失会忠实地降低二者相似度,训练信号逐步把本应聚集的同类语义撕开。
这说明正负关系不是数据中天然存在的事实,而是面向下游任务的建模决定。构造负对 → 损失把候选视为竞争者 → 高相似负对获得较强推远信号 → 表示空间分离两者。只要第一步的关系标签与任务语义不一致,后续计算即使完全正确,优化方向仍然是错的。
缓解假负样本有多种办法。监督对比可以为一个锚点指定多个同类正样本,避免同标签样本互相排斥;近邻挖掘可把表示中相近的样本视作潜在正对;去偏损失试图修正负样本集合中的错误关系;聚类伪标签可用群组结构构造正负关系;过滤高相似候选则避免把最可疑的候选直接当负对。但这些方法都会引入新的误差来源:近邻可能只是表面相似,聚类和伪标签可能分错,高相似过滤也可能删除真正有价值的困难负样本。因此,它们是在关系错误与新假设之间做取舍,而不是无条件消除问题。
相反方向的错误是假正样本:训练规则认定两者应靠近,但它们的语义已经改变。同一视频的相邻帧可能跨过切镜,同一患者两次检查之间病情可能变化;若仍按时间接近或身份相同把它们作为正对,模型就会被迫忽略这些变化。可靠的关系标签必须同时符合时间范围、对象身份和具体任务语义。正对与负对都应被理解为任务相关假设,而不是对现实关系的永久判定。
9没有负样本的方法仍需防止表示坍缩VICReg
如果训练目标只要求同一原始样本的两种视图彼此接近,那么让所有输入都输出同一个向量,确实能把正对距离降到最低。这个常数解没有保留任何区分样本的信息,却完全满足朴素的一致性损失。“表示坍缩”就是这种现象:不同输入得到近乎相同的表示,模型表面上完成了对齐,实际上失去了可用结构。
没有显式负样本的方法因此仍然需要额外机制排除常数解。VICReg 把防坍缩要求直接写入损失:
L = L_invariance + λL_variance + μL_covariance
L_invariance 是不变性项,用来拉近正对表示;L_variance 是方差项,防止各个表示维度失去变化;L_covariance 是协方差项,用来减少不同维度之间的冗余。λ 和 μ 分别控制方差项与协方差项在总损失中的权重。三项承担不同职责:只做不变性会鼓励所有样本靠拢;维持各维方差要求数据在每个维度上仍有展开;惩罚冗余协方差则避免多个维度重复承载同一种变化。
其因果关系是:正对一致性提供“同一对象的两种视图应接近”的信号,同时方差约束阻止所有样本收缩到常数,协方差约束阻止表示只在少数重复方向上变化。最终输出既要对正视图稳定,又要在不同样本和不同维度之间保留足够结构。
训练损失正常下降不能证明表示没有坍缩,因为模型可能通过牺牲全部样本差异来快速降低一致性项,也可能只有部分维度坍缩。验收时需要同时观察每一维的标准差、协方差谱、有效秩和最近邻多样性。标准差可检查某些维度是否失去变化,协方差谱和有效秩可反映信息是否集中到少数方向,最近邻多样性则检查不同输入是否仍能形成有区别的邻域。只有这些结构信号与损失变化一起正常,才能排除全部或局部坍缩。
10表示必须用目标任务和反事实切片验收评测
低训练损失只能说明模型很好地满足了训练时构造的关系,不能说明表示捕获了目标任务需要的语义。模型可能依赖水印、背景、颜色或拍摄设备等捷径,也可能在总体指标正常时损害少数类。表示质量必须通过目标任务表现和反事实切片共同验收。
冻结编码器做线性探测时,编码器参数保持不变,只在其输出表示上训练一个线性预测器。输入是冻结后的特征,输出是目标标签预测。若目标信息能被简单的线性边界读取,说明这种信息已经较直接地存在于表示中;探测结果差,则表明低对比损失并未自动转化为目标信息的线性可读性。
kNN 或 Recall@k 从邻域角度检查表示。给定查询表示,在特征空间中寻找最近的 k 个样本,观察邻居是否符合目标语义,并单独检查少数类。它们回答的是“相近向量是否真的是任务上应相近的样本”,比只看训练损失更接近检索使用方式。固定预算的少样本微调则限制标注量和训练预算,比较表示在少量监督下适应目标任务的效率;效果越好,说明预训练表示越容易被目标数据利用。
反事实测试用来识别捷径。保持目标语义不变,同时交换背景、颜色、水印或拍摄设备,再观察预测或邻域是否显著改变。若只改水印就改变结果,模型很可能把水印编码成了关键依据。进一步按数据来源、群体和分布外数据切片,可以发现总体平均值掩盖的局部失败:模型可能只在某个来源上有效,或在训练分布之外迅速失效。
t-SNE 和 UMAP 可以把高维表示有损映射到二维或三维,适合直观寻找可疑簇和离群点。它们的输入是高维表示,输出是便于查看的低维坐标,但降维过程会改变原空间距离。因此,图上分开的簇不能单独证明原空间确有同样的簇结构,也不能证明公平性或检索质量;可视化应当用于提出需要验证的问题,再由定量评测和切片测试确认。
不同方法的比较只有在控制条件一致时才可解释。骨干网络、训练数据、增强策略、训练预算和评测协议都必须固定,否则指标差异可能来自资源或设置,而不是表示学习方法本身。可靠结论应同时回答三件事:目标信息能否被读取,邻域是否符合目标语义,以及在反事实变化和不同数据切片下是否仍然稳定。
12把因果链连起来综合
对比学习从任务定义开始,而不是从损失公式开始。首先要明确下游语义:哪些差异应被保留,哪些变化应被忽略。这个选择给出了所需的不变性,也决定了后续关系标签是否合理。若任务需要识别类别,就应保护类别语义;若任务需要区分实例,就应保留实例差异。目标不同,同一对样本可能具有不同关系。
下游语义随后被翻译成训练数据中的正对和候选负对。正对告诉模型哪些视图应靠近,候选负对告诉模型哪些样本需要区分。关系构造一旦出错,损失不会自动修正语义,只会更有效地执行错误的拉近或推远。因此,增强和采样是从任务假设进入优化过程的关键接口。
每个视图经过编码得到向量,向量归一化后计算相似度。归一化限制模型仅靠增大范数改变分数,使相似度更直接地反映表示方向之间的关系。这些相似度成为候选竞争的输入,InfoNCE 再把正样本放到整组候选中识别。与锚点最相似的错误候选占据更高概率,因此获得更强梯度;容易区分的候选影响较小。由此,困难候选成为塑造局部边界的主要力量。
训练过程不能只看损失下降。候选中可能存在语义上本应接近的假负样本,模型也可能利用水印、背景等捷径满足关系目标;如果缺少有效的防坍缩机制,不同输入还可能失去区分度。需要监控的不是单一数字,而是关系是否与任务一致、表示是否保持多样性,以及模型是否依赖不该保留的因素。
最终验收必须回到最初定义的下游语义。迁移评测检查表示是否能被目标任务利用,反事实测试则在保持目标语义的同时改变背景、颜色、水印或设备等因素,观察结果是否稳定。完整因果链因此是:
下游语义与不变性 → 正对和候选负对 → 编码、归一化与相似度 → InfoNCE 聚焦困难候选 → 监控假负、捷径与坍缩 → 迁移和反事实测试验收
只有链条末端的证据与开端的任务定义一致,才能说明表示学到了预期结构。训练损失低只是中间环节运行顺利,不能替代面向目标语义的验证。
- Representation Learning with Contrastive Predictive Coding:InfoNCE 与预测编码
- A Simple Framework for Contrastive Learning of Visual Representations:SimCLR
- Momentum Contrast for Unsupervised Visual Representation Learning:MoCo 动量队列
- Supervised Contrastive Learning:多正样本监督对比
- VICReg:方差—不变性—协方差约束