李彦霖作者

Ranked List Loss for Deep Metric Learning | 论文分享

深度度量学习(Deep Metric Learning, DML) 在很多场景中都发挥着重要的作用,一个经典的应用就是人脸识别,Google 的FaceNet模型使用Triplet-Loss刷新了当时人脸识别的记录,近两年基于Softmax改进的Angular-Softmax, Additive Margin Softmax等在人脸识别成功应用的损失函数,都引入了度量学习的思想。

基于深度学习度量学习其发展主要体现在各种不同的Loss Function上。最基本的两种损失函数分别是 Contrastive Loss 和 Triplet-Loss。 Contrastive Loss主要是约束成对数据之间的相似或者不相似。Triplet-Loss 则包括一个锚点(anchor) 、一个正样本和一个负样本,它的目的是使得锚点和正样本的距离尽可能小,与负样本的距离尽可能大。一般来说,Triplet-Loss的效果比Contrastive Loss的效果要好,因为他考虑了正负样本与锚点的距离关系。基于上述的两种损失函数衍生出了很多变形,比如将数据丰富的结构化信息加入到Loss中,而不仅仅局限于二元组或三元组。

Ranking-Motivated Structured Losses

先回顾下目前几种基于排序思想的损失函数。 

Triplet Loss 

其中是三元组的集合,距离使用的是欧氏距离,表示hinge函数。

N-pair-mc 

不同于Triplet Loss使用单个的正负样本,这个损失函数利用了数据之间的结构信息来学习到更有区别性的表示。具体来说,样本由一个正样本和N - 1 个负样本组成,这N - 1 个负样本来自于N - 1个不同的类别,即每个类别1个负样本。

其中是来自N个类别的N个样本,分别表示anchor和对应的正样本,是负样本集合。通过引入N-1个负样本来提升性能。

Lifted Struct 

这个目标函数比N-pair-mc更进一步,提出引入所有的负样本,通过促使锚点与一个正样本的距离尽可能近,与所有的负样本的距离都大于α。 

Proxy-NCA 

这个方法提出的目的是去解决采样的问题。假设W代表着训练集中的一小部分数据,在采样时通过选择与W中距离最近的一个样本u作为代理(proxy), 即:

基于选择的proxy, 使用传统的NCA损失: 

上述几种损失的示意图如下:

上述的损失函数都存在如下的两点局限性:

1. 这些损失函数虽然都提出了加入更多的负样本来获得结构化的信息,但是使用的负样本仅仅是一小部分;
2. 另外这些损失函数没有考虑类内的数据分布,都追求将同一个class压缩到一个点上。

本文基于上述的两个原因,提出了相应的改进措施。

Methodology

首先对一些符号进行说明: 表示训练集,其中每一组元素表示成对的样本与其标签,总共包括C个类别,即表示属于类别c的所有样本,Nc表示相应类别的样本数量。

我们的目标是学习到一个函数f使得正样本对之间的相似度高于负样本之间的相似度。

Pairwise Constraint

为了将正负样本区分开,我们希望负样本之间的距离大于某个阈值α,并且正样本之间的距离小于α-m,即正负样本之间至少有m的间隔。基于此,提出了pairwise margin loss: 

其中当时, ,否则, 距离使用欧式距离。

Ranked List Loss

给定一个anchor , 基于相似度对其他样本进行排序,在这个排序的结果中,有Nc-1 个正样本,用表示。同样地,有个负样本,用表示。

Non-trivial Sample Mining 

对样本进行合适采样可以加快模型的收敛速率和提高模型性能,比如常见的困难样本挖掘。本文使用的采样策略很简单,就是损失函数不为0的样本,具体来说,对于正样本,损失函数不为0意味着它们与anchor之间的距离大于α-m , 类似的,对于负样本,损失函数不为0意味着它们与anchor之间的距离小于α。

Loss-based Negative Examples Weighting 

但是存在一个问题就是负样本的数量通常比较大,并且它们的损失值幅度范围也较大,为了更好的利用它们,作者提出了对负样本进行加权的策略。加权的方式为: 

