度量学习DML之Circle Loss

度量学习的目标:

  1. 相似的或者属于同一类的样本提取到的embedding向量之间具有更高的相似度,或者具有更小的空间距离
  2. 对于out-of samples的样本,也就是未见过的样本,希望也能提取到有效的embedding,也就是模型的泛化能力更好

Circle Loss

论文:《Circle Loss: A Unified Perspective of Pair Similarity Optimization》

参考:Circle Loss 感想 - 知乎

参考:如何理解与看待在cvpr2020中提出的circle loss? - 知乎

        以往的损失函数(如Triplet Loss)是通过训练使positive之间的相似度度量学习DML之Circle Loss大于positive和negative之间的相似度度量学习DML之Circle Loss,损失值的计算是通过度量学习DML之Circle Loss(有时也写作度量学习DML之Circle Loss)这种方式实现的,这种计算方式有一个特点,就是为了满足“positive之间的相似度度量学习DML之Circle Loss大于positive和negative之间的相似度度量学习DML之Circle Loss”这个条件,有两个优化方向:1)、增大度量学习DML之Circle Loss;2)、降低度量学习DML之Circle Loss。这两个优化方向的权重是相同的,这就导致了在同一个限制条件度量学习DML之Circle Loss下,在决策边界上的所有点都满足这个限制条件。如下图(a)中,只要度量学习DML之Circle Loss度量学习DML之Circle Loss之间满足度量学习DML之Circle Loss就行,这条决策边界上的任何点都是符合优化条件的。Cirlcle Loss认为这种方式是不灵活的,直觉上应该是偏离最优目标更远的样本对更应被重视,而不是一视同仁,Circle Loss就是以这个为出发点来设计的,如下图(b)。

度量学习DML之Circle Loss

         上图中(a)就是传统损失函数的处理方法,当度量学习DML之Circle Loss度量学习DML之Circle Loss之间不满足度量学习DML之Circle Loss时,这时候就需要优化度量学习DML之Circle Loss或者度量学习DML之Circle Loss,或者同时优化度量学习DML之Circle Loss度量学习DML之Circle Loss使得满足度量学习DML之Circle Loss。在上图(a)中,度量学习DML之Circle Loss, 度量学习DML之Circle Loss,这两个点都满足当度量学习DML之Circle Loss时的不等式条件,那么将C这个点优化到度量学习DML之Circle Loss或者度量学习DML之Circle Loss哪种结果是最好的呢?

        Circle Loss认为离最优值越远的样本对应该具备更大的优化权重,所以对度量学习DML之Circle Loss度量学习DML之Circle Loss分别进行了独立加权,这样优化目标就变成了度量学习DML之Circle Loss,其中度量学习DML之Circle Loss度量学习DML之Circle Loss的线性函数,度量学习DML之Circle Loss度量学习DML之Circle Loss的线性函数,且度量学习DML之Circle Loss度量学习DML之Circle Loss相互独立,用来控制度量学习DML之Circle Loss度量学习DML之Circle Loss自适应优化步长(allowing each similarity score to learn at its own pace)。对于上图中的A,B,C三个点,在相同的限制参数度量学习DML之Circle Loss控制下,图(a)中将A、B、C可能被优化到决策边界上的任意一点,图(b)中将A、B、C三点优化到圆形的决策边界度量学习DML之Circle Loss上,经过Circle Loss优化后的度量学习DML之Circle Loss度量学习DML之Circle Loss之间的分离度更大,效果更好。

        假设有一个空间特征向量embedding是度量学习DML之Circle Loss,假设与度量学习DML之Circle Loss属于相同ID的样本有K个,与度量学习DML之Circle Loss属于不同ID的样本有L个,即度量学习DML之Circle Loss度量学习DML之Circle Loss。在Circle Loss中,作者首先提出了一个基础版的损失函数如下:

