circle loss

circle loss@学习笔记

#前两天看了circle loss这篇文章,在此做个笔记
circle loss论文下载地址

triplet loss、softmax loss最大化类内相似度Sn、最小化类间相似度Sp。这篇文章首先对两种基本的深度特征学习(类别标签学习和样本对标签学习)有统一的范式。
首先做个预定义:对于特征空间中的单个样本x,假设存在与x相关的K个类内相似度评分和L个类间相似度评分。将这些相似度评分分别表示为{sip}(i = 1,2,···,K)和{sjn}(j = 1,2,···,L)在这里插入图片描述
下面解释公式1如何对类级标签学习和成对标签学习进行了统一:
给定类级标签,利用权重向量可以得到N-1个类间相似度(其他的标签),一个类内相似度(自身的标签)。
于是可以得到这样的公式,也就是AM-Softmax。
在这里插入图片描述
给定成对标签,利用L个负例样本特征和K个整理样本特征可以得到L个类间相似度,K个类内相似度。于是可以得到这样的公式,也就是triplet loss:
在这里插入图片描述

circle loss认为不同的相似度得分应该有不同的惩罚强度。如果一个相似度评分远远偏离最优,它应该受到较大的惩罚。如果相似度得分已经接近最优,则应适度优化。所以重新分配每个相似度的权重,以突出较少优化的相似度得分。

举个例子

比如sn,sp分别为0.8、0.9,此时sp已经非常大了,但是sn-sp还是很小,所以还要继续优化,但是我们优化的是sn-sp,也就是,不仅优化sn,同时还要继续优化sp,这样做就很不灵活,显然只大力惩罚s,比同时惩罚sn和sp更方便。

circle loss过程

首先将(sn−sp)泛化为(ansn−apsp),其中,an和ap是独立的权重因子,这样就允许sn和sp以不同的速度学习(公式(4))。
在这里插入图片描述
然后,分别以an和ap作为sn和sp的线性函数的系数,实现了对算法的分段学习,使算法的学习速度适应优化状态:相似度评分偏离最优值越远,权重因子越大(公式(5))
在这里插入图片描述
考虑类内和类间margin

在优化函数(sn−sp)时,因为sn和-sp是对称的,增加了一个差额m来增强优化,但是在circle loss中,sn和-sp是非对称的,因此,分别给sn和sp增加差额∆n和∆p:
在这里插入图片描述
公式(6)希望sp>∆p, sn<∆n。
下面简单地考虑二分类,那么决策边界为αn(sn−∆n)−αp(sp−∆p) = 0.
把相关变量用公式(5)代替,就可以得到这样的公式:
在这里插入图片描述
其中 C =(On −∆n)**2 +(Op −∆p)**2/4.
由公式(7)也能看出circle loss的边界是圆形的。其中圆的中心为:(sn,sp),半径为√C. 由于参数太多,考虑设置超参:Op = 1+m,On = −m,∆p = 1−m, ∆n = m.
根据上面的分析,最终的目标函数为:
在这里插入图片描述
其中:
在这里插入图片描述
Op = 1+m,On = −m,∆p = 1−m, ∆n = m.
优化
分别对sp、sn求偏导:
在这里插入图片描述
在这里插入图片描述

代码

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_42316533/article/details/109116678