首页 > 教程攻略 > ai资讯 >深度学习+度量学习的综述

深度学习+度量学习的综述

来源:互联网 时间:2026-08-04 14:24:59

1 介绍

机器学习这几年,已经渗透到了我们生活的方方面面,从刷脸支付到医疗诊断,它正为各种复杂问题和海量数据提供着高效的解决方案。简单来说,机器学习算法能从数据中学习,进而生成分类模型。不过,每个数据集都有自身的特性,要想准确分类,就必须找到能有效区分不同类别的关键特征。我们常用的算法包括k最近邻、支持向量机和朴素贝叶斯分类器等,但千万注意,特征加权和数据转换这些细节至关重要。

这就引出了我们今天要聊的核心——度量学习(Metric Learning)。它是机器学习领域的一个重要分支,专注于学习样本之间的相似性或距离度量。在很多需要比较和区分样本的任务中,尤其是那些像人脸识别、信息检索这类应用,度量学习扮演着关键角色。传统的机器学习方法曾一度受限于数据处理能力,需要依赖繁琐的特征工程,比如数据预处理和手工提取特征,这往往需要深厚的领域知识。深度学习则不然,它能直接在分类的框架下学习更抽象、更高层的数据表示。不过,深度学习也有自己的短板:对数据量要求大,小样本下效果往往不佳,而且训练时间也比较长。好在NVIDIA推出了cuDNN这样的GPU加速库,许多深度学习框架也随之发展起来,大大缓解了计算压力。

更关键的是,两者的结合——深度度量学习,带来了全新的可能。它基于样本相似性原理,通过深度网络自动提取特征,包括那些复杂的非线性结构。如图1所示,网络结构、损失函数和样本选择,是决定深度度量学习成败的三大关键因素。这篇综述,就是想和大家一起探讨一下深度度量学习的意义、它目前面临的挑战,我们会从背景、最新进展以及与深度学习的关系讲起,深入解析深度度量学习的核心问题、样本选择策略和度量损失函数,最后展望一下它的现状和未来的发展方向。

深度学习+度量学习的综述

图1 深度学习与度量学习的结合

2 度量学习

每个数据集在分类和聚类时,都会遇到自己特有的难题。如果没有一个合适的距离度量,很难得到理想的结果。度量学习方法的价值就在这里:它通过分析数据本身,为我们提供一个优化的新度量,从而提升对不同样本的区分能力。它的核心目标就是:让同一类样本之间的距离尽可能小,让不同类样本之间的距离尽可能大。这样一来,不同对象之间就有了更清晰的边界,分类和聚类的效果自然就上去了,就像图1c所展示的那样。

文献中经典的度量学习研究,常常和“马哈拉诺比斯距离”(Mahalanobis Distance)挂钩。假设训练样本X由N个d维向量组成,那么样本xi和xj之间的距离就可以用马哈拉诺比斯距离来计算:

dM(xi, xj) 这个距离度量,必须满足几个基本性质:非负性、不可辨别性(两个相同的点距离为0)、对称性和三角不等式。而核心矩阵M也必须是对称且半正定的,它的特征值或行列式必须大于或等于0。我们可以把它分解一下:

从公式(3)可以看出,W实际上是一个线性变换。也就是说,两个样本在新变换空间里的欧几里得距离,就等于它们在原始空间中的马哈拉诺比斯距离。这种线性变换,正是度量学习最直观的应用基础。更好的数据表示,就意味着更精准的分类和聚类预测。度量学习通过学习一个好的距离度量,为我们提供了更有意义的数据表示。线性的度量学习方法在变换后的数据空间里能提供更灵活约束、提升学习性能,但处理非线性特征时就力不从心了。核方法可以把问题映射到非线性空间来获得更好性能,但又容易过拟合。相比之下,深度度量学习则提供了一个更紧凑、更强大的解决方案,巧妙地克服了线性和非线性方法的局限性。

3 深度度量学习

传统机器学习受限于数据处理能力,依赖特征工程,包括预处理和特征提取,这些都需要相当的专业知识。而深度学习则直接在分类结构中自动学习更高层次的数据表示。但深度学习需要海量数据,在小规模数据集上效果不佳,而且训练时间较长。为了解决计算瓶颈,NVIDIA推出了cuDNN GPU加速库,许多深度学习框架都基于GPU开发,大大加快了计算速度。

