在身份识别领域,特征的稳定性一直是影响认证精度的重要因素。为了支持特征提取的稳定性,很多方案都会选择比较固定单一的采集方式来获取生物特征,但是这样的采集方式已经不能满足现代身份认证/识别系统的需求。
复杂的身份识别采集场景,对于光照以及姿态都有很高的要求,而传统的特征提取方法,类似于 Gabor 等,都无法应付这样的复杂的采集场景。这就对特征提取算法自身的稳定性提出了更高的要求。
传统视觉算法 [1] 很难区分上面两幅相似图像的相近程度
近年来,卷积神经网络在模式识别等领域大放异彩。网络可以在充分的数据下学习复杂情况下的稳定特征,让算法对于采集环境的条件变得更加宽松,也使生物特征身份认证的应用场景变得更加宽泛。可是,一般的神经网络都是做分类和回归的,怎么能够做到判断两个特征是不是同一个人的呢?这样我们就引出了今天的主题:使用深度神经网络的表征度量学习。
度量学习是什么?
传统机器学习中,很多任务都可以被建模为回归或是分类任务。这些任务都需要强标签,也就是有明显语义定义的标注数据,比如类别标签,或者是位置信息。然而近几年在表征学习领域,一种新的学习方式逐渐收到了学术界的关注,那就是度量学习。度量学习旨在让模型学习样本与样本之间的相似度,鼓励模型学习 同类 与 不同类 之间的泛化度量(可以是欧氏距离,也可以是余弦相似度)。这个度量应该在整个数据上面都能展示同一性,也就是说在陌生数据下也应该有同样辨析同类异类的能力。
为了定义问题,首先我们需要一个度量空间 来度量两个样本的距离。这里我们使用 距离函数
来描述两个样本的距离。那么我们就可以得到两个简单的目标:
在将两个问题共同优化的过程中,对于不同簇的约束需要转化成对偶问题,也就是将 argmax 转化为 argmin
。为了避免在优化联合目标过程中梯度变成 0 的情况,我们就需要增加一个参数
(在文章中通常会被称为 margin),使得损失函数能够产生有效的梯度。通过上面对优化目标的简单整理,我们就可以得到一个非常单纯的 铰链损失函数(Hinge Loss)也被称作 对比损失函数(Contrastive Loss):
其中, 代表锚点(anchor)样本,
代表 与锚点同类的样本(positive),
代表 与锚点异类的样本(n