机器学习笔记:triplet loss

1 Triplet loss

        Triplet Loss,即三元组损失,其中的三元是Anchor、Negative、Positive。

        通过Triplet Loss的学习后使得Positive元和Anchor元之间的距离最小,而和Negative之间距离最大。( 其中Anchor为训练数据集中随机选取的一个样本,Positive为和Anchor属于同一类的样本,而Negative则为和Anchor不同类的样本。)

        换句话说,通过学习后,使得同类样本的positive样本更靠近Anchor,而不同类的样本Negative则远离Anchor。

1.2 目标函数

1.2.1 函数符号解释

||。。。||欧氏距离
Positive元和Anchor之间的欧式距离度量
Negative和Anchor之间的欧式距离度量
αPositive元和Anchor之间的欧式距离   和   Negative和Anchor之间的欧式距离  之间的最小差距
式子最后的“+”

“[。。。]”内的值大于零的时候,就取“[。。。]”内的值

“[。。。]”内的值小于零的时候,就取0

——>

A-N距离大于A-P距离+N0
A-N距离小于A-P距离+N这个距离

 1.3 margin取值

        triplet loss 目的就是使 loss 在训练迭代中下降的越小越好,也就是要使得 Anchor 与 Positive 越接近越好,Anchor 与 Negative 越远越好。

        当 margin 值越小时,loss 也就较容易的趋近于 0,于是AP距离不需要拉的太近,AN距离不需要拉的太远,就能使得 loss 很快的趋近于 0。——>这样训练得到的结果,不能够很好的区分和Anchor相似&和Anchor不同的图像。

        当margin越大时,就需要使得网络拉近 AP距离,拉远 AN距离。如果 margin 值设置的太大,很可能最后 loss 保持一个较大的值,难以趋近于 0 。

        因此,设置一个合理的 margin 值很关键,这是衡量相似度的重要指标。

        换言之,margin 值设置的越小,loss 很容易趋近于 0 ,但很难区分相似的图像。margin 值设置的越大,loss 值较难趋近于 0,甚至导致网络不收敛,但可以较有把握的区分较为相似的图像。

1.3.1 为什么要加margin

我们希望 A和P的距离越近越好,A和N的距离越远越好,于是如果没有margin的话,我们希望:

 但是这会导致一个问题,就是平凡解:

 于是我们加了margin 来避免平凡解:

 也即:

 

1.4 Triplet 梯度       

 

 

 参考文献:Triplet Loss及其梯度_jcjx0315的博客-CSDN博客

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

UQI-LIUWJ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值