度量学习DML之Triplet Loss

度量学习DML之Contrastive Loss及其变种_程大海的博客-CSDN博客

度量学习DML之Triplet Loss_程大海的博客-CSDN博客

度量学习DML之Lifted Structure Loss_程大海的博客-CSDN博客

度量学习DML之Circle Loss_程大海的博客-CSDN博客

度量学习DML之Cross-Batch Memory_程大海的博客-CSDN博客

度量学习DML之MoCO_程大海的博客-CSDN博客

数据增强之SpecAugment_程大海的博客-CSDN博客

数据增强之MixUp_程大海的博客-CSDN博客​​​​​​​


度量学习的目标:

  1. 相似的或者属于同一类的样本提取到的embedding向量之间具有更高的相似度,或者具有更小的空间距离
  2. 对于out-of samples的样本,也就是未见过的样本,希望也能提取到有效的embedding,也就是模型的泛化能力更好

Triplet Loss(三元组损失)

        论文:《FaceNet:A Unified Embedding for Face Recognition and Clustering》

         三元组损失顾名思义,一次输入的样本数量有三个:

        Anchor:随机选择一个样本,假设所属的类别为A

        Positive:在所有类别为A的训练样本中,选择一个正样本

        Negative:在其余类别中选择一个训练样本作为负样本

        优化目标:在特征向量空间中,之间的距离要小于之间的距离,并且距离的差值还要满足限制条件

度量学习DML之Triplet Loss_第1张图片

        通过上图可以看到,期初在向量空间中,Anchor与Negative的距离比Anchor与Positive的距离近,通过学习优化之后,Anchor与Negative的距离比Anchor与Positive的距离远,函数表示形式如下:

        一组三元组样本的损失表示如下:

        三元组整体损失函数表示如下:

        对于min-batch中的样本,Triplet Loss一次也只是使用一个anchor,一个positive和一个negative。

参考:深度度量学习-论文简评 - 知乎

参考:深度度量学习中的损失函数 - 知乎

参考:GitHub - KevinMusgrave/pytorch-metric-learning: The easiest way to use deep metric learning in your application. Modular, flexible, and extensible. Written in PyTorch.​​​​​​​ 参考:PyTorch Metric Learning

你可能感兴趣的:(深度学习,度量学习,DML,Triplet,Loss,三元组损失,Facenet)