【论文阅读】AM-Softmax:Additive Margin Softmax for Face Verification. 1801.05599.【损失函数设计】

原文链接:https://blog.csdn.net/weixin_43154149/article/details/122611784

文章目录

  • 1. 四个问题
  • 2. 论文简介
    • 1. Introduction(相关工作:Softmax, L-softmax, A-softmax, triple-loss, center-loss, AM-softmax, cosface, AAM-softmax )
    • 2. Preliminaries
    • 3. Additive Margin Softmax
  • 3. 参考链接
  • 4. 收获

1. 四个问题

  1. 解决什么问题
    提升人脸分类准确度

  2. 用了什么方法解决
    提出了一种新的损失函数。AM-Softmax loss 目的是进一步增大类间差异,缩小类内差异

  3. 效果如何
    我们在LFW和Megaface数据集下的实验表明,我们的additive margin softmax loss始终比使用相同网络架构和训练数据集的当前最先进方法表现更好

  4. 还存在什么问题
    如何自动确定margin以及如何合并特定于类或特定于样本的间隔然是个开放的问题,值得研究

【论文阅读】AM-Softmax:Additive Margin Softmax for Face Verification. 1801.05599.【损失函数设计】_第1张图片

2. 论文简介

1. Introduction(相关工作:Softmax, L-softmax, A-softmax, triple-loss, center-loss, AM-softmax, cosface, AAM-softmax )

  • 人脸认证广泛应用于金融、军事、公安等领域的身份认证
  • 目前,大多数人脸验证模型均是建立在深卷积神经网络的基础上,并由分类损失函数[18、20、19、9]、度量学习损失函数[16]或两者共同监督[17、13]
  • contrastive loss[17]或triplet loss[16]等度量学习损失函数通常需要精心设计样本挖掘策略,而最终的性能对这些策略非常敏感,因此越来越多的研究者将注意力转移到基于改进的分类损失函数来构建人脸验证模型[20,19,9]。

  • 目前流行的深度人脸识别分类损失函数大多基于广泛使用的Softmax loss。SoftMax loss通常擅长优化类间差异(即分离不同的类),但不擅长减少类内差异(即使同一类的特性紧凑)。
  • 为了解决这一问题,提出了许多新的损失函数来最小化类内差异。
  • [20]建议增加一个正则化术语来惩罚特征到中心的距离。
  • 在[19,12,15]中,研究人员提议使用一个尺度参数来控制Softmax loss 的“容忍力”[2],从而对分离良好的样本产生更高的梯度,以进一步缩小类内方差。
  • 在[9,10]中,作者引入了概念上很吸引人的角度间隔,以推动分类边界更接近每个类的权重向量。
  • [9]也为使用分类损失函数训练度量学习任务的深层模型提供了理论指导。
  • [6,12,15]还通过合并不同类型的间隔来改善SoftMax loss。

  • 在这项工作中,我们提出了一种新的更具解释性的方法,将角度间隔引入到softmax loss中。我们通过cosθ−m制定了一个额外的间隔,它比[9]简单,并且产生更好的性能。从方程(3)可以看出,m乘以[9]中的目标角 θ y i θ_{yi} θyi ,所以这种类型的边界以乘法的方式合并。由于我们的间隔是从cosθ减去的一个标量,我们称损失函数为Additive Margin Softmax(AM-SoftMax)。

【论文阅读】AM-Softmax:Additive Margin Softmax for Face Verification. 1801.05599.【损失函数设计】_第2张图片

  • 对LFW BLUFR协议[7]和MegaFace[5]的实验表明,在相同的网络结构下,我们的损失函数比目前最先进的方法得到了更好的结果。

2. Preliminaries

softmax loss
【论文阅读】AM-Softmax:Additive Margin Softmax for Face Verification. 1801.05599.【损失函数设计】_第3张图片

A-softmax loss
【论文阅读】AM-Softmax:Additive Margin Softmax for Face Verification. 1801.05599.【损失函数设计】_第4张图片

