损失函数改进之Center Loss

最近几年网络效果的提升除了改变网络结构外,还有一群人在研究损失层的改进,这篇博文要介绍的就是较为新颖的center loss。center loss来自ECCV2016的一篇论文:A Discriminative Feature Learning Approach for Deep Face Recognition。

论文链接:http://ydwen.github.io/papers/WenECCV16.pdf
代码链接:https://github.com/pangyupo/mxnet_center_loss

摘要

这篇博客是对论文A Discriminative Feature Learning Approach for Deep Face Recognition的总结。这篇论文中,作者提出了一种新的辅助损失函数(center loss),结合 softmax交叉熵损失函数,在不同数据及上提高了识别准确率。

相关工作

基于triplet loss的image pair方法

在这种方法中,训练样本两个样本对pair_1 : (positive_1, positive_2), pair_2 : (positive_1, negative_1),训练的目标是使得pair_1之间的距离小于pair_2之间的距离。这种方法的缺点在于样本对的数量会爆炸,假设有10个人,每个人10张图片,则共有81000(C110C210C12C190C101C102C21C901)个样本对。

基于孪生网络的方法

着这种方法中,训练时输入一对图片,标签为0或者1,0表示图片属于不同的人,1表示图片属于相同的人。训练的目标在于使得属于同一个人的图片距离尽可能小,属于不同人的图片距离尽可能大。与triplet loss相同,这种方法同样面临样本对爆炸的可能。假设有10个人,每个人10张图片,则共有900(C110C210+C210C110C101C102+C102C101)个样本对。

提出的方法

对于常见的图像分类问题,我们常常用softmax loss来求损失,。如果你的损失采用softmax loss,那么最后各个类别学出来的特征分布大概如下图Fig2。这个图是以MNISTt数据集做的实验,一共10个类别,用不同的颜色表示。从Fig2可以看出不管是训练数据集还是测试数据集,都能看出比较清晰的类别界限。

在这里插入图片描述
如果你是采用softmax loss加上本文提出的center loss的损失,那么最后各个类别的特征分布大概如下图Fig3。和Fig2相比,类间距离变大了,类内距离减少了(主要变化在于类内距离:intra-class),这就是直观的结果

在这里插入图片描述

接下来详细介绍center loss。如果你还是不熟悉传统的softmax loss,那么先来看看传统的softmax loss。首先区分softmax和softmax loss的区别,可以看博客:softmax,softmax-loss,BP的解释。下面公式1中log函数的输入就是softmax的结果(是概率),而Ls表示的是softmax loss的结果(是损失)。wx+b是全连接层的输出,因此log的输入就表示xi属于类别yi的概率。

那么center loss到底是什么呢?先看看center loss的公式LC。cyi表示第yi个类别的特征中心,xi表示全连接层之前的特征。后面会讲到实际使用的时候,m表示mini-batch的大小。因此这个公式就是希望一个batch中的每个样本的feature离feature 的中心的距离的平方和要越小越好,也就是类内距离要越小越好。这就是center loss。
在这里插入图片描述

关于LC的梯度和cyi的更新公式如下:

Cyi表示属于yi类的特征的的中心
这样做是存在问题的:
理想情况下,我们每次更新权值都要遍历全部的训练集去获得每个类的中心,这是低效甚至不实际的
为了解决这个问题,作者使用了minbatch中的每个类的中心来更新,(虽然这样可能有些类的中心在一次迭代中无法更新到):

在这里插入图片描述

具体的算法描述可以看下面的Algorithm1:

实验

作者在LFW和YTF上做了对比试验,结果如下表:
在这里插入图片描述
从表中可以看出,在这两个数据集上,论文提出的方法取得了最高的acc。

结论

虽然新提出的方法取得了良好的结果,但是也有一些不足之处,最麻烦的地方在于如何选择训练样本对。在论文中,作者也提到了,选取合适的样本对对于模型的性能至关重要,论文中采用的方法是每次选择比较难以分类的样本对重新训练,类似于hard-mining。同时,合适的训练样本还可以加快收敛速度。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值