Deep Metric Learning 基本概念

Deep Metric Learning

前言,我的研究方向要用到深度度量学习,但是一直以来对于度量学习只有一个模糊的概念。于是想办法把它弄清楚了,在这里将度量学习的基础概念记录在这里,如有不足之处还望批评指正。

度量学习

度量学习(Metric Learning)的主要目的是学习一个距离函数 d ( ⋅ , ⋅ ) : R k × R k ↦ R + d(\cdot ,\cdot ):{{\mathbb{R}}^{k}}\times {{\mathbb{R}}^{k}}\mapsto {{\mathbb{R}}^{+}} d(,):Rk×RkR+ ,该函数将两个 k k k 维的输入向量映射为二者之间的距离。其中输入向量通常是输入图像或图像的特征表示。距离函数的形式为 d ( x , y ) 2 = ( x − y ) T M ( x − y ) d{{(x,y)}^{2}}={{(x-y)}^{T}}M(x-y) d(x,y)2=(xy)TM(xy),其中 M M M是一个半正定矩阵,故该函数可分解为:

d ( x , y ) 2  =  ( x − y ) T L L T ( x − y ) T = ∥ x T L − y T L ∥ 2 (1) d{{(x,y)}^{2}}\text{ = }{{(x-y)}^{T}}L{{L}^{T}}{{(x-y)}^{T}}={{\left\| {{x}^{T}}L-{{y}^{T}}L \right\|}^{2}} \tag{1} d(x,y)2 = (xy)TLLT(xy)T=xTLyTL2(1)

L ∈ R k × d L\in {{\mathbb{R}}^{k\times d}} LRk×d将图像或图像中的特征表示映射至一个 d d d 维的特征空间。在这个特征空间中,语义相似的图像彼此离得很近,而语义不同的图像则彼此离得很远。
具体的,如下图所示,图中不同颜色的符号代表不同类的样本特征,左边的虚线圆代表原始空间,右边的虚线圆代表嵌入空间(Embedding Space),通过度量学习,将原始空间中随机分布的样本特征映射到嵌入空间,且相似样本特征之间的距离大于不同类别样本特征之间的距离。
度量学习

深度度量学习

深度度量学习(Deep Metric Learning)利用了深层架构(例如,CNN)的非线性特征表示能力和度量学习的区分性能力,在各种计算机视觉任务中得到了广泛的应用。这里以卷积神经网络(Convolutional Neural Network, CNN)为例进行说明,下文中提到的深度度量学习中的深层架构指的就是CNN。深度度量学习主要是学习一个形为 ϕ ( ⋅ ) : R k ↦ R h \phi(\cdot):{{\mathbb{R}}^{k}}\mapsto {{\mathbb{R}}^{h}} ϕ():RkRh 的非线性的变换。而这种基于CNN的特征提取器,即 ϕ ( ⋅ ) \phi(\cdot) ϕ(),可以预先在其他任务中进行预训练,然后在度量学习的数据集上进行微调。为了将特征表示映射到 d d d 维的向量空间,通常在CNN特征提取器的末尾添加额外的线性嵌入层。该层的数学表达式如下:
f ( x ) = ϕ ( x ) T W ,   W ∈ R h × d (2) f(x)=\phi {{\text{(}x)}^{T}}W,\text{ }W\in {{\mathbb{R}}^{h\times d}} \tag{2} f(x)=ϕ(x)TW, WRh×d(2)
因此度量学习CNN将会学习一个距离函数 d ( x , y ) 2 = ( ϕ ( x ) − ϕ ( y ) ) T W W T ( ϕ ( x ) − ϕ ( y ) ) d{{(x,y)}^{2}}={{(\phi (x)-\phi (y))}^{T}}W{{W}^{T}}(\phi (x)-\phi (y)) d(x,y)2=(ϕ(x)ϕ(y))TWWT(ϕ(x)ϕ(y)),该函数等价于 ( ϕ ( x ) − ϕ ( y ) ) T M ( ϕ ( x ) − ϕ ( y ) ) {{(\phi (x)-\phi (y))}^{T}}M(\phi (x)-\phi (y)) (ϕ(x)ϕ(y))TM(ϕ(x)ϕ(y))

深度度量学习常见的损失函数

为了同时学习CNN和嵌入层中的所有参数,通常使用基于图像对或三元组的特定的损失函数。

Contrastive Loss

