Triplet Loss, Ranking Loss, Margin Loss

不同于cross entry loss或者MSE等等,他们的目标去表征模型的输出与实际的输出差距是多少。但是ranking loss实际上是一种metric learning,他们学习的相对距离,而不在乎实际的值。由于在不同场景有不同的名字,包括 Contrastive Loss, Margin Loss, Hinge Loss or Triplet Loss.

ranking loss 应用十分广泛,包括是二分类,例如人脸识别,是一个人不是一个人。

ranking loss 有非常多的叫法,但是他们的公式实际上非常一致的。大概有两类,一类是输入pair 对,另外一种是输入3塔结构。

Pairwise Ranking Loss

对于负样本,如果negative和anchor的具体大于m,那么就可不用管了,直接=0,不用再费劲去优化了;正样本就是postive和anchor的距离。

如果就是二分类,那么也可以如下形式

Triplet Ranking Loss

  • easy triplets(简单三元组): triplet对应的损失为0的三元组,形式化定义为d(a,n)>d(a,p)+margin,也就是负样本的距离远大于正样本的距离。
  • hard triplets(困难三元组): negative example 与anchor距离小于anchor与positive example的距离,形式化定义为d(a,n)<d(a,p),也就是负样本的距离远小于正样本的距离,意味着是易混淆的case。
  • semi-hard triplets(一般三元组): negative example 与anchor距离大于anchor与positive example的距离,但还不至于使得loss为0,即d(a,p)<d(a,n)<d(a,p)+margin,依旧是介于能区分与容易区分之间,有差距但是差距不够大。

接下来的问题就是怎么构造负样本。

在triplet loss 中有如下的方式

Offline triplet mining

离线方式的triplet mining将所有的训练数据喂给神经网络,得到每一个训练样本的编码,根据编码计算得到negative example与anchor和positive example之间的距离,根据这个距离判断semi-hard triplets,hard triplets还是easy triplets。offline triplet mining 仅仅选择select hard or semi-hard triplets,因为easy triplet太容易了,没有必要训练

Online triplet mining

-batch all: 计算所有的valid triplet,对6hard 和 semi-hard triplets上的loss进行平均。

- 不考虑easy triplets,因为easy triplets的损失为0,平均会把整体损失缩小

- 将会产生PK(K-1)(PK-K)个triplet,即PK个anchor,对于每个anchor有k-1个可能的positive example,PK-K个可能的negative examples

- batch hard: 对于每一个anchor,选择hardest positive example(距离anchor最大的positive example)和hardest negative(距离anchor最小的negative example),

- 由此产生PK个triplet

- 这些triplet是最难分的

 

一些别名

在不同场景有不同的名字

  • Ranking loss: 这个名字主要是在搜索场景用,希望模型能能够以一定顺序rank item。
  • Margin Loss: 这个则是希望用margin去代表距离 。
  • Contrastive Loss:

  • Triplet Loss: 通常是3塔结构
  • Hinge loss: 也是max-margin objective. 也是SVM 分类的损失函数。max{0,margin-(S(Q,D+)-S(Q,D-))}
  • WRGP loss 这个主要原理是认为随机抽样1000个

 

 

https://zhuanlan.zhihu.com/p/101143469

 

https://gombru.github.io/2019/04/03/ranking_loss/

mountain blue:Triplet Network, Triplet Loss及其tensorflow实现

https://medium.com/@gabrieltsen

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值