COCO Loss

版权声明: https://blog.csdn.net/u013841196/article/details/89919686

引言:
本文基于一个简单的直觉,即高维空间中特征的余弦距离应该在一个类内足够近,跨类之间应该足够远,来解决:如何训练一个深层网络以获得跨类别的鉴别特征和类内的聚合特征。
即目的是:
拉近同类样本的特征(类内方差小)
拉远不同分类样本的特征(类间方差大)

本文提出congenerous cosine(COCO)算法来同时优化数据间的余弦相似度。它继承了softmax特性,使得类间特征具有可区分性,并且共享了度量学习中类质心的思想。

Optimizing Congenerous Cosine Distance
f ( i ) D f^{(i)}\in \Re ^{D} 表示第i个类别的特征向量,D表示为特征维度。
两个特征向量之间的余弦相似度为
在这里插入图片描述
注:余弦相似性度量两个样本在特征空间中的接近程度。

对期望损失的自然直觉是:增加类别内样本的相似性,并扩大类别间样本的质心距离。
1.最直观的损失函数是最大化下式:
在这里插入图片描述
β表示mini-batch,δ表示指示函数,ϵ表示数据稳定项。
上面的式子问题是计算复杂度太高,两个for循环比对,loss的复杂度是 O ( M 2 ) O(M^{2})

2.替代方案,训练过程中引导特征尽可能接近对应的正确的类中心
在这里插入图片描述
最大化的损失函数是
在这里插入图片描述
分子保证样本特征离正确的类中心距离尽可能接近,分母保证样本特征离错误类中心的距离尽可能远。

3.COCO Loss的实际计算流程:
(1) 输入特征与中心特征L2范数归一化
在这里插入图片描述
在这里插入图片描述
其中, c k c_{k} 为第 k 类目标的特征中心,是可以学习的,总共有 K类。
f ( i ) f^{(i)} 表示输入特征,i=1,…,N,即batch size为N。此外,α是一个比例因子,对性能有重要影响的可调节参数。
(2) 计算输入特征与每个特征中心的Cos距离
Cos距离的定义为 A B A B \frac{A\cdot B}{||A||\cdot ||B||} ,其取值范围为 [-1,+1],值越大表示二者越相似。
由于输入特征和中心特征已经做过归一化,因此其Cos距离可以简化为:
在这里插入图片描述
(3) 计算COCO loss
在这里插入图片描述
其中,
在这里插入图片描述
其中,B表示整个batch。分子项表示输入特征 f ( i ) f^{(i)}
与其对应的中心特征间的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,优化数据特征之间的余弦距离,同时扩大类间差异和类内相似度。


注:博众家之所长,集群英之荟萃。

猜你喜欢

转载自blog.csdn.net/u013841196/article/details/89919686