数据分类的基本相似性度量包括欧几里得距离、马氏距离、Matusita距离、巴氏距离和KL散度等。但在复杂的数据分类任务中,这些预先设定好的度量能力有限。因此,研究者提出了基于马哈拉诺比斯度量的方法,将数据分类问题转化为传统的度量学习,把数据变换到具有更高判别力的新特征空间。然而,这些方法依然无法充分揭示数据中的非线性结构。深度学习通过引入具有非线性结构的激活函数,有效解决了这个问题。深度学习方法通常侧重于学习一个深层架构,而非在新数据表示空间中重新定义一个距离度量。不过,基于距离的方法在深度学习中正变得越来越受关注。深度度量学习的目标,就是要拉近相似样本的距离,推远不相似样本的距离,这直接对应于样本之间的距离调整。通过这个过程,度量损失函数在深度学习中发挥了巨大作用,让同类样本彼此靠近,异类样本彼此远离(图2)。在对比损失的情况下,MNIST图像数据集上的实验已经证明了这种方法的有效性。

连体网络距离关系

图2 连体网络的距离关系。(a) 期望的三位数和八位数手写数据辨别,(b) Siamese网络应用于三位数和八位数的MNIST数据后的结果

3.1 深度度量学习问题

深度度量学习通过深层架构来学习非线性子空间的特征相似性,并针对具体问题开发出相应的解决方案。它的应用范围相当广泛,包括视频理解、人员重识别、医疗诊断、3D建模、人脸验证与识别、签名验证等领域。

视频理解。

视频理解面临多种挑战,比如视频注释推荐、内容搜索等,这些都可以通过非度量空间寻找解决方案。李等人首先提取音频和视觉特征,然后提出了一种基于三元组学习的深度神经网络嵌入模型,学习基于深度度量学习的度量,从而提升视频监控中的人体定位。这个方法优于其他方法,因为预先定义的距离度量往往不足以应对各种视觉任务。胡等人则使用基于距离度量的方法进行视觉跟踪,展示了在度量空间中工作的优势。

人员重识别。

这是一个非常重要的机器学习问题,目标是在不同摄像头、不同场景下识别出同一个人。传统深度学习方法在这种情况下可能力不从心,因此需要学习合适的距离度量。深度度量学习可以实现输入图像和变换后特征空间之间的端到端学习。例如,一个典型的模型从两层捆绑卷积和最大池化开始,计算交叉输入邻域差异,利用补丁求和属性、交叉补丁属性和softmax函数来判断图像是否属于同一个人。另一项研究中,丁等人改进了三元组生成方案,并优化了梯度下降算法,专门用于三元组损失。

医疗问题。

深度学习在医学图像诊断中应用广泛,像分类、检测、分割和配准等任务都离不开它。深度度量学习算法通过相似性学习来提升数据表示级别,从而更好地区分正常和异常图像。与传统三元组网络不同,ML2损失考虑了嵌入空间的全局结构和重叠标签,为医学图像分析提供了更高级别的数据表示。

3D建模。

深度度量学习在3D形状检索领域表现亮眼。通过共享权重和度量损失函数,无论是图像草图还是3D形状,都能有效提升3D形状检索的效果。基于CNN+Siamese网络的模型,可以在大型数据集上实现高效的3D图像检索,它使用结合相关性和辨别损失的度量损失函数,并且在训练过程中也会对隐藏层应用度量损失。一种新颖的损失函数结合了三重态损失和中心损失,专门用于3D图像检索任务。三元组网络模型则可以检测出3D图像的“风格”,通过比较三元组损失值来评估相似与不相似图像之间的距离。

人脸验证和识别。

深度度量学习在人脸识别和验证方面取得了突破性进展。例如,胡等人提出的分层非线性变换模型,可以揭示人与人之间的亲属关系。FaceNet系统使用在线三元组学习模型来关注欧几里得空间下的人脸相似性,能够同时处理人脸验证、识别和聚类等任务。此外,还有关于面部表情识别和面部年龄估计等研究。

在文本理解和信息检索领域,深度学习的研究也相当广泛。比如,Mueller和Thyagarajan的Siamese网络用于识别语义相似性;贝纳吉巴等人利用回归函数训练网络模型;还有基于依赖关系的Siamese LSTM网络模型。另外,有研究旨在学习句子之间的主题相似性,通过生成弱监督的三元组句子,使用Triplet网络对高质量句子嵌入进行聚类。深度度量学习在音频信号处理领域同样成果斐然,例如使用Triplet和Quadruple网络进行说话人二值化。不同的采样策略和裕度参数对二值化性能有显著影响。值得注意的是,在计算机视觉领域大获成功的半硬负挖掘,在说话人二值化任务中,只有在固定参数和三元组损失的情况下才有效。

深度度量学习的应用版图还在不断扩展,包括音乐相似性、拥挤回归、相似区域搜索、体积图像识别、实例分割、边缘检测、全色锐化等。其高性能表现推动了相关领域的发展。从学术出版物的数量(图3)来看,深度度量学习受到的关注与日俱增。

深度度量学习学术出版物数量

