Deep Meta Metric Learning
代码:https://github.com/CHENGY12/DMML

摘要

这篇文章主要是讲度量学习的。和之前的一些度量学习的方法不同的是,之前的方法大多通过一个目标函数,而作者的DMML是通过一个元的方式,证明了softmax和 triplet损失在元空间上是一致的。实际上,作者通过从原始训练的数据上采样一些子数据集,通过对这些子数据集进行距离学习。在每个采样的子任务中,我们将训练数据分为一个支持集和一个查询集,并学习基于数据集的距离,而不是基于样本的距离,以验证来自多个支持单元的查询单元。除此之外,还对于基于数据集的距离引入了难样本挖掘,目的是提升同类别的紧密。

引言

距离度量学习的目的是学习一个嵌入空间,在这个空间里面,相似的样本的距离越近,而不相似的样本距离越远。而度量学习的应用场景主要是视觉识别,比如行人重识别,细粒度识别,人脸识别。传统的深度度量学习方法应用 contrastive loss或者 triplet loss来学到具有判别力的特征空间,来度量视觉样本的相似程度。但是这些方法都没有很好的解释从训练数据到测试数据的泛华能力。举例来说,如下图所示, global optimization methods对所有的训练样本学习一个分类器,但是这样在测试的时候,容易对于显著的特征产生过拟合的现象。但是,meta-based methods学习跨采样的多个子集的元度量,从而挖掘潜在的信息以获得更好的泛化。
图片说明

相关工作

Metric Learning

早期的方法是学习一个线性的Mahalanobis metric来进行相似度度量。比如,LMNN 尝试去确保每一个点周围的样本都属于同一个类别。
然后就是一些将feature learning and metric learning融合在一个框架下的学习方式。可以划分为: contrastive loss with pair-wise inputs, triplet loss with triplet inputs, and N-pair loss with batch inputs。

Meta Learning

元学习的目的是通过从一组辅助任务中提取一些可转移的知识,使基本学习算法能够有效地适应新任务。

方法

DMML

全局优化学习算法的优化目标:
图片说明
这里x表述所以的训练数据点,y表示对应的标签。
DMML的优化目标:
图片说明
作者采用元方法来表示度量学习,这更好地解释了度量的学习过程和泛化能力。这里表示采样子任务的目标函数。
详细的讲,给定一个N个样本的训练集,作者首先随机采用M(M<N)个类别的样本,构成一个新的任务。依照元学习的设置,作者还要采样一个支持数据集S和一个查询数据集Q对于这个子任务。他们的样本类别数相同,同时他们的样本个数也是相等的。每一个episode的过程中,模型学习元矩阵来正确的验证查询样本和支持样本。所有优化目标就变成了这样:
图片说明
Learning in One Episode
定义元细胞:
图片说明
表示为相同类别的支持数据点,最终通过加权结合为一个元点。
和其他度量学习的方法不一样的是,这个方法学习的距离不在样本之间,而是在数据集之间。也就是元细胞和查询样本之间的距离,等于就是先考虑了一样本的综合特征。公式如下:
图片说明
损失函数:
图片说明
三元损失函数,然后转换这个max到如下:
图片说明
是不是很想softmax损失,距离的优化就像下面这样:
图片说明
最终整个框架的优化目标就是这样:
图片说明
Hard Sample Mining
然而上面提到这个目标是很难直接优化的,所以作者提出了两个代替的基于数据集的距离:center support distance and hard mining distance
center support就是直接采用元细胞的中心来计算和查询样本之间的距离。
图片说明
但是这样的方式将难易样本看作一样,是不利于模型的优化的。那怎么办?作者的办法是:从每个元单元的支持样本中选择最远的样本来计算类内距离,同时选择最近的样本来计算类间距离。
图片说明
我觉得这里他写反了。
下面这张图说明了这个过程:
图片说明

实验结果

图片说明