A08 · 第 3 章 · 第二编 自监督目标

对比学习:从配对关系到可迁移表示

从正负样本对、归一化表示与温度缩放推导 InfoNCE 和 NT-Xent,手算相似度、softmax 与损失,并系统讨论批内负例、增强不变性、假负例、表示坍塌、数值实现和线性评价的边界。

报告页面错误
预备知识度量学习、孪生网络与三元组损失熵、互信息与散度正则化、数据增强与早停

本章目标

  1. 从配对采样、编码器、投影头和归一化相似度推导对称 NT-Xent 目标。
  2. 手算一组相似度、温度缩放后的 softmax 概率与单锚点损失。
  3. 判断批内负例、假负例与增强操作分别向模型注入了什么监督。
  4. 用方差、谱、相似度分布和简单基线诊断完全或部分坍塌。
  5. 设计无数据泄漏的冻结线性评价、微调评价与复现协议。
页面阅读位置0% · 仅保存在此浏览器
章节未开始
本册完成进度0/6 章 · 0%
本页目录

配对关系才是监督信号

对比学习不要求每个样本都有人工类别,而是要求训练过程能构造“应相近”和“应区分”的关系。设原始样本为 xx,从随机增强分布中独立抽取两次变换 t,tt,t',得到

xi=t(x),xj=t(x).x_i=t(x),\qquad x_j=t'(x).

这两个视图通常组成正对。来自其他原始样本的视图通常作为负例。编码器 fθf_\theta 先产生用于迁移的表示 h=fθ(x)h=f_\theta(x),投影头 gϕg_\phi 再产生训练对比目标所用的向量 z=gϕ(h)z=g_\phi(h)。两者分开很重要:目标可以在投影空间中删除增强细节,而下游任务仍可读取编码器表示中保留的信息。

正对并不等于“语义相同”的自然事实,而是由采样规则作出的建模承诺。同一照片的两次增强若都保留目标,这个承诺可能合理;若一次裁剪只剩背景,目标就会强迫背景与主体接近。反过来,两个不同文件可能拍摄同一物体、属于同一类别或互为近重复,把它们当作负例也可能注入错误排斥。设计对比学习首先要写清样本单位、配对来源、增强范围和下游需要保留的变化。

归一化把方向与长度分开

常用做法是先作二范数归一化:

ui=zizi2,sik=uiuk.u_i=\frac{z_i}{\lVert z_i\rVert_2},\qquad s_{ik}=u_i^\top u_k.

于是 siks_{ik} 是余弦相似度,范围为 [1,1][-1,1]。归一化阻止模型仅靠不断增大向量范数扩大 logit,使优化主要改变方向关系。实现中必须处理零向量,通常以很小的正数截断分母,并把连续出现的近零范数视为训练故障而不是静默修正。若不归一化,点积同时受角度与长度影响,温度、权重衰减和特征范数会共同改变概率尺度,实验结论不能与归一化版本直接混用。

距离和相似度也不能只靠颜色观察。检查单个锚点时,应列出正例索引、各候选的数值相似度、排名和概率;检查整个批次时,应分别统计正对、随机负对与疑似假负对的分布,并给出样本标识。这样即使图形无法辨色,也能判断模型把谁拉近、把谁推远。

从 softmax 推导 NT-Xent

一个批次含 NN 个原始样本,每个样本产生两个视图,共 2N2N 个表示。对锚点 ii,设它的配对视图为 jj。温度为 τ>0\tau>0 时,单向损失为

i,j=logexp(sij/τ)k=12N1[ki]exp(sik/τ).\ell_{i,j}=-\log \frac{\exp(s_{ij}/\tau)} {\sum_{k=1}^{2N}\mathbf{1}[k\ne i]\exp(s_{ik}/\tau)}.

分母排除锚点自身,却包含唯一正例 jj 和其余 2N22N-2 个负例。把每个视图都依次作为锚点并平均,就得到常见的对称 NT-Xent 形式。它也常被归入 InfoNCE 目标族。命名不如索引重要:漏删对角线会让相似度为一的自身项参与竞争;把配对索引错移一位会训练完全错误的关系;只算一侧则改变每个样本收到的梯度。

该式等价于一个批内分类问题:给定锚点,从其余视图中识别配对视图。降低 τ\tau 会放大相似度差异,使 softmax 更尖锐。若正例已经排第一,较低温度通常提高它的概率;若某个负例比正例更相似,较低温度也会更强地惩罚这个错误。温度不是无条件改善分离度的旋钮,过低会让少数困难项主导梯度,也更放大标注噪声和假负例。