图3 深度度量学习的学术出版物数量

深度度量学习在众多主题上均取得了显著成果(表1),包括图像聚类、图像检索、3D形状检索和语义文本相似性等任务。评估指标非常丰富,包括F1分数、归一化互信息(NMI)、召回率@R(排名精度)、准确率、第一层(FT)、最近邻(NN)、E-measure(E)、第二层(ST)、折扣累积增益(DCG)、平均精度均值(mAP)、皮尔逊相关系数(r)、斯皮尔曼相关系数(ρ)、均方误差(MSE)、等错误率(EER)和最小决策成本函数(MDCF)。

表1 深度度量学习问题的基准数据集比较

(此处保留原文的表1)

3.2 样本选择

深度度量学习的成功,本质上由三个要素决定:信息丰富的输入样本、精心设计的网络模型结构,以及合适的度量损失函数。其中,信息样本的选择对分类和聚类效果至关重要,它直接影响网络的收敛速度和最终成功率。最简单的做法是随机选取正负样本对,用于训练对比损失。但在网络性能达到一定程度后,这种方法会让学习过程陷入停滞。硬负挖掘和三元组网络等方法可以改善网络性能,但简单的三元组样本也可能效果不佳。因此,使用信息量更丰富的三元组样本,往往能训练出更好的模型。

所谓硬负样本,是指那些被模型误判为正样本的负样本;而半硬负挖掘,则是在边界附近寻找负样本,相比硬负样本,它距离锚样本会更远一些。三元组挖掘策略会根据锚点、正样本和负样本之间的距离来选择负样本,如图4所示。值得注意的是,如果负样本离锚点太近,会导致梯度方差过高、信噪比太低,因此建议使用距离加权采样来避免引入噪声。负类挖掘策略则使用每个类的一个样本作为三重网络的负样本,并通过贪婪搜索策略选择多个负样本。

负挖掘示意图

图4 负挖掘示意图

总而言之,即使有了再好的数学模型和网络架构,如果输入的样本缺乏区分度,网络的学习能力也会受到极大限制。我们应该向网络提供有辨别力的训练样本,才能实现更好的学习和表示。将样本选择作为预处理步骤,可以显著提升网络模型的成功率。深度度量学习中的负挖掘研究具有很高的应用价值。选择信息丰富的样本,不仅能避免过拟合,还能加快学习速度、减少计算资源的浪费。这一切做好后,性能的大幅提升就是水到渠成的事了。

3.3 深度度量学习的损失函数

这一节我们来聊聊深度度量学习里用到的各种损失函数,它们的用法和差异。这些函数的核心作用,就是通过调整样本间的相似性来优化最终的特征表示。

Siamese网络最初是为了签名验证而设计的,它基于一个能量模型(Energy-Based Model)的判别学习框架。这个方法把两张相同的图像分别输入到两个共享权重的孪生网络中,通过计算得到一个二进制值,来判断这两张图像是否属于同一类。作为一种度量学习方法,Siamese网络接收成对的图像来训练模型。图像对之间的距离通过损失函数来计算(公式(5))。对比损失(Contrastive loss)的出现让Siamese网络找到了用武之地,也启发了整个深度度量学习领域。Siamese网络可以最大化或最小化样本对之间的距离,从而提升分类性能。共享权重策略确保了网络能从图像中提取有意义的模式,如图5所示,这对神经网络性能有积极影响。Siamese网络和卷积神经网络可以结合,同时从图像像素、颜色和纹理等原始信息中学习相似性。例如,一个深度度量学习模型就可以结合两个Siamese卷积神经网络和马哈拉诺比斯度量来完成行人重识别任务。

Siamese网络和Triplet网络

图5 Siamese网络和Triplet网络

三元组网络(Triplet Network)受Siamese网络启发,但包含三个对象:一个锚样本(Anchor)、一个正样本(Similar)和一个负样本(Different)。这种网络利用欧几里得空间来比较模式识别过程中的不同对象,与度量学习紧密相关。从公式(6)可以看出,三元组损失关注的是同类和异类样本对的相似性,通过比较样本对的相似性来进行分类(图6)。它的优势在于不仅利用了类内和类间的关系,还提供了比Siamese网络更强的区分能力。分层三元组损失通过在线自适应树更新进一步提升了网络性能。此外,角度损失(Angular Loss)是一个新颖的方法,它重点关注三元组中负样本所在点的角度约束,目的是将负样本推离正样本簇的中心,同时让正样本相互靠近,它使用角度作为旋转和尺度不变的度量(公式(8))。四重损失(Quadruple Loss)在每个训练批次中使用四个样本,以获得更好的逼近效果。直方图损失(Histogram Loss)同样使用四元组样本,通过计算正负样本对相似度的直方图来评估,无需调整参数,在人员重识别数据集的实验研究中表现优异。部分损失(Part Loss)则旨在利用不同的身体部位进行评估,将图像划分为五个部分,分别计算每个部分的部分损失值。

