COCO Loss

版权声明:本文为博主原创文章,转载请注明出处 https://blog.csdn.net/shuzfan/article/details/78310622

2017NIPS: 《Rethinking Feature Discrimination and Polymerization for Large-scale Recognition》

Github项目主页: https://github.com/sciencefans/coco_loss

文章方法简称 congenerous cosine loss, “COCO Loss”,其目的同样是:

  • 拉近同类样本的特征(类内方差小)
  • 拉远不同分类样本的特征(类间方差大)

相较于早些时间的Center Loss, COCO Loss 的效果更好,同时计算复杂度上也有所降低。

1. 方法介绍

下面直接介绍该Loss的实际计算流程:

(1) 输入特征与中心特征归一化

\(\hat {f^{(i)}}=\frac{\alpha f^{(i)}}{|f^{(i)}|}\)

\(\hat c_k=\frac{c_k}{|c_k|}\)

其中, \(c_k\) 为第 \(k\) 类目标的特征中心,是可以学习的,总共有 \(K\)类。 \(f^{(i)}\) 表示输入特征,\(i=1,…,N\),即batch size为 \(N\)。 此外, \(\alpha\) 是一个对性能有重要影响的可调节参数,后面会介绍。

(2) 计算输入特征与每个特征中心的Cos距离

Cos距离的定义为 \(\frac{A\cdot B}{|A|\cdot|B|}\) ,其取值范围为 [-1,+1],值越大表示二者越相似。

由于输入特征和中心特征已经做过归一化,因此其Cos距离可以简化为:

\(d = \hat c_k^T \cdot \hat {f^{(i)}}\)

(3) 计算COCO loss

\(L^{COCO}(f^{(i)},c_k) = -\sum_{i\in \mathbb{B}}\log{\frac{exp(\hat c_k^T \cdot \hat {f^{(i)}})}{\sum_m exp(\hat c_m^T \cdot \hat {f^{(i)}})}}\)

其中,\(\mathbb{B}\) 表示整个batch。分子项表示输入特征 \(f^{(i)}\) 与其对应的中心特征间的Cos距离;分母项表示输入特征到所有中心特征距离之和。 通过取负对数,我们会发现该Loss的优化目标是分子越大越好(类内Cos相似度高),分母越小越好(类间Cos相似度低)。

需要注意的是: 理论上,上式分母中应该要求 \(m \neq k\),即分母不应该再考虑同类之间的Cos距离。 但实际操作发现,上式对于收敛也不会有问题,同时会使得计算简单一点。

至于反向传播求导部分不再介绍,有兴趣的可以参看原文。

2. 其它补充内容

(1) 如何选取最优的\(\alpha\)?

上面计算 Loss时用到一个需要人为指定的缩放参数 \(\alpha\),该参数对网络的性能有明显影响。 以Cifar10为例,\(\alpha = 1\)时,错误率为12.4%,\(\alpha = 10\)时,错误率为7.22%。

文章给出了\(\alpha\)选取最佳值的“建议”:

\(\alpha > \frac{1}{2} \log \frac{K-1}{exp(\epsilon) - 1}\)

其中, \(K\) 为分类数目,\(\epsilon\) 为Loss上界。

作者实验发现, \(\epsilon = 10^{-4}\) 是一个典型值,此时则有:

\(\alpha > \frac{1}{2} \log {(K-1)} + 3\)

需要注意的是: 上式仅仅是指导作用。 比如Cifar10和MNIST同是分10类,但作者却建议MNIST数据集中\(\alpha=1\)。

(2) 可视化对比效果如何?

这里写图片描述

(3) 一些可能需要注意的TRICK?

  • 特征中心初始化。 默认采用随机初始化。 建议在finetune好的模型的基础上进行网络初始化。
  • second is we do not normalize the feature to 1. There are some numerical problems for gradients of centroids if we normalize all features and weights to 1. In MNIST, we initialize the scaler to 1 for weights and 2 for features while in PAPA we set 30 and 100, respectively.
阅读更多 登录后自动展开
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页