例 1:手算相似度、softmax 与单锚点损失

取已经归一化的锚点 u1=(1,0)u_1=(1,0),正例 u2=(0.8,0.6)u_2=(0.8,0.6),两个负例 u3=(0,1)u_3=(0,1)u4=(1,0)u_4=(-1,0)。三个余弦相似度依次为

s12=0.8,s13=0,s14=1.s_{12}=0.8,\qquad s_{13}=0,\qquad s_{14}=-1.

τ=0.5\tau=0.5 时,logit 为 1.6,0,21.6,0,-2,指数近似为 4.953,1,0.13534.953,1,0.1353。正例概率和损失为

p12=4.9534.953+1+0.13530.8135,1,2=log0.81350.2065.p_{12}=\frac{4.953}{4.953+1+0.1353}\approx0.8135, \qquad \ell_{1,2}=-\log 0.8135\approx0.2065.

τ=1\tau=1 时,指数约为 2.2255,1,0.36792.2255,1,0.3679,正例概率约为 0.61920.6192,损失约为 0.47940.4794。此处降低温度使本来就最高的正例更占优势。若把 u3u_3 换成相似度 0.90.9 的负例,结论会反转:低温会更确信那个负例,损失反而显著增大。

批内负例改变了学习问题

在批内负例方案中,每个锚点的候选数随全局批量而变。扩大批量不仅降低随机梯度方差,还会增加分母中的竞争项,从而改变目标本身。分布式训练若只使用单卡局部表示,不等价于先跨卡汇总表示再构造全局相似度矩阵;复现实验必须说明全局批量、每卡批量、视图数以及跨卡梯度是否可传播。

更多负例也不保证更好。若数据按主体、时间或来源成簇,大批量更容易同时抽到同一语义对象的不同记录。重复网页、同一病人的多次检查、同一视频的相邻帧和同一类别的稀有实例都可能成为假负例。解决方式取决于可用信息:按主体分组采样可避免明显冲突;已知标签可屏蔽同类负例或采用多正例目标;软权重可降低高相似疑似项影响;去重可移除近重复。不能仅因当前模型认为两项相似就一律屏蔽,否则模型会用自身错误选择容易的训练集。

队列或记忆库可以用较小当前批次提供大量候选,但队列中的表示可能由较旧参数产生。应记录入队和出队顺序、队列长度、目标编码器更新方式以及是否停止梯度。陈旧程度越高,候选几何与当前编码器越不一致;这不是普通缓存细节,而是优化目标的一部分。

例 2:一个假负例如何改变概率

锚点与正例相似度为 0.900.90,某个实际同类却被当作负例的样本相似度为 0.880.88,另一个普通负例相似度为 00。令 τ=0.1\tau=0.1,三个 logit 为 9,8.8,09,8.8,0。正例概率近似为

e9e9+e8.8+10.5498,\frac{e^9}{e^9+e^{8.8}+1}\approx0.5498,

对应损失约为 0.5980.598。若移除假负例,只剩相似度为零的负例,正例概率接近 0.99990.9999,损失接近零。梯度因此会强烈推动锚点远离那个实际同类。这个数值不能证明所有高相似负例都应删除;它说明批次身份规则已经进入监督,必须借助主体标识、标签、去重或人工切片判断冲突。

增强定义希望获得的不变性

从同一样本生成两视图,相当于要求表示忽略两次增强之间的差异。随机裁剪可能教会位置和尺度不变性,颜色扰动可能降低对色调的依赖,模糊可能降低对局部高频纹理的依赖。然而这些变化是否无关必须由任务决定。花卉颜色分类不能随意抹去颜色,字符识别中旋转可能把六变成九,病理图像的强裁剪可能删除病灶,方向估计也不能把翻转当成标签不变。

增强组合还可能产生单项看似合理、联合作用却破坏语义的视图。先裁剪再模糊可能让小目标完全消失;图像重采样与压缩可能泄漏增强管线的固定指纹;两个视图若总用不同文件格式,模型甚至可以靠格式判断配对来源。可靠流程要保存增强参数与少量实际视图,按目标大小、类别、来源和极端参数分层检查,同时测试只含背景、替换背景或保留主体的反事实样本。

例 3:为方向任务审查增强合同

任务是从箭头图像的表示预测朝向。亮度微调不改变朝向,可作为正对变化;水平翻转会把向左变为向右,若仍让两视图完全接近,冻结读出器无法同时恢复两个标签;旋转九十度也需要同步更新方向,而不是被当作无关噪声。

可采用两种修订。若只关心“是否为箭头”,翻转和旋转可进入正对增强;若必须预测方向,则限制这些变换,或让表示分为对外观不变的部分与对姿态等变的部分。验收时既比较正对距离,也训练冻结方向读出器,并在未见角度上检查。仅观察预训练损失下降无法判断合同是否正确。

对齐、分散与坍塌

对比目标同时推动正对对齐,并通过分母让不同样本在归一化空间中分散。如果所有表示完全相同,则每个锚点对其余 2N12N-1 项给出相同分数,正例概率为 1/(2N1)1/(2N-1),损失为 log(2N1)\log(2N-1)。在负例丰富、配对正确和优化正常时,这通常不是最优解,因为模型可通过区分样本降低损失。但这不构成任何实现都不会坍塌的保证:批次几乎重复、配对索引错误、表示在归一化前接近零、数值溢出、过强正则或数据捷径都可能产生完全或部分退化。

诊断不能只看平均损失。完全坍塌表现为逐维方差近零和随机样本对相似度都接近一;部分坍塌可能仍有少数方向变化,却只使用很低的有效秩。应记录归一化前范数、逐维标准差、协方差谱、有效秩、正负相似度分布和最近邻组成,并与未训练编码器、常量表示及简单监督基线比较。若训练集正负分离但按相机或站点切分后失效,模型可能学到来源捷径而非期望语义。

温度与维数影响球面上的分布,但不能单独消除错误监督。极低温度会集中处理最相似负例,极高温度会让概率接近均匀;更高维度提供更多分离方向,也可能让模型记住实例。选择应在预先定义的验证协议上进行,并同时报告表示诊断和下游结果。

InfoNCE 的信息解释有前提

在特定联合分布、负样本从边缘分布独立抽取以及评分函数等假设下,InfoNCE 可与互信息下界联系起来。这一理论联系帮助解释为何候选数会影响界,但不能直接把任意批内 NT-Xent 数值称为“样本语义互信息”。同一主体成组采样会破坏独立边缘抽样,有限批次限制可辨认候选,增强又改变了随机变量本身。假负例、重复样本和数据依赖采样都会使朴素解释失效。

即使某个估计下界更高,也不保证下游需要的信息更容易线性读取。模型可能保留实例编号、拍摄设备或背景,从而很好地区分候选,却删除类别、方向或物理量。信息语言应转化为可检验问题:输入和视图随机变量是什么,负例来自哪个分布,评分函数受到什么限制,下游读出器需要什么信息。超出这些前提时,只把损失解释为当前采样任务的交叉熵。

编码器、投影头与线性评价

训练结束后,常见做法是丢弃投影头,在编码器输出 hh 上评价。投影头允许对比损失在一个专用空间满足强不变性;但它并不保证 hh 总优于 zz,因此应预先说明读取哪一层,并避免看到测试结果后再选择。冻结线性评价固定编码器,只训练一个仿射分类器或线性回归器。它测试目标信息是否线性可读,不等于表示包含全部语义,也不等于全量微调能力。

公平协议先按主体或来源划分预训练、下游训练、验证和测试数据,处理近重复污染;再固定输入处理、特征层、标准化、优化器、正则化和训练预算。超参数只用验证集选择,测试集只在方案冻结后运行。至少比较随机初始化编码器、未预训练特征、简单手工特征或监督基线。还可补充最近邻检索、少标签曲线、全量微调、鲁棒性和分布外切片,因为它们回答不同问题。

例 4:区分线性探测与全量微调结论

设同一冻结编码器产生二维表示。训练集两类点分别集中在 (1,0)(-1,0)(1,0)(1,0),验证集也保持该结构。训练线性头 y^=1[wh+b>0]\hat y=\mathbf{1}[w^\top h+b>0],并只用验证集选择正则强度,可以说明类别在该表示中近似线性可读。

若改为同时更新编码器,再取得高准确率,结论只能是预训练参数提供了可微调的初始化;优化过程可能已经重排整个表示。若先在测试集挑选编码器层或正则强度,再报告同一测试分数,就产生选择泄漏。若训练和测试包含同一对象的不同增强,探测器还可能识别对象记忆。三种情况即使最终数字相同,证据含义也不同。

数值实现与复现清单

