最近在看人脸表情识别论文的时候,看到了有用中心损失函数(Cemter Loss),中心损失它仅仅用来减少类内(比如说同一表情)的差异,而不能有效增大类间(比如说不同表情)的差异性。如下图所示:
上图中,图(a)表示softmax loss学习到的特征描述 。图(b)表示softmax loss + center loss 学习到的特征描述,他能把同一表情的样本之间的距离拉近一些,使其相似性变大,尽量的往样本中心靠拢,但可以看出他没有把不同表情之间的样本距离拉大。
它的定义是这样的:
类中心c:每一个样本的特征需要通过一个好的网络到达特征层获得,这样计算完后所有样本的特征的平均值为类中心c,而好的网络需要是在有类中心加入的情况下才能得到...
优化过程:
没法直接获得c,所以将其放到网络里自己生成,在每一个batch里更新center.即随机初始化center,而后每一个batch里计算当前数据与center的距离,而后将这个梯度形式的距离加到center上.类似于参数修正.同样的类似于梯度下降法,这里再增加一个scale度量a,使得center不会抖动.