人脸识别之损失函数Softmax

这次我想和各位童鞋分享下人脸识别中的损失函数,我认为根据损失函数的不同可以把人脸识别看做classification和metric learning两种或者两者的结合。下面我分享下我训练中踩的一些坑,如有纰漏欢迎童鞋留言。

最常见的是softmax,我在用softmax训练模型时发现人脸模型会收敛的很快,训练的准确率很快就到了0.9,但是继续训练之后我们会发现测试集的精度不上升了,如果训练过度还会出现下降的情况,不用问肯定是过拟合了。但是有些时候你会发现及时加一些防止过拟合的手段还是会发现测试精度上的不明显,这又是什么原因呢?我认为还是得从softmax的定义说起。

首先我们认为我们所说的softmax损失函数是sotfmax激活函数加上cross entropy,softmax的作用是将特征经过线性组合转化成概率,然后使用cross entropy来计算损失。问题就在这里,正是因为softmax这种基于概率分布的特性即对数似然导致训练的结果不好,因为我之前提到人脸本质上是为了找到泛化性能好的特征,而softmax的目的是保证你每个类要分的正确,这两者之间并不等价,并且softmax的这种定义方式还伴随着其他问题需要你在训练的时候特别注意,诸如softmax需要一个大的数据集;softmax对long tail effect较为敏感等等,针对这些问题出现很多对softmax的改进。

另外从工程上考虑如果人脸的label数很大的时候,softmax的FC矩阵会很大,这样会占用很多GPU导致batch size变小,训练的效果会变差,此外测试时我们只计算到倒数第二层,最后一层庞大的fc矩阵就被我们抛弃了,一方面导致浪费,另一方面目前训练的方式是end to end learning,这样得到的特征也不是最优的,所以只使用softmax的化要谨慎呦。

最后我想补充一点的是,训练精度很快到0.9以上的话继续训练,因为很多样本都预测正确了,这时其梯度就会变得更小,网络也就会学习不动了,这时候怎么办呢?老办法,找到hard sample来帮助训练,至于如何实现,各位看官请听下回分解。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值