Triplet Loss, Ranking Loss, Margin Loss

本文深入探讨了RankingLoss的概念,解释了它如何不同于CrossEntropyLoss和MSE,重点介绍了ContrastiveLoss、MarginLoss、HingeLoss和TripletLoss等变种。详细解析了Pairwise和Triplet Ranking Loss的工作原理,以及在线和离线Triplet Mining的方法。
部署运行你感兴趣的模型镜像

不同于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

您可能感兴趣的与本文相关的镜像

GPT-oss:20b

GPT-oss:20b

图文对话
Gpt-oss

GPT OSS 是OpenAI 推出的重量级开放模型,面向强推理、智能体任务以及多样化开发场景

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值