A08 · 第 2 章 · 第一编 表示与度量

度量学习、孪生网络与间隔损失

从距离、相似度和归一化嵌入出发,推导孪生网络的共享表示、成对对比损失与三元组间隔损失,分析正负采样、困难样本挖掘、类内类间结构、尺度退化,并严格定义检索 Recall@k 与阈值校准边界。

报告页面错误
预备知识表示学习目标、相似度与不变性损失函数正交性

本章目标

  1. 计算欧氏距离、平方距离、点积和余弦相似度,并说明归一化改变的信息。
  2. 写出共享参数的孪生编码流程,区分相似度评分与概率校准。
  3. 手算成对对比损失和三元组间隔损失,判断有效、容易与困难关系。
  4. 设计正负样本及困难样本挖掘规则,识别假负例、标注噪声和采样偏差。
  5. 按查询定义 Recall@k,并将检索排序、验证阈值、开放集拒识和下游语义结论分开。
页面阅读位置0% · 仅保存在此浏览器
章节未开始
本册完成进度0/6 章 · 0%
本页目录

度量学习先定义“相近”的业务含义

设编码器 fθf_\theta 把输入映为 z=fθ(x)Rdz=f_\theta(x)\in\mathbb{R}^d。度量学习使用成对、三元组或集合关系,使匹配样本在所选度量下更近,不匹配样本相隔一定边界。这里的“匹配”必须由任务定义:同一身份、同一商品、同一局部地点或图文配对都可能是正关系,但它们并不等价。

若目标是实例检索,同类别不同实例未必相关;若目标是类别检索,它们可能都算相关。数据表必须记录关系依据、时间范围、未知标签、一个查询可有多少相关项,以及同源近重复是否允许进入图库。没有这些约定,正负样本和 Recall@k 的分母都会含糊。

距离、相似度与排序方向

欧氏距离与平方欧氏距离分别为

d2(u,v)=uv2,d22(u,v)=j(ujvj)2.d_2(u,v)=\lVert u-v\rVert_2,\qquad d_2^2(u,v)=\sum_j(u_j-v_j)^2.

二者给出相同最近邻排序,但进入间隔损失时数值和梯度不同,不能在公式与实现间随意替换。点积 uTvu^\mathsf{T}v 同时受夹角和范数影响;余弦相似度

scos(u,v)=uTvu2v2s_{\cos}(u,v)=\frac{u^\mathsf{T}v}{\lVert u\rVert_2\lVert v\rVert_2}

只比较方向,但零向量处无定义,实际归一化需设置数值下界并监测范数。

对单位向量 u^,v^\hat u,\hat v,有

u^v^22=22u^Tv^.\lVert\hat u-\hat v\rVert_2^2=2-2\hat u^\mathsf{T}\hat v.

因此归一化后的平方欧氏距离与余弦相似度排序等价。归一化消除了范数信息并把表示限制在单位球面,这可防止仅靠放大范数降低某些目标,却也会删除原本可能表示置信度或质量的幅值。

例 1:手算距离、余弦与归一化距离

u=(3,4)u=(3,4)v=(4,3)v=(4,3)。差为 (1,1)(-1,1),所以欧氏距离为 2\sqrt2,平方距离为 22。两者范数均为 55,点积为 2424,余弦相似度为 24/25=0.9624/25=0.96

归一化后 u^=(0.6,0.8)\hat u=(0.6,0.8)v^=(0.8,0.6)\hat v=(0.8,0.6),平方距离为

(0.60.8)2+(0.80.6)2=0.08.(0.6-0.8)^2+(0.8-0.6)^2=0.08.

由恒等式也得 22×0.96=0.082-2\times0.96=0.08。原始平方距离 22 与归一化平方距离 0.080.08 数值不同,说明“使用欧氏距离”还不足以复现实验,必须写明是否先归一化。

距离越小通常表示越相似,相似度越大表示越相似。检索实现若统一转换为分数,应明确是使用 d-d 还是 ss,否则排序方向可能反转。批处理矩阵还要检查轴:查询和图库的得分形状应为查询数乘图库数。

孪生网络共享比较规则

孪生网络对两个输入使用同一个编码器:

zi=fθ(xi),zj=fθ(xj),z_i=f_\theta(x_i),\qquad z_j=f_\theta(x_j),