它基于样本多大程度地违反了pairwise的约束。

Optimisation Objective 

对于每个anchor , 我们希望使得它与正样本集P的距离越近越好,并且与负样本集Nc,i之间存在着m的间隔,同时,我们还希望使得负样本的之间大于边界α。因此我们相当于使得同一类别位于一个半径为α-m大小的超球体内。因此对于正样本我们使用的损失函数为:

对于负样本集,考虑到它的样本数量比较大,因此对每个负样本使用加权的方式:

那么整个的损失函数就是: 

Learning Deep Models Based on RLL

整个算法的流程如下: 

实验

作者在多个数据集上都进行了相关实验,取得了不错的效果。具体可以参考论文的实验部分。

论文链接: https://arxiv.org/abs/1903.03238

极验
极验

极验是全球顶尖的交互安全技术服务商,于2012年在武汉成立。全球首创 “行为式验证技术” ,利用生物特征与人工智能技术解决交互安全问题,为企业抵御恶意攻击防止资产损失提供一站式解决方案。

理论损失函数度量学习人脸识别论文
1
相关数据
深度学习技术

深度学习(deep learning)是机器学习的分支,是一种试图使用包含复杂结构或由多重非线性变换构成的多个处理层对数据进行高层抽象的算法。 深度学习是机器学习中一种基于对数据进行表征学习的算法,至今已有数种深度学习框架,如卷积神经网络和深度置信网络和递归神经网络等已被应用在计算机视觉、语音识别、自然语言处理、音频识别与生物信息学等领域并获取了极好的效果。

收敛技术

在数学,计算机科学和逻辑学中,收敛指的是不同的变换序列在有限的时间内达到一个结论(变换终止),并且得出的结论是独立于达到它的路径(他们是融合的)。 通俗来说,收敛通常是指在训练期间达到的一种状态,即经过一定次数的迭代之后,训练损失和验证损失在每次迭代中的变化都非常小或根本没有变化。也就是说,如果采用当前数据进行额外的训练将无法改进模型,模型即达到收敛状态。在深度学习中,损失值有时会在最终下降之前的多次迭代中保持不变或几乎保持不变,暂时形成收敛的假象。

人脸识别技术

广义的人脸识别实际包括构建人脸识别系统的一系列相关技术,包括人脸图像采集、人脸定位、人脸识别预处理、身份确认以及身份查找等;而狭义的人脸识别特指通过人脸进行身份确认或者身份查找的技术或系统。 人脸识别是一项热门的计算机技术研究领域,它属于生物特征识别技术,是对生物体(一般特指人)本身的生物特征来区分生物体个体。

损失函数技术

在数学优化,统计学,计量经济学,决策理论,机器学习和计算神经科学等领域,损失函数或成本函数是将一或多个变量的一个事件或值映射为可以直观地表示某种与之相关“成本”的实数的函数。

度量学习技术

即学习一个度量空间,在该空间中的学习异常高效,这种方法多用于小样本分类。直观来看,如果我们的目标是从少量样本图像中学习,那么一个简单的方法就是对比你想进行分类的图像和已有的样本图像。但是,正如你可能想到的那样,在像素空间里进行图像对比的效果并不好。不过,你可以训练一个 Siamese 网络或在学习的度量空间里进行图像对比。与前一个方法类似,元学习通过梯度下降(或者其他神经网络优化器)来进行,而学习者对应对比机制,即在元学习度量空间里对比最近邻。这些方法用于小样本分类时效果很好,不过度量学习方法的效果尚未在回归或强化学习等其他元学习领域中验证。

目标函数技术

目标函数f(x)就是用设计变量来表示的所追求的目标形式,所以目标函数就是设计变量的函数,是一个标量。从工程意义讲,目标函数是系统的性能标准,比如,一个结构的最轻重量、最低造价、最合理形式;一件产品的最短生产时间、最小能量消耗;一个实验的最佳配方等等,建立目标函数的过程就是寻找设计变量与目标的关系的过程,目标函数和设计变量的关系可用曲线、曲面或超曲面表示。

推荐文章
暂无评论
暂无评论~