损失函数是深度度量学习模型的核心。在嵌入空间中,一对输入样本的新表示会通过一个距离函数来度量,例如,一对输入样本 DW(X1, X2) 的距离为:

其中,GW(X1) 和 GW(X2) 是新表示的输入样本,DW用于计算损失函数中两个输入之间的距离。

用于计算Siamese网络模型中损失函数的 LContrastive 是:

其中Y是标签值,如果输入来自同一类则Y=1,否则Y=0。m是LContrastive中的margin值。

三元组网络有三个输入:锚输入X、与X相似的X_p、与X不同的X_n。LTriplet损失是:

其中 α 是裕度值。

四元网络模型还引入了另一个与X不同的输入X s,它类似于X的正样本X_p。四倍损失 LQuadruple 是:

(公式)

角度损失考虑了样本之间的角度关系。角度损失 LAngular 是:

(公式)

其中 X c 位于X和X_p的中间位置。

传统的深度结构度量学习模型,如Siamese和Triplet网络,常常忽略了训练样本的整体结构信息。深度结构度量学习方法则通过深度网络中的特殊结构化损失,将成对的距离向量提升为成对的距离矩阵,从而充分利用上下文信息。Sohn提出的多类N对损失(N-pair loss)就是为了解决Siamese和Triplet网络收敛速度慢、容易陷入局部最优的问题。N-pair loss的优势在于,它可以同时利用N-1个负类样本来与锚样本进行比较(图6e)。多重相似性损失(Multi-Similarity Loss)则同时考虑了自相似性和相对相似性,让模型能更有效地收集和加权信息丰富的样本对。

度量损失函数对比

图6 各类度量损失函数的对比

在训练阶段开始前,必须为Siamese、Triplet和N-pair等网络准备好训练数据。这个过程需要大量的磁盘空间,而且非常耗时。宋等人提出了一种新的深度度量学习方法,使用聚类损失(Clustering Loss)将样本聚合成一个簇(图6g),同时防止不同的簇相互靠近。里佩尔等人则指出,三元组损失一次只评估一个三元组样本来训练数据集,这减少了网络的学习时间,但容易导致性能不佳、训练不足。因此,他们提出了磁体损失(Magnet Loss),这种损失函数会惩罚簇之间的重叠,并通过评估簇中最近的邻居来分离多个簇。该方法具有局部区分性,并且与优化过程的全局目标一致。混合损失(Hybrid Loss)受三元组损失启发,除了锚点和负样本外,还使用三个正样本和三个负样本来建立样本之间的相似关系。图6h展示了在使用局部邻域时,相似样本如何逼近最近的集群。

表2详细总结了文献中最前沿的损失指标。

表2 损失指标对比

(此处保留原文的表2)

4 讨论

深度度量学习在人脸验证与识别、人员重识别、3D形状检索等领域展现出了强大的实力。从表1可以看出,它对那些“类别多、样本少”的任务效果尤为出色。一个完整的深度度量学习系统,通常由三部分构成:度量损失函数、采样策略和网络结构(如Siamese、Triplet和Quadruple网络)。度量损失函数,比如对比损失、三重损失、四重损失和N对损失,可以增加数据样本的有效规模,但也可能导致训练时间过长、内存消耗过大。硬负挖掘和半硬负挖掘可以提供信息丰富的样本,而正确的采样策略对于模型的快速收敛至关重要。聚类损失作为一种度量函数,其优势在于不需要额外的数据准备步骤。深度度量学习通常在GPU上执行,但某些策略也可以在CPU集群上使用,以处理大批量数据。必须警惕的是,深度度量学习高度依赖数据质量,如果损失函数选择不当,很可能无法实现快速收敛。通常,使用预训练好的网络模型权重来初始化,可以加速嵌入空间的收敛,并学习到更具判别力的特征。

5 结论

深度度量学习是近年来非常热门的研究方向,其核心是学习一个相似性度量,用于计算对象之间的相似或不相似程度。目前,Siamese网络和Triplet网络在图像、视频、文本和音频任务中都表现出高效性。深度度量学习的研究,可以归结为对信息输入样本、网络模型结构和度量损失函数三方面的探索。未来的研究方向可能包括:优化采样策略、寻找共享权重和度量损失函数的最佳组合等。虽然已经取得了不少进展,但这个领域仍有广阔的探索空间,比如如何改进现有方法的缺点,以及如何将局部特征与全局特征更好地结合起来。

参考资料:《Deep Metric Learning: A Survey》