b标签设置margin值没用_margin的自动化设置

博士的最后一年,我一直在尝试修改我的 AM Softmax[1] 上的一个重要缺陷:这个损失函数存在两个超参数:s和m,在 AM Softmax 论文中,这两个超参数是人工指定的,我们需要大量时间来调整这两个参数,给众多调参狗带来了不小的困扰。

然而回头想想,对于分类问题来说,损失函数 Softmax Loss 中并不存在任何参数,所以我一直觉得对于度量学习问题,也一定存在一种方法可以做到无参化。我对此做了很长时间的研究,虽然我觉得以目前的进展并不足以完成一篇论文,但由于我已经不再搞人脸识别了,所以还是记录下来,希望有人能接着我的思路将研究进行下去。

第一种思路是基于度量学习本身的要求,即“最小的类间距离大于最大的类内距离”。对这个思路的探索在SphereFace[2] 中已经给出了推导,在第5页的 Property 3 中,作者通过“最小的类间距离大于最大的类内距离”推导出了

的条件,论文中对于 Property 3 的证明比较复杂,实际上看一下这张图就明白了:

de56e8cea791079762cd09e3450ebcb1.png

“最小的类间距离大于最大的类内距离”在图上即为“

”,因为
是类中心,可以得出:
,这就是m需要大于等于3的由来。可惜的是,这个条件实在是太强了,与实际情况中使用的
存在巨大的鸿沟(AM Softmax[1]的 Introduction 中进行了讨论)。

这种思路我觉得还是有可以改进的地方:Property 3 对于最大类内距离的定义有点过强了,在高维空间中,对于P1来说,应该不存在一个正好在另外一边对称的点P3,也就是说实际的最大类内距离应该比我们推导中使用的要小得多。但如何对最大类内距离下一个新的定义实在是有点困难,我暂时还没有思路。

第二条路就跟自适应梯度下降的AdaGrad、Adam等方法比较像了,是根据一些统计量来设置超参数。目前我最大的进展也是来自于这个思路。

对于一个二分类问题,损失函数如下(NormFace,W和f均做了归一化):

我们可以轻易地得到特征

到两个类中心的距离之差:
,这个数字实际上就代表了我们将特征
在两个类别中拉开的间隔,我管这个间隔叫作“隐式间隔”,意为隐藏在模型中的间隔。

对于多分类问题,我们需要一点小技巧才能推导出隐式间隔。在第一篇文章中我们介绍了一个叫LogSumExp的函数,这里我们使用它的一个带s的变种对非目标分数的全体进行表示:

有了这个函数,多类的Softmax就可以转化为:

从形式上来看,多类的Softmax形式变成了类似二分类的Softmax形式,我们也可以从这个公式中轻易地得到多分类下的隐式间隔:

这个隐式间隔也代表了Softmax损失函数将

拉开了多大的间隔。

下面就是非常tricky的实验环节了。注意到对于每个样本

来说,
都是可以计算出来的,我曾经试过将m直接设置为每个样本的隐式间隔,但实验效果惨不忍睹。。

最终经过一系列的尝试,发现用全局统计的方式来计算隐式间隔效果还不错,一个使用AM Softmax默认参数训练的模型上的统计结果如下:

2fe59df5a38c8cabe8b049b277f69c1d.png
只看目标逻辑值和LSE就好了,天知道我为了研究这方法搞了多少统计量。。

LSE函数的分布是一个方差非常小的类高斯分布,而目标分数是一个偏向右边的长尾分布。对于高斯分布我们就直接统计其均值就好了,非常方便;而对于目标分数而言,其均值并不能很好的代表这个分布,在多次尝试之后,我使用了众数(Mode)作为目标分布的统计量:

而另一个超参数s的设置相比之下就非常简单了,在我的NormFace[3]中,s是作为网络参数通过BP来进行优化的,但在AM Softmax中,由于设置了一个定死的m,在网络优化的初期s会不断下降至0,因此我将s也定死了。但当我们动态地使用隐式间隔来更新m值后,优化初期m值=0,此时模型退化为NormFace,s就又可以作为网络参数来训练了。

在训练过程中,由于对于

的统计只能在batch中进行,在batch较小时会偏离全局统计量,这时可以采用类似BN里的先每个batch统计,再进行 moving average 来近似得到
的统计值。在CASIA-Webface上,统计出来的
大概是0.378,与手工实验得到的0.35~0.4之间完美契合(但是吧...其实就是凑出来的)。

而最终的结果与手工设置的结果也比较接近,CASIA-Webface上训结果大概一样,VGGFace2上训能稍微高零点几个点,其他数据集的实验之前在实验室没条件进行,有愿意帮忙的可以试一下。代码一年前就已经开源了:https://github.com/happynear/AMSoftmax/tree/master/prototxt/auto。这个方法当时也写了一篇英文文章,详情参见[4]的第4章,其实跟[1]相比只是加了一章内容而已,但后来觉得这两个统计量拼凑的痕迹实在太明显,故事讲起来不怎么好听,就又拿原版覆盖回去了。

[1] Wang F, Cheng J, Liu W, et al. Additive margin softmax for face verification[J]. IEEE Signal Processing Letters, 2018, 25(7): 926-930.

[2] Liu W, Wen Y, Yu Z, et al. Sphereface: Deep hypersphere embedding for face recognition[C]//Proceedings of the IEEE conference on computer vision and pattern recognition. 2017: 212-220.

[3] Wang F, Xiang X, Cheng J, et al. Normface: l 2 hypersphere embedding for face verification[C]//Proceedings of the 25th ACM international conference on Multimedia. ACM, 2017: 1041-1049.

[4] https://arxiv.org/pdf/1801.05599v3.pdf

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值