由于深度卷积神经网络的到来,人脸识别见证了巨大的提升,它的核心挑战就是特征判别度。为了解决这个挑战,有些研究组尝试 mining-based 策略(如 hard example mining 和 focal loss),有的研究组则尝试设计 margin-based loss 函数,(如 angular loss, additive loss, additive angular margins)来增加 ground truth 类之间的边界。这两个方法都充分验证了它们可以学习判别特征。但是,它们要么需要面对 hard examples 的不明确性,要么需要面对其它类别判别力不强的窘境。在这篇论文中,我们设计了一个新的损失函数,support vector guided softmax loss (SV-Softmax),它能自适应地关注那些错误分类的点(支持向量),引导判别特征的学习。所以,SV-Softmax 能够避免 hard examples 的不明确性,也能吸收其它类别的判别力,因此能够产生更具判别度的特征。据我们所了解,这是领域内第一次尝试将 mining-based 损失和 margin-based 损失融合在一个框架中使用。我们在几个基准上进行了实验,结果显示出此方法的有效性,是 state of art 的。
在近些年,先进的人脸识别模型都是建立在深度卷积网络上的,对判别特征的学习至关重要。为了训练这些模型,CNN 一般都会配备一个分类损失函数,或距离学习(metric learning)损失函数。距离学习损失函数如 contrastive loss 或 triplet loss 通常需要承受高昂的计算成本。为了避免这个问题,它们需要精心设计的样本挖掘策略,模型的性能对这些策略的选择是非常敏感的。因此越来越多的研究人员开始把关注点放在如何重新设计分类损失函数上。
直觉上,如果人脸的类内距离较小,而类间距离较大,人脸特征就可以很容易区分。但是,如很多论文指出的,当前流行的分类损失函数(如 softmax loss)对于深度人脸识别通常缺乏特征判别力。为了解决这个问题,有一组研究人员提出了 mining-based 损失函数,设计了一个 hard mining softmax (HM-Softmax),利用 high-loss 样本来构建 mini-batches,提升特征分辨度。hard examples 所占的比例是经验选取的,而 easy examples 不被考虑。相反,Lin 设计了一个相对 soft 的 mining softmax,叫做 Focal Loss(F-Softmax),将训练关注在一个由 hard examples 组成的稀疏集合上。Focal Loss 比简单的 hard mining softmax 的测试结果要好。Yuan 基于模型复杂度选择 hard examples,训练了一组模型,对不同级别难度的样本进行建模。另一组研究人员则更青睐于设计margin-based 损失函数。他们的关注点不在 hard examples 的优化,而是直接提升不同类别特征间的 margin。Wen 设计了一个center loss 学习每个样本的中心位置,增强类内的紧凑度。Wang 和 Ranjan 提出使用一个比例参数来控制 softmax loss 的温度,对于良好区分的样本产生较高的梯度,以此收缩类内的差异。Liu 在 ground truth 类和其它类别间提出了angular margin (A-Softmax),以此来增大类间的差异。但是,它通常不稳定,而且参数很难决定。为了增强 A-Softmax 的稳定性,好几个替代方法都被提出。Wang 设计了 additive margin (AM-Softmax) 损失来稳定优化过程,获得了很好的结果。Deng 提出了 additive angular margin (Arc-Softmax) 损失,有着更清晰的几何含义。
尽管这两组都充分验证了其可以学习人脸识别中的判别特征。mining-based 损失函数的动机是关注在 hard examples 上,而 margin-based 损失函数的动机是增大特征不同类别间的间距。同时,他们各自独立发展,而且也有各自的缺点。对于 mining-based 损失函数,hard examples 的定义不明确,通常是通过经验选取的。如何从语义层面上决定 hard examples 仍待探索。对于 margin-based 损失函数,他们中的绝大多数方法都是从 ground truth 类的视角,学习判别特征,增大特征间距。它们经常忽略其它非 ground truth 类别的视角产生的判别力。而且,mining-based 和 margin-based 方法之间的关系仍不明确。
但是,这个等式只吸收了它们自己的优点,却没有弥补它们各自的缺点。它通过f(m,θωy,x)只促进了 ground truth 类别的特征 margin,忽略了其它非 ground truth 类别的特征判别力。而且,hard examples 仍然是通过指标函数g(py) 凭借经验选取的,没有语义上的引导。换句话说,hard examples 的定义仍然很模糊。
3.2 Support Vector Guided Softmax Loss
直觉告诉我们,良好区分的特征向量在学习问题上起到的作用很小。也就是说,那些误分类的特征向量对增强特征区分度更重要些。受这个启发,学者们提出了 hard example mining 和最近的 Focal Loss,将训练聚焦在一个由 hard examples 组成的稀疏集合上,在训练中忽略那些数量巨大的容易样本。但是,它们要么是依据损失值选取 hard examples,要么通过一个调节因子来降低容易样本的权重。换句话说,hard examples 的定义是很模糊的,没有直观的解释。
明显,当t=1时,此 SV-Softmax 损失函数和原先的 Softmax Loss 函数一样。图1对 SV-Softmax Loss 给了集合介绍。
3.2.1 Relation to Mining-based Softmax Loss
为了表现 SV-Softmax 相较于其它传统的 mining-based 损失函数(Focal Loss)的优势,我们使用了二元分类作为例子。假设,我们有两个样本x1和x2,都是类别1里面的。图2给了一个图表,x1相对难一些,x2相对容易一些。传统的 mining-based Focal Loss 将容易和困难样本进行了再赋权值,于是
loss2∗loss1∗>loss2loss1
通过这种方法,hard examples 的重要性就体现了出来。这个策略直接来自 loss 的视角,hard examples 的定义是不明确的。然而,我们的 SV-Softmax 损失则来自另一个角度。首先,我们依据决策边界在语义上定义 hard examples(支持向量)。然后,对于支持向量x1,我们降低它的概率,于是
loss2loss1∗>loss2loss1
总之,SV-Softmax 和 mining-based Focal Loss 的差异在图2中有展示。
3.2.2 Relation to Margin-based Softmax Losses
类似地,假设我们有一个属于类1的样本x,它和 ground truth 类距离有一点远(图4中的红点)。原来的 softmax loss 目的是让ω1Tx>ω2Tx⟺cos(θ1)>cos(θ2)。为了让目标函数更加的严苛,margin-based 损失函数通常从 ground truth 类视角,引入一个 margin 函数 f(m,θ1)=cos(m1θ1+m3)−m2。
cos(θ1)≥f(m,θ1)>cos(θ2).
相反,我们的 SV-Softmax 损失函数从其它的非 ground truth 类别上增大特征 margin。尤其,我们对误分类的特征引入了一个 margin 函数 h∗(t,θ2)。
cos(θ1)≥h∗(t,θ2)>cos(θ2).
这里,h∗(t,θ2)=log[h(t,θ2)ecos(θ2)]=t⋅cos(θ2)+t−1。此 SV-Softmax 损失在语义上从其它非 ground truth 类中增大特征 margin,而 margin-based 损失函数只在 ground truth 类中训练。图4展示了它们的几何上比较。图3 演示了 SV-Softmax 损失函数的流程,以及它和 margin-based 与 mining-based 损失函数的关系。