相似度矩阵的直接计算量约为 O((2N)2d)O((2N)^2d),内存也随候选对数增长。可以分块计算,但必须保持同一分母和配对掩码。为避免指数溢出,应使用 log-sum-exp:先从每行 logit 中减去该行最大值,再计算指数和;混合精度下尤其不能直接对大 logit 求指数。对角线应在 softmax 前以不可选值屏蔽,而不是算完概率后再把自身项清零,因为后者已改变归一化分母。

固定随机种子只解决一部分复现。还需记录数据版本与去重规则、原始样本到两视图的映射、增强顺序和参数分布、批次采样器、全局批量、分布式汇总方式、温度、归一化位置、编码器与投影头结构、优化器、精度模式以及评价协议。若批次中最后一个不完整批被丢弃,候选分布也会改变;若多卡仅有部分进程看到某些类别,局部负例会形成系统偏差。

训练监控至少同时包含损失、正例概率、最难负例相似度、表示范数、逐维方差和有效秩。性能状态要区分数据等待、增强耗时、编码器前向与相似度矩阵开销。发生非有限损失时,保存批次标识和增强参数并停止该次更新,不能吞掉异常继续产生不可追溯的模型。

三个常见误区

第一,“两个视图来自同一文件,所以一定是正确正对”。增强可能删除主体、改变标签或产生管线捷径;来源相同只是构造规则,不是语义证明。

第二,“批量越大,负例越多,表示必然越好”。全局批量改变候选任务,也提高遇到重复项和假负例的概率;收益必须在固定计算预算与分组切片中验证。

第三,“预训练损失更低就证明表示更通用”。模型可能记住实例或背景,温度与候选数也会改变损失尺度。表示质量要由冻结探测、微调、检索、污染检查和坍塌诊断共同判断。

练习

练习 1:手算 NT-Xent
锚点对正例和两个负例的相似度为 0.6,0.2,0.40.6,0.2,-0.4,温度为 0.20.2。计算正例概率与损失。
查看提示
先除以温度得到三个 logit,再分别求指数并用正例指数除以总和。
查看解答
相似度为 0.6、0.2、-0.4 且温度为 0.2 时,logit 为 3、1、-2;正例概率为 e3/(e3+e1+e2)e^3/(e^3+e^1+e^-2),约为 0.8757,损失约为 0.1327。分母不含锚点自身。
练习 2:比较温度
解释为什么降低温度既可能降低损失,也可能放大假负例伤害。
查看提示
分别考虑正例排第一与困难负例排第一,温度降低会放大哪一个差值。
查看解答
正例排第一时,降低温度通常提高其 softmax 概率;困难负例排第一时,降低温度会更确信错误候选并增大损失。温度还会改变梯度集中程度,不能脱离相似度排序评价。
练习 3:审计假负例
为视频帧数据设计一个假负例审计方案。
查看提示
先寻找主体、时间、地点或内容哈希能够识别的重复关系。
查看解答
按主体和近重复哈希分组,统计同组样本进入同批却被当负例的比例;人工检查高相似负例切片;比较屏蔽已知同组项前后的损失、邻居组成和下游评价。不能仅凭模型相似度自动删除。
练习 4:选择增强
方向识别任务能否直接使用翻转、旋转、强裁剪和亮度扰动?
查看提示
逐项判断变换后下游标签、目标可见性和坐标语义是否保持。
查看解答
亮度小扰动可近似保持方向;水平翻转与旋转会改变方向标签;强裁剪可能删除箭头。应限制改变标签的变换,或同步更新标签并学习等变表示,同时保存实际视图做切片检查。
练习 5:识别坍塌
列出能发现完全坍塌和部分坍塌的最小数值报告。
查看提示
把完全常量、只使用一个方向与正常多方向变化分开。
查看解答
检查归一化前范数、逐维方差、协方差特征值和有效秩,再比较正对、随机负对相似度与最近邻组成。完全坍塌各维方差近零,部分坍塌只剩少量非零谱方向;损失本身不足以区分。
练习 6:设计线性评价
写出一个不会把全量微调误称为线性探测的评价协议。
查看提示
先冻结编码器,再固定特征层、数据划分、线性头和验证选择预算。
查看解答
按主体去重并划分数据,冻结编码器,从预先指定层提取特征,只训练仿射头;正则和学习率在验证集选择,测试集一次使用。报告随机编码器与简单基线,并把全量微调作为不同协议单列。

关系与资源

论文 · 2020

A Simple Framework for Contrastive Learning of Visual Representations

Ting Chen, Simon Kornblith, Mohammad Norouzi, Geoffrey Hinton

用于核对对比学习目标、增强选择、负样本规模以及表示评估的实证边界。

打开官方来源