度量学习DML之Circle Loss

        从上式可以看出,上述损失函数也是可以同时处理一个batch中的多个positive和多个negative的,分别计算batch中每一个positive和每一个negative之间的损失值,度量学习DML之Circle Loss用来控制度量学习DML之Circle Loss度量学习DML之Circle Loss之间的分离度,度量学习DML之Circle Loss起到损失尺度缩放的作用。

        上述损失函数的决策边界是度量学习DML之Circle Loss,对于度量学习DML之Circle Loss度量学习DML之Circle Loss的优化权重是相同的,Circle Loss对此进行改进,使用自学习得到的权重参数度量学习DML之Circle Loss度量学习DML之Circle Loss来控制度量学习DML之Circle Loss度量学习DML之Circle Loss的学习步长,Circle loss的损失函数如下:

度量学习DML之Circle Loss

        度量学习DML之Circle Loss度量学习DML之Circle Loss是非负的权重参数,用来控制度量学习DML之Circle Loss度量学习DML之Circle Loss的梯度大小。当度量学习DML之Circle Loss度量学习DML之Circle Loss与最优值偏离较大时,具有较大的梯度,偏离较小是,具有较小的梯度。假设度量学习DML之Circle Loss度量学习DML之Circle Loss的最优值分别是度量学习DML之Circle Loss度量学习DML之Circle Loss,那么对应的度量学习DML之Circle Loss度量学习DML之Circle Loss定义如下:

度量学习DML之Circle Loss

        上述公式说明,当度量学习DML之Circle Loss时,说明得到的度量学习DML之Circle Loss已经足够好了,不需要再进行惩罚了,同理,对于度量学习DML之Circle Loss也一样。在度量学习DML之Circle Loss优化方法中,限制参数度量学习DML之Circle Loss对于度量学习DML之Circle Loss度量学习DML之Circle Loss是等价的,作用于度量学习DML之Circle Loss上就是加上一个度量学习DML之Circle Loss,作用于度量学习DML之Circle Loss上就是减去一个度量学习DML之Circle Loss。但是在上述Circle Loss的公式中,由于引入了度量学习DML之Circle Loss度量学习DML之Circle Loss,导致度量学习DML之Circle Loss度量学习DML之Circle Loss的优化不再是等价的了,因此需要对度量学习DML之Circle Loss度量学习DML之Circle Loss分别使用独立的限制参数度量学习DML之Circle Loss,分别记做度量学习DML之Circle Loss度量学习DML之Circle Loss,Circle Loss的计算公式进一步演变为:

度量学习DML之Circle Loss

        其中度量学习DML之Circle Loss度量学习DML之Circle Loss分别用来控制异类和同类之间的margin大小。Circle Loss期望度量学习DML之Circle Loss度量学习DML之Circle Loss。这样的话Circle Loss就有5个超参数度量学习DML之Circle Loss度量学习DML之Circle Loss度量学习DML之Circle Loss度量学习DML之Circle Loss度量学习DML之Circle Loss。为了简单起见,作者将p度量学习DML之Circle Loss度量学习DML之Circle Loss度量学习DML之Circle Loss度量学习DML之Circle Loss设置如下:

度量学习DML之Circle Loss

度量学习DML之Circle Loss

度量学习DML之Circle Loss

度量学习DML之Circle Loss

        度量学习DML之Circle Loss度量学习DML之Circle Loss度量学习DML之Circle Loss度量学习DML之Circle Loss越小,对于训练集要求得到的预测置信度越高,在训练集上的拟合程度就越高,对于unseen的数据泛化能力就相对差一些,反之同理(不清楚这样理解是否恰当)。这样的话Circle Loss就只有两个超参数度量学习DML之Circle Loss度量学习DML之Circle Loss了。

度量学习DML之Circle Loss

        上图是关于超参数度量学习DML之Circle Loss度量学习DML之Circle Loss的对比实验结果。

度量学习DML之Circle Loss

        通过上图可以看到,在Circle Loss中,当度量学习DML之Circle Loss越小时,得到的度量学习DML之Circle Loss越大,度量学习DML之Circle Loss越小。

        Circle Loss实际用起来效果确实很nice,在使用时batch_size一定要大,不然效果就不是很nice了,我目前使用的batch_size=2048。

 

参考:深度度量学习-论文简评 - 知乎

参考:深度度量学习中的损失函数 - 知乎

上一篇:Python pyecharts绘制水球图


下一篇:HOW (AND HOW NOT) TO WRITE A GOOD SYSTEMS PAPER