再计算距离或送入对称匹配头。共享参数保证两个输入处在同一坐标系,并让每个样本的梯度累积到同一组参数。实现中调用两次模块不等于复制两份参数;优化器应只持有一组共享权重。

匹配头若拼接 (zi,zj)(z_i,z_j),交换输入可能改变输出。关系本身若对称,可使用距离、绝对差、逐元素乘积或对两个顺序取一致结果。图像与文本等不同模态常使用两个结构不同但对齐到共同空间的编码器,更准确地说是双塔模型;它不满足“完全共享参数”的经典孪生定义。

例 2:共享参数如何汇总成对梯度

用一维线性编码器 fw(x)=wxf_w(x)=wx,正对输入为 x1=2,x2=1x_1=2,x_2=1,取平方距离损失

L=(fw(2)fw(1))2=(2ww)2=w2.\mathcal{L}=(f_w(2)-f_w(1))^2=(2w-w)^2=w^2.

对共享参数的导数为 2w2w。若 w=3w=3,损失为 99,梯度为 66。从两条分支看,第一分支贡献 2(f1f2)x1=122(f_1-f_2)x_1=12,第二分支贡献 2(f1f2)x2=6-2(f_1-f_2)x_2=-6,累加仍为 66

若误用两份独立参数 w1,w2w_1,w_2,目标变成 (2w1w2)2(2w_1-w_2)^2,模型可以通过不一致坐标缩小损失,不再学习统一比较规则。检查参数对象标识与优化器参数列表比只看网络图更可靠。

成对对比损失把匹配和间隔写在一起

y=1y=1 表示匹配,y=0y=0 表示不匹配,距离为 d0d\ge0,间隔为 m>0m>0。一种成对损失是

Lpair=yd2+(1y)[md]+2,[a]+=max(a,0).\mathcal{L}_{\mathrm{pair}} =y\,d^2+(1-y)[m-d]_+^2, \qquad [a]_+=\max(a,0).

正对总被拉近;负对只在距离小于 mm 时受罚。不同资料可能交换标签约定、使用非平方距离或给两项乘常数,必须以实际公式为准。间隔不是“类别间真实距离”,而是训练中停止推动容易负对的边界。

例 3:手算三个成对损失

取间隔 m=1.5m=1.5。正对距离 d=0.4d=0.4 时,损失为 0.42=0.160.4^2=0.16。负对距离 d=0.9d=0.9 时,损失为 (1.50.9)2=0.36(1.5-0.9)^2=0.36;它过近,仍会被推开。另一个负对距离 d=2.0d=2.0,因为已超过间隔,损失为零。

三对等权平均损失为 (0.16+0.36+0)/30.1733(0.16+0.36+0)/3\approx0.1733。若批量里大量容易负对都为零,平均值会显得很小,却不说明困难查询已解决;应同时记录有效负对比例、正负距离分布和按查询的检索结果。

常量表示使所有正对距离为零,却让所有负对距离也为零,因此在含有效负对和正间隔时会受罚。但若批量没有可靠负对、标签全为正或实现把负项屏蔽,常量解仍可能出现。反方向的尺度退化是无限放大未归一表示,使负对轻易越过间隔;正对项、权重衰减、范数约束和归一化共同决定是否阻止。

三元组损失只比较相对顺序

三元组含锚点 aa、正样本 pp 和负样本 nn。使用平方欧氏距离的一种间隔损失为

Ltri=[d2(a,p)d2(a,n)+m]+.\mathcal{L}_{\mathrm{tri}} =\left[d^2(a,p)-d^2(a,n)+m\right]_+.

它要求负样本至少比正样本远 mm。只要满足边界,该三元组不再提供梯度;这使采样决定了训练看到哪些约束。

例 4:同一锚点的容易负例与困难负例

a=(1,0)a=(1,0)p=(0.8,0.2)p=(0.8,0.2)、间隔 m=0.5m=0.5。正距离平方为

d2(a,p)=0.22+(0.2)2=0.08.d^2(a,p)=0.2^2+(-0.2)^2=0.08.

容易负例 n1=(1,0)n_1=(-1,0) 的距离平方为 44,损失 [0.084+0.5]+=0[0.08-4+0.5]_+=0。困难负例 n2=(0.7,0.1)n_2=(0.7,0.1) 的距离平方为 0.32+(0.1)2=0.100.3^2+(-0.1)^2=0.10,损失为 0.080.10+0.5=0.480.08-0.10+0.5=0.48

