您的位置首页百科知识

如何理解与看待在cvpr2020中提出的circle loss?

如何理解与看待在cvpr2020中提出的circle loss?

的有关信息介绍如下:

如何理解与看待在cvpr2020中提出的circle loss?

我觉得这篇文章最大的贡献并不是统一了triplet loss和softmax ce loss这两种形式,在17年的NormFace和ProxyTriplet文章里已经提出了这两者的统一形式。

这篇文章最有意思的点其实就在本问题某个回答里原作者 @孙奕帆 所提到的multiple positive情况下该如何改造softmax的问题,其实也就是论文一开始的公式:

乍一看这个公式好像是把positive与negative分离开了,但直接看这个公式会带来一个疑问:不论是triplet loss还是softmax ce loss,都是正负平衡的loss,positive similarity和negative similarity拿到的梯度都是相等的,而这个loss里正样本有K个,负样本有L个,还平衡吗?

要回答这个问题,得首先回顾一下我之前的文章(最好把一整个系列都看了):https://zhuanlan.zhihu.com/p/45014864

在这篇文章中,我提到了Softmax中使用的LogSumExp函数是max函数的一个平滑近似:

,

其中 越大,近似效果越好。

通过加一个负号,我们可以使LSE也能够近似min函数:

。

类似的有,softplus函数是relu函数的一个近似:

利用这两个公式来改写一下公式(1):

对比AM Softmax做同样转化后的形式(详见https://zhuanlan.zhihu.com/p/52108088):

。

这两者的区别就在于 用 替代了 里单个的 。

之前我们说过,AM Softmax的目标函数用文字描述是:

类似的,替代之后的文字描述变为:

这个说法也等价于:

仔细品一下这几个句子就会发现其实这几个说法都是等价的。不管哪个说法,都完成了我们想要做到的目标:让同类相似度与非同类相似度之间拉开一定的margin。

另外注意到LSE函数有一个很有意思的性质:它的梯度恰好是softmax函数。也就是说,LSE的梯度是按softmax的指数下降来分配的。而从上边的公式可以看出,不论 拿到多少梯度, 也都会拿到同等大小的相反的梯度。这样我一开始提出的问题就解决了,实际上这个损失函数不管K和L的差距有多大,同类和非同类的相似度都会拿到一样多的梯度,保持了梯度平衡性。这一点也在我的softmax系列文章之二中有比较直观的讲解:https://zhuanlan.zhihu.com/p/45368976 。

=================我是分界线=====================

@Yifan Sun 提到了一个错误的做法:

下面我们来看看这个公式错在哪里:

上边我们提到 是在优化 的下界和 的上界,以达到所有的 与 分开的目的,而这个 实际上是在优化 的上界和 的上界,能达到.......我也不知能达到一个什么目的,强行编的话,只能说它让已经分对了的 分得更对,而把本来分得不好的 给忽略掉,emmm....

总之可以看到,在去掉各种smooth后,我们还原了这些损失函数的本来面目,这样我们就更容易理解其本质,的错误之处就显而易见了。