Improved Deep Metric Learning with Multi-class N-pair Loss Objective

Improved Deep Metric Learning with Multi-class N-pair Loss Objective

Abstract

  • 已有的工作关注于contrastive loss和triplet loss常常收敛的比较慢; 而且在每个小batch中只有一个negative,而并没有与其他的negative进行交互.

  • 本文提出的multi-class N-pair loss 就是为了解决上面遇到的一些问题。

  • 并且提出了一个batch的办法来解决当batch中的量增加时导致的pair成平方级的增加的问题。

(N+1)-tuplet loss

avator

如上图所示,左边是triplet-loss, 右边是(N+1)-tuplet loss(即一个query的x, 一个positive, N个negative).

回顾 Distance Metric Learning

  • Contrastive-loss 输入的是一对pair, 判断是否是来自于同一个类别还是不是同一个类别。

avator

其中m是margin, 用来强制不同类别的距离要大于m.

  • Triplet 的想法和contrastive loss相似,但是由三个输入组成,即一个query, 一个positive, 一个negative

avator

这两种loss在没有特殊的采样策略或者hard-negative mining的情况下,收敛的很慢,因为随机的采样时,可能得到的大多都是easy negative.

Deep Metric Learning with Multiple Negative Examples

使用triplet loss的思想在于对于输入(query, pos, neg),希望query 与pos的距离近,query 与neg的距离远. 但是这样的话,作者认为每次只见到了一个负样本,而希望的形式是与所有的负样本的距离都很远。解决这样的办法可以从数据的角度,即可以多优化那些hard-negative,但是当输入的类别较多的时候,做hard-negative mining不是太容易。也可以从Loss function的角度出发来解决这个问题。比如一次输入多个样本

  • (N+1)-tuplet loss

avator

f 就是embedding vector, 理想情况下N=L是最好的,其中L是总类别的个数.

  • 说明(N+1)-tuplet loss是triplet-loss的推广

avator

并且特别地对于(L+1)-tuplet loss可以写成

avator

这刚好就是多类别的 softmax-loss

  • N-pair loss

对于(N+1)-tuplet loss 当batch是M的时候, 一次更新需要M*(N+1)个样本,这样计算负担有些重。作者设计了下面的一种策略。

即针对N个不同类别的N个pairs

avator

可以按下面的方式构建新的N tuplets

avator

即每个tuplet中,只有一个与query是相同类别的,另外的(N-1)个都不是相同类别的. 比较如下

avator

这样的话只需要2N个样本就可以实现N-pair-mcloss.

打赏,谢谢~~

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,多谢支持~

打开微信扫一扫,即可进行扫码打赏哦