在深度度量学习中最为常用的基于图像对的损失函数是对比损失函数(Contrastive Loss),其数学表达式如下:
J c o n t r a s t i v e = ∑ i , j ℓ i j D 2 ( x i , x j ) + ( 1 − ℓ i j ) h ( α − D ( x i , x j ) ) 2 (3) {{J}_{contrastive}}=\sum\limits_{i,j}{{{\ell }_{ij}}{{D}^{2}}({{x}_{i}},{{x}_{j}})}+(1-{{\ell }_{ij}})h{{(\alpha -D({{x}_{i}},{{x}_{j}}))}^{2}} \tag{3} Jcontrastive=i,jijD2(xi,xj)+(1ij)h(αD(xi,xj))2(3) 其中, ℓ i j ∈    ⁣ ⁣ {  ⁣ ⁣  0 1   ⁣ ⁣ }  ⁣ ⁣   {{\ell }_{ij}}\in \text{ }\!\!\{\!\!\text{ 0}\text{ 1 }\!\!\}\!\!\text{ } ij { 0 1 } 当输入的图像对来自同一类时 ℓ i j {{\ell }_{ij}} ij为1否则为0。 h ( x ) = max ⁡ ( 0 , x ) h(x)=\max (0,x) h(x)=max(0,x), D ( x i , x j ) D({{x}_{i}},{{x}_{j}}) D(xi,xj)代表数据对 ( x i , x j ) ({{x}_{i}},{{x}_{j}}) (xi,xj)之间的欧氏距离。欧氏距离公式如下: D ( x i , x j ) = ∥ x i − x j ∥ 2 (4) D({{x}_{i}},{{x}_{j}})\text{=}{{\left\| {{x}_{i}}-{{x}_{j}} \right\|}_{2}} \tag{4} D(xi,xj)=xixj2(4)

Triplet Loss

而在度量学习中常用的基于三元组的损失函数是三元组损失函数(Triplet Loss)。该损失函数使用三元组数据 ( x a , x p , x n ) ({{x}_{a}},{{x}_{p}},{{x}_{n}}) (xa,xp,xn) 进行训练,其表达式为: J t r i p l e t = ∑ a , p , n h ( D ( x a , x p ) − D ( x a , x n ) + α ) 2 (5) {{J}_{triplet}}={{\sum\limits_{a,p,n}{h(D({{x}_{a}},{{x}_{p}})-D({{x}_{a}},{{x}_{n}})+\alpha )}}^{2}} \tag{5} Jtriplet=a,p,nh(D(xa,xp)D(xa,xn)+α)2(5) 其中,三元组 ( x a , x p , x n ) ({{x}_{a}},{{x}_{p}},{{x}_{n}}) (xa,xp,xn) 是由来自两个不同类别的三个样本所组成,将 x a {{x}_{a}} xa 看做锚点构成正负数据对,正数据对 ( x a , x p ) ({{x}_{a}},{{x}_{p}}) (xa,xp) 来自相同的类标签,而负数据对 ( x a , x n ) ({{x}_{a}},{{x}_{n}}) (xa,xn) 来自不同的类标签。

  • 4
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: 深度度量学习(deep metric learning)是一种深度学习技术,旨在学习数据之间的相似度度量。它可以用于许多应用程序,例如人脸识别、图像检索和推荐系统。通过学习数据之间的相似度度量,深度度量学习可以使相似的数据点更加接近,而不相似的数据点更加远离。这种技术可以提高许多应用程序的准确性和效率。 ### 回答2: Deep metric learning是指在深度学习模型中建立度量函数,用于计算不同数据样本之间的距离和相似度,并且能够在训练过程中不断地优化这个度量函数,以使得相似的样本被拉近,不相似的样本被推远。 在实际应用中,deep metric learning主要用于图像检索、人脸识别、视觉跟踪等领域。通过学习深度度量函数,可以实现对于特定场景下的数据,建立更加准确的相似度度量,提升模型性能。 Deep metric learning的主要挑战是如何构建合适的损失函数,以实现良好的度量学习。通常使用的有对比损失(contrastive loss)、三元组损失(triplet loss)、n-pair损失等。对于不同类型的数据,选择不同的损失函数往往可以取得更好的效果。 除此之外,选取合适的模型架构和实现技巧也非常重要,例如使用卷积神经网络(CNN)进行特征提取、使用欧氏距离或余弦相似度进行度量、设置动态采样策略以处理数据不平衡等。 总之,deep metric learning作为一种建立深度度量函数的技术,具有广泛的应用前景和研究意义,同时也需要在算法、数据、技术等多个方面进行不断的探索和优化。 ### 回答3: 深度度量学习是一种学习如何将多个样本映射到其中一个嵌入空间的技术。通俗来讲,它可以将相似的样本映射到接近的位置,不相似的样本映射到远离的位置。这个技术可以为计算机视觉领域中许多问题提供强力的支持,例如人脸识别、目标识别和图像聚类等问题。 在深度度量学习的技术中,我们通常会使用神经网络来实现样本嵌入的映射。神经网络可以学习到样本之间的相似性和距离度量,它可以通过训练来学习嵌入空间的参数,并且最终能够将样本嵌入到具有良好性能的空间中。 在深度度量学习中最流行的方法是对比损失函数,目的是通过学习网络参数使得相似的样本更加接近,并使不相似的样本更加远离。具体来说,对比损失函数通过比较不同的样本对来构建一个损失函数,这些样本对由相同类别或不同类别的样本组成。 深度度量学习可以概括为三个阶段:训练、验证和测试。在训练阶段,我们通过对神经网络模型进行监督来学习样本嵌入空间和度量。在验证阶段,我们可以通过检查嵌入空间中的样本分布来检查模型的性能和泛化能力。在测试阶段,我们可以使用已学习好的模型来计算未知样本的距离度量并进行比对。 总的来说,深度度量学习技术是一种重要的技术,可以在计算机视觉领域的许多问题中发挥重要的作用。它可以通过学习网络参数,使得相似的样本更聚集,不相似的样本更分散,提高模型的准确性和鲁棒性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值