3. Additive Margin Softmax

【论文阅读】AM-Softmax:Additive Margin Softmax for Face Verification. 1801.05599.【损失函数设计】_第5张图片【论文阅读】AM-Softmax:Additive Margin Softmax for Face Verification. 1801.05599.【损失函数设计】_第6张图片

直观理解就是分得更宽(类内紧凑,类间更宽)
【论文阅读】AM-Softmax:Additive Margin Softmax for Face Verification. 1801.05599.【损失函数设计】_第7张图片

【论文阅读】AM-Softmax:Additive Margin Softmax for Face Verification. 1801.05599.【损失函数设计】_第8张图片

3. 参考链接

原文:https://arxiv.org/abs/1801.05599

AMSoftmax论文翻译——中英文对照+标注总结

AM-Softmax Loss

总结:本文在特征和权值正则化的情况下,提出了一种 additive margin Softmax,更直观也更易解释,同时也取得了比A-Softmax更好的实验结果。

人脸识别中的常见softmax函数总结(A-Softmax,AM-Softmax,ArcFace等)

【论文阅读】AM-Softmax:Additive Margin Softmax for Face Verification. 1801.05599.【损失函数设计】_第9张图片

人脸识别的LOSS(上)
人脸识别的LOSS(下)

从Softmax到AMSoftmax(附可视化代码和实现代码)

【论文阅读】AM-Softmax:Additive Margin Softmax for Face Verification. 1801.05599.【损失函数设计】_第10张图片【论文阅读】AM-Softmax:Additive Margin Softmax for Face Verification. 1801.05599.【损失函数设计】_第11张图片【论文阅读】AM-Softmax:Additive Margin Softmax for Face Verification. 1801.05599.【损失函数设计】_第12张图片【论文阅读】AM-Softmax:Additive Margin Softmax for Face Verification. 1801.05599.【损失函数设计】_第13张图片

Deep Metric Learning及其形式(附Pytorch代码)

问题引入:
在机器学习中,我们经常会遇到度量数据间距离的问题。一般来说,对于可度量的数据,我们可以直接通过欧式距离(Euclidean Distance, ED),cosine等方法来做。但对于更广泛的数据我们就很难这样操作,如测量一个视频和一首音乐的距离,先验知识告诉我们ED(laugh_video, laugh_music) metric learning全称是 Distance metric learning,就是通过机器学习的形式,根据训练数据,自动构造出一种基于特定任务的度量函数。
metric learning问题,可以分为两种:
一是supervised learning,这类监督学习单元是单个数据,每个数据都有对应标签。metric learning是学习一种度量可以让相同标签数据的距离更近,不同标签数据的距离更远
二是weakly supervised learning,这类监督学习单元是元组(二元组,三元组等),元组一般有正例对和负例对两种。metric learning是学习一种度量,可以让正例对的距离更近,负例对的距离更远。
对于第一种形式,可以使用center loss,amsoftmax等。center loss是为每个类设定一个center feature,让类内数据feature向center靠拢,从而拉近类内距;因为center loss只负责类内距,所以通常要结合softmax cross entropy loss,从而实现类别可分离的情况下还能拉近类内距。amsoftmax是基于softmax改进而来,但不同于softmax,它不仅可以使类别可分离,还能拉近类内距的同时,拉远类间距。
第一种形式也可以将数据变形为元组,做weakly supervised learning。
对于第二种形式,可以使用contrastive loss(二元组)和triplet loss(三元组)。

4. 收获

  1. 设计损失函数有助于提升分类准确率
  2. 常见的有度量学习损失函数(contrastive loss或triplet loss)和基于改进的分类损失函数?
  3. 增大类间差异,减少类内差异(不同类要分得远,同类要紧凑)

强推 - 理解largin margin 这类损失函数- 视频学习

AM-Softmax代码:https://github.com/zhilangtaosha/SpeakerVerification_AMSoftmax_pytorch

你可能感兴趣的:(深度学习,计算机视觉,机器学习)