第二个负例会产生梯度,但它也最需要核验:若其实与锚点同类或标签含糊,强推开会伤害类内结构。困难程度不是数据正确性的证据。

三元组整体平移不改变距离,统一旋转也不改变欧氏距离,因此嵌入坐标不可唯一辨识。若没有归一化或正则化,多个缩放也可能改变边界满足方式。解释某一维“代表身份”需要额外约束和干预证据。

正负样本决定学到的空间

正样本可按同一实例、同类、时间邻近或人工匹配构造。它决定哪些差异被压缩:把同类全部拉近适合类别检索,却可能删除实例差异;只拉近同一实例可保留实例信息,却未必形成紧凑类别簇。负样本决定边界:随机负例覆盖广但常过易,同批负例高效但受批量组成影响。

所有成对关系随批量平方增长,三元组更多,不能简单枚举全数据。常见策略包括批内最难负例、半困难负例、距离加权采样和跨批缓存。最难样本可能是错标、异常或近重复;缓存中的表示可能过期;跨设备或类别采样会改变训练分布。挖掘规则、候选池和更新频率都应记录。

例 5:一次批内挖掘与假负例检查

一个批量含身份甲的 a1,a2a_1,a_2,身份乙的 b1,b2b_1,b_2,以及未标注样本 uu。对锚点 a1a_1,正样本候选只有 a2a_2;已确认负样本为 b1,b2b_1,b_2。若距离分别为 d(a1,a2)=0.7d(a_1,a_2)=0.7d(a1,b1)=0.2d(a_1,b_1)=0.2d(a1,b2)=1.4d(a_1,b_2)=1.4b1b_1 是最难负例。

训练前先检查 b1b_1 是否因标签错误、同一实体别名或裁剪空图而异常。uu 未确认身份,不能仅因“不在甲标签下”就自动当负例。可在已确认负例中选择 b1b_1,同时限制单个异常反复出现的频率,并记录每个锚点的有效正负数。这样保留困难信号,又不把未知关系伪装成确定监督。

半困难负例通常比正例远但仍未满足间隔,可提供有方向的梯度且不必选择最极端异常。不存在对所有数据最优的挖掘策略,应比较收敛稳定性、假负例比例、类与身份覆盖及验证检索结果。

类内紧凑与类间分离只是两种需求

类别监督常希望类内距离小、类间距离大,但“类”可能包含姿态、质量和子类型。把每类压成单点会妨碍细粒度检索、开放集识别和不确定性表达。可查看类内距离分布、最近异类距离、每类协方差、原型数量与不同子群覆盖,而不是只看二维投影图。

当每类样本很少时,类别中心估计不稳;当类别数很大时,固定间隔未必能在给定维数的单位球面上同时满足所有关系。提高维数、使用多个原型或学习代理点可能有帮助,但每种方法仍需对未见身份和分布偏移评估。

嵌入相近只说明模型在训练监督和选定度量下认为它们相近。背景、设备和时间戳都可能形成捷径。反事实更换背景、按来源分组划分、遮挡目标区域和检查最近邻组成,能检验模型依赖的线索;相似结果不能单独建立语义等价或因果关系。

检索 Recall@k 要按查询定义

给定查询集合 QQ,查询 qq 的图库相关集合为 RqR_q,排序前 kk 项为 Tk(q)T_k(q)。一种常用定义是

Recall@k=1QqQ1 ⁣[Tk(q)Rq],\operatorname{Recall@}k =\frac{1}{|Q^\star|} \sum_{q\in Q^\star} \mathbf{1}\!\left[T_k(q)\cap R_q\ne\varnothing\right],

其中 QQ^\star 只含至少有一个相关图库项的有效查询。它回答“前 kk 是否命中至少一个相关项”,不是所有相关项被找回的比例。另一种逐查询召回可用 TkRq/Rq|T_k\cap R_q|/|R_q|;两者名称可能相同,报告时必须给公式。

若查询本身也在图库,通常要排除自身,否则最近邻可能是同一文件。还要说明同一对象的近重复、多个相关项、无相关项查询、距离并列和宏微平均的处理。排名质量可补充平均精度或首个相关项名次,但不能用不同协议的数字直接比较。

