原文: A Discriminative Feature Learning Approach for Deep Face Recognition
用于人脸识别的center loss。
1)同时学习每个类的深度特征的中心点
2)对深度特征和其对应的类中心的距离有一定的惩罚
提出的center loss函数在CNN中可以训练并且很容易优化。
联合softmax loss和center loss,可以同时增加类间分散程度(inter-class dispension)与类内紧凑程度(intra-class compactness)。
对于普通的分类任务,网络最后一层全连接层输出的特征只有可分就行,但对于人脸识别任务,深度网络学到的特征不仅要可分,而且区分度要更大。
Softmax loss只有特征可分的效果,这对人脸识别是不够的。之前提出过contrastive loss和triplet loss,但是这两者需要仔细挑选训练样本,否则的话,具有不稳定行,也很难收敛。
为了增强神经网络学到的深度特征的辨别力,我们提出center loss。我们学习每个类的深度特征的一个中心(与特征具有相同维度的一个向量);在训练的时候,我们同时更新中心和最小化特征与其对应的类中心的距离。CNN在softmax loss和center loss联合下进行训练,其中有一个超参数控制。可以看出,softmax loss迫使不同类的深度特征保持分离,center loss使得属于同一个类的特征更加靠近中心;因此,在这两者联合之下,类间的特征差距不仅被加大,类内的特征变化程度也减小了。
本文的贡献:
1)提出一个新的loss function,称为center loss。可以用来最小化深度特征的类内距离,使得人脸识别更加鲁棒。
2)提出的center loss在CNN中很容易实现;模型可以训练,并且可以直接用SGD优化。
3)做了大量实验,在各种数据集上取得很好的结果。
3 The Proposed Approach
首先用一个小例子来讲解为什么提出这个center loss。以MNIST数据集为例,使用的网络称为LeNet++,与LeNet网络的区别是,加宽和加深了LeNet网络,并将最后一层隐含层输出改为2。具体区别如下:
Softmax损失函数如下:
其中,表示第i个深度特征,属于第yi类;d表示特征维度;m表示mini-batch的大小,n表示类的数量;
训练后二维的深度特征如下图,从图中可以看出,1)在使用softmax loss时,最后学习到的特征是可分的;2)深度特征并没有足够的可区别性,类内变化很大;因此这个不适合用于人脸识别。
3.2 The center loss
因此,如何设计一个有效的loss function,使得学习到的深度特征具有比较强的可区分性?直觉上,我们应该最小化类内的变化程度,同时保持类间的可区分性。最后,提出了center loss function,公式如下:
表示深度特征的第个类中心。当深度特征改变的时候,应该被更新。换句话说,我们应该把整个训练数据集考虑在内,并且在每个迭代之后计算每个类的平均特征。因此,center loss不能直接使用。
为了解决这个问题,我们做了两个必要的修改。首先,我们在每个mini-batch上更新中心点,而不是在整个训练集上。在每个迭代中,中心点通过计算每个类对应的特征的平均值得到(这种情况下,有些中心点可能不会更新);其次,为了避免被某些人为的错误标签干扰,我们使用一个尺度α来控制中心点的学习率。关于xi的Lc梯度更新公式和更新公式如下:
其中δ(condition) = 1表示满足condition。α取值范围为[0,1];
我们使用softmax loss和center loss联合训练CNN,公式如下:
从公式中可以看出来,上面的loss可以通过标准的SGD最小化。λ用于平衡两个损失函数。具体训练算法如下:
最后实验结果如下: