sofmax loss
softmax loss是最常用的组件之一,但是缺乏鼓励特征更具辨识性,这种广泛使用的损失对模型的优化效果是有限的。
Modify-softmax
我们将权值归一化,即令 ,并使偏置为0,则损失函数变为:
尽管Modify-softmax函数可以通过角度边界学习特征,但是这些特征仍然不具有很强的辨识性。
Center loss
最小化类内距离,并且保持类间距离是提升模型分类精度的关键。
代表类别的特征中心,它会随着特征的变化而改变。
首先,采用mini-batch更新特征中心,而不是整个训练数据集。每一轮迭代,计算每个类特征的平均;其次,为了避免部分错误样本导致训练过程出现较大的抖动,本次采用控制特征中心的更新。
因此最终的损失函数为:
Contrastive-center loss
我们建模的时候,希望模型特征具有类内聚集、类间分隔的特点,而中心损失只考虑了类内聚集,未能考虑类间分隔。针对上面的问题,本文考虑:1)训练样本到类别中心的距离最短;2)训练样本与其非对应类别中心的距离之和最大。
代表类别个数; 是一个常量,用于防止分母为0,其默认为1。
L-softmax
为了实现类内聚集、类间分隔,一个直观的想法就是将样本与参数之间的分离特性转变为幅度和角度
在softmax损失函数中,因为softmax损失采用cosine距离作为分类预测的份,因此预测标签由每个类的角度相似性决定。因此,本文的目的是根据角相似性将SoftMax损失归纳为更一般的大范围SoftMax(L-SoftMax)损失,从而导致所学特性之间可能存在更大的角可分离性。
这里通过将一个预设常数m乘以样本和真实类之间的角度来实现的
其中
越大,分类边界越大,目标函数也越难训练。
该方式具有如下3个特点:
- 它鼓励类与类之间有角度的决策界限,生成更具辨别性的特性。
- 它通过定义一个更困难的学习目标,对过拟合问题提出不同的观点,一定程度上避免了过拟合。
- L-SoftMax不仅有利于分类问题,也有利于验证问题,即理想情况下学习到特性的最小类间距离应大于最大类内距离。
A-softmax
作者提出了一种通过角度量化不同类之间分隔距离的方法,并且由一项额外的约束项显式的加强不同类的角度差异。
模型通过angular softmax损失和归一化损失进行联合监督,因此全局的损失函数为
其中,angular softmax损失促使采样表征向聚簇中心聚集
而,归一化项促使不同的聚簇中心和尽量分离
AM-softmax
作者针对softmax loss提出了一种新的加性角度的margin,它具有直观的吸引力并且更好的解释性。
作者对softmax函数中定义为加性margin
对比A-softmax和L-softmax,该方式更简单直接。假定
因此模型前向传播只需要计算,后向梯度计算。
因此最终的损失函数为
SM-softmax
SM-softmax通过一个非负实数调整softmax前向计算,而不改变后向计算。因此,它不仅可以调整所需的连续soft margin,而且很容易通过典型的随机梯度下降进行优化。由于A-softmax中是正整数,因此该函数不能遍历所有的角度。为了处理这样的问题,作者引入soft margin,并定义为
其中,是非负实数。
该函数的优点:
- 首先,可以遍历所有的期望margin,包括硬间隔。
- 其次,SM-softmax损失实现起来比较容易。
Triplet Loss
Triplet loss训练的目标是
- 同一个标签下,不同样本的embedding空间相互靠近
- 不同标签下,不同样本的embedding空间相互分离
根据定义可以将triplet loss分为三类
Easy triplets
,即,这种情况不需要优化,天然的距离小于。Hard triplets
anchor距离大于,即Semi-hard triplets
,即的距离很近,但是有一个margin。
假设输入样本量,其中代表类别个数,代表类别下样本个数。
-
Batch All
选择所有有效的triplets,并对hard 和semi-hard triplets样本损失取平均。
- 一个重要的点就是不考虑相对较为容易的triplets样本(这些样本的损失为0),对他们取平均会使得损失非常小。
- 这可以生成个triplets样本
- 代表anchor数量
- 代表每个anchor包含的positive样本
- 代表可能的negative样本
-
Batch Hard
在一个batch中,针对每一个anchor,选择最难的positive(距离最大的)和最难的negative样本。
- 从样本中,我们可以生成个triplets样本。
- 选定的triplets样本是batch中最难的。
Pairwise Constrain Loss
其中,。上式可以转化为
在原始的softmax特征空间中,相同类别样本的距离可能大于不同类别的距离。在Pairwise约束loss中,相似样本Pair的距离小于间隔减去常量。不相似的pair距离大于。
先前的contrastive loss,约束类内距离为0、类间距离大于一个常量。它也可以看作是PCL的一个特例
但是相似pair的距离逼近0,这样的假设太强可能不太适合真实环境。
最终的PCL损失函数定义为
其中
其中,代表pair的数量,而是一个更通用的logistic损失函数。
G-softmax
single-label classification
其中,是控制CDF宽度的参数。如果则该函数恢复为原始的softmax函数。 是高斯分布的CDF,
其中,
与原始的softmax不同,G-softmax考虑了特征的分布。这样处理有两个好处,1)它可以逼近各种各样的分布,例如:训练样本上的每个类。而softmax函数仅从当前观察样本中学习;2)它可以直接量化类内紧凑性和类间可分性。
multi-label classification
与仅仅采用作为输入不同,考虑和作为模型输入。其中,代表正向特征,用于计算特征属于类别的概率。代表负向的特征,用于计算特征属于非类的概率。
因此,G-softmax 损失函数可以定义为
Virtual Softmax
作者提出Virtual Softmax,通过添加一个虚拟的负类来加强特征的表征能力,从而学习到的特征具有类内紧凑、类间分类的特点。添加虚拟负类源于自然和直观的动机,带来了比softmax更强的约束效果。该方法能够在训练过程中,自动迭代更新,并且不会带来计算负担和内存消耗。
针对监督算法,添加额外的类别是一个大胆且合理的想法,用于加强模型特征的判别性能。
理论上,越大,特征特性越好。然而实际应用中,训练的样本是有限的,总的类别数量是不变的,因此用真实存在的附加类来扩大角度是困难的。一个最麻烦的问题是,由于训练前类anchor向量的随机初始化和优化过程中参数更新的动态性,使得我们不能在原来相邻的类之间准确地插入额外的类。
为了解决上面的问题,作者插入单个动态负类到原始的softmax函数中。该负类由当前训练样本构造,因为没有真实的数据属于这个虚拟的负类,因此它仅仅作为负类存在。因此最终的Virtual Softmax定义为
其中
模型的目标是新增虚拟类别之后,当前特征对应的类仍然是最大概率的类别
参考文献
- A Discriminative Feature Learning Approach for Deep Face Recognition
- RegularFace: Deep Face Recognition via Exclusive Regularization
- Contrastive-Center Loss For Deep Neural Networks
- SphereFace: Deep Hypersphere Embedding for Face Recognition
- Large-Margin Softmax Loss for Convolutional Neural Networks
- Soft-Margin Softmax for Deep Classification
- Correcting the Triplet Selection Bias for Triplet Loss
- Co-Representation Learning For Classification and Novel Class Detection via Deep Networks
- Robust Classification with Convolutional Prototype Learning
- Partially Supervised Graph Embedding for Positive Unlabelled Feature Selection
- G-softmax: Improving Intra-class Compactness and Inter-class Separability of Features
- Virtual Class Enhanced Discriminative Embedding Learning
- FaceNet: A Unified Embedding for Face Recognition and Clustering
- In Defense of the Triplet Loss for Person Re-Identification