- 《Rethinking Feature Discrimination and Polymerization for Large-scale Recognition》
2017,Yu Liu et al. COCO loss
参考:https://blog.csdn.net/cdknight_happy/article/details/79232002
https://blog.csdn.net/shuzfan/article/details/78310622
源码:https://github.com/sciencefans/coco_loss
引言:
本文基于一个简单的直觉,即高维空间中特征的余弦距离应该在一个类内足够近,跨类之间应该足够远,来解决:如何训练一个深层网络以获得跨类别的鉴别特征和类内的聚合特征。
即目的是:
拉近同类样本的特征(类内方差小)
拉远不同分类样本的特征(类间方差大)
本文提出congenerous cosine(COCO)算法来同时优化数据间的余弦相似度。它继承了softmax特性,使得类间特征具有可区分性,并且共享了度量学习中类质心的思想。
Optimizing Congenerous Cosine Distance
让
表示第i个类别的特征向量,D表示为特征维度。
两个特征向量之间的余弦相似度为
注:余弦相似性度量两个样本在特征空间中的接近程度。
对期望损失的自然直觉是:增加类别内样本的相似性,并扩大类别间样本的质心距离。
1.最直观的损失函数是最大化下式:
β表示mini-batch,δ表示指示函数,ϵ表示数据稳定项。
上面的式子问题是计算复杂度太高,两个for循环比对,loss的复杂度是
。
2.替代方案,训练过程中引导特征尽可能接近对应的正确的类中心
最大化的损失函数是
分子保证样本特征离正确的类中心距离尽可能接近,分母保证样本特征离错误类中心的距离尽可能远。
3.COCO Loss的实际计算流程:
(1) 输入特征与中心特征L2范数归一化
其中,
为第 k 类目标的特征中心,是可以学习的,总共有 K类。
表示输入特征,i=1,…,N,即batch size为N。此外,α是一个比例因子,对性能有重要影响的可调节参数。
(2) 计算输入特征与每个特征中心的Cos距离
Cos距离的定义为
,其取值范围为 [-1,+1],值越大表示二者越相似。
由于输入特征和中心特征已经做过归一化,因此其Cos距离可以简化为:
(3) 计算COCO loss
其中,
其中,B表示整个batch。分子项表示输入特征
与其对应的中心特征间的Cos距离;分母项表示输入特征到所有中心特征距离之和。 通过取负对数,我们会发现该Loss的优化目标是分子越大越好(类内Cos相似度高),分母越小越好(类间Cos相似度低)。
需要注意的是: 理论上,上式分母中应该要求m≠k,即分母不应该再考虑同类之间的Cos距离。 但实际操作发现,上式对于收敛也不会有问题,同时会使得计算简单一点。
总体思路:首先对特征向量和中心点进行归一化操作,然后对特征进行尺度缩放,再计算COCO loss。
如何选取最优的α?
上面计算 Loss时用到一个需要人为指定的缩放参数α,该参数对网络的性能有明显影响。 以Cifar10为例,α=1时,错误率为12.4%,α=10时,错误率为7.22%。
文章给出了α选取最佳值的“建议”:
其中, K 为分类数目,ϵ 为Loss上界。
作者实验发现, ϵ=10−4 是一个典型值,此时则有:
需要注意的是: 上式仅仅是指导作用。 比如Cifar10和MNIST同是分10类,但作者却建议MNIST数据集中α=1。
几种损失函数学习到的特征分布情况对比图:
实验结果
首先实验结果表明了,太小的α时错误率较大,这个结论和l2-softmax论文里的结论是一致的;后续实验也表明了相比softmax loss和triplet loss,coco loss学习的特征高内聚、低耦合;coco-loss在训练过程中也可以比较稳定的收敛。
总结:
本文提出一个congenerous cosine(COCO)loss,优化数据特征之间的余弦距离,同时扩大类间差异和类内相似度。