假设三个有效查询的前二结果中,查询一命中、查询二未命中、查询三命中,则“至少一项命中”定义的 Recall@2 为 2/32/3。若查询一有四个相关项而只找回一个,逐查询相关项召回为 1/41/4,说明两个定义回答不同问题。

排序分数不是匹配概率

Recall@k 只依赖排序,不需要一个跨查询统一阈值。验证任务则需根据距离判断是否为同一对象,要在独立验证集选择阈值,并报告误接受、误拒绝或精确率召回率。不同设备、类别和质量可能产生不同分数分布,统一阈值要做分组检查。

余弦相似度位于有限区间,也不是概率。若业务需要概率,可在冻结嵌入与评分协议后,用未参与训练的校准集拟合单调或概率映射,并在独立测试集检查可靠性。换编码器、归一化、图库组成或温度后都可能需要重新校准。检索高 Recall@k 不保证验证阈值良好,反之亦然。

训练与评估的最小审计链

先冻结关系定义和独立实体划分,再确认共享参数与距离方向;记录嵌入范数、正负距离和有效间隔比例;检查挖掘样本及标签质量;用随机编码器、固定特征和监督分类基线比较;最后在图库更新、未知身份、来源偏移和低质量切片上报告检索与验证指标。

若训练损失下降而检索不升,依次检查关系是否与指标一致、批量是否含足够正例、负例是否过易、归一化和距离是否匹配、查询是否泄漏到图库、后处理是否排除了自身。这个信息路径比单纯增大模型更容易定位问题。

练习

练习 1:归一化距离
两个非零向量的余弦相似度为 0.50.5,求归一化后的平方欧氏距离和欧氏距离。
查看提示
先把两个向量除以各自范数,再用二减二倍余弦。
查看解答
单位向量的平方欧氏距离等于二减二倍余弦;余弦为0.5时平方距离为1,欧氏距离为1。归一化后范数差异被删除。
练习 2:成对间隔
按本章成对损失计算三个指定距离,并说明哪个负对有梯度。
查看提示
正对使用距离平方,负对只在距离小于间隔时受罚。
查看解答
间隔2时,正对距离0.5的损失为0.25;负对距离1.2的损失为0.64;负对距离2.5已越过间隔,损失为零。
练习 3:三元组有效性
判断两个负例对应的三元组是否继续贡献梯度。
查看提示
计算正距离减负距离再加间隔,最后与零取大。
查看解答
若平方正距离0.3、平方负距离0.9、间隔0.5,则值为负0.1,损失为零;若负距离降到0.6,损失为0.2,该负例仍违反边界。
练习 4:困难挖掘
为什么全批最相近的非同标签样本不一定是可靠负例?
查看提示
先限制候选为关系已确认的样本,再在其中按距离选取。
查看解答
未知标签不能自动当负例;先按实体和来源核验关系,再从已确认负例选困难或半困难项,限制异常重复并记录每锚点有效关系数。
练习 5:检索定义
按本章公式计算四个查询的 Recall@3,并说明无相关项查询如何处理。
查看提示
逐查询判断前k是否含至少一个相关项,再对有效查询平均。
查看解答
四个有效查询中若前三名分别有命中、未命中、命中、命中,则至少一项命中的Recall@3为四分之三;无相关图库项的查询需按预先协议排除或单独报告。
练习 6:校准边界
为什么高 Recall@k 不能直接给出可信匹配概率?设计后续验证。
查看提示
区分只依赖排序的检索指标与需要跨样本阈值的验证决策。
查看解答
Recall@k不证明分数是概率;应在独立验证集选阈值或拟合校准映射,在测试集报告误接受、误拒绝与可靠性,并按设备、类别和质量检查漂移。

关系与资源

论文 · 2020

A Simple Framework for Contrastive Learning of Visual Representations

Ting Chen, Simon Kornblith, Mohammad Norouzi, Geoffrey Hinton

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

打开官方来源
论文 · 2021

Learning Transferable Visual Models From Natural Language Supervision

Alec Radford, Jong Wook Kim, Chris Hallacy, Aditya Ramesh, Gabriel Goh, Sandhini Agarwal, Girish Sastry, Amanda Askell, Pamela Mishkin, Jack Clark, Gretchen Krueger, Ilya Sutskever

用于核对跨模态对齐、零样本分类、数据构造和评价限制。

打开官方来源