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距离+N 0
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博客

机器学习笔记:triplet loss相关推荐

  1. 【机器学习笔记】- 纵观全局 监督学习中的4个重要内容:模型、Loss/Cost、目标和优化

    [机器学习笔记]- 纵观全局 监督学习中的4个重要内容:模型.Loss/Cost.目标和优化 监督学中的4个重要内容:模型.Loss/Cost.目标.优化 发现想做数据分析,除了要学习概率统计,也真的 ...

  2. Person Re-Identification by Multi-Channel Parts-Based CNN with Improved Triplet Loss Function 阅读笔记

    Person Re-Identification by Multi-Channel Parts-Based CNN with Improved Triplet Loss Function 阅读笔记 此篇 ...

  3. 论文笔记3 --(ReID)In Defense of the Triplet Loss for Person Re-Identification

    <In Defense of the Triplet Loss for Person Re-Identification> 论文:https://arxiv.org/abs/1703.07 ...

  4. Triplet Loss笔记

    在有监督学习中,一般都有固定数量的类别.通常我们可以用Softmax结合Cross Entropy Loss来做分类. 在监督学习中,会有变化数量的类别,这个时候我们可以用Triplet Loss来表 ...

  5. Triplet Loss: A Unified Embedding for Face Recognition and Clustering(论文阅读笔记)(2015CVPR)

    论文链接:<FaceNet: A Unified Embedding for Face Recognition and Clustering> 摘要 尽管人脸识别领域最近取得了重大进展[1 ...

  6. 机器学习笔记七:损失函数与风险函数

    一.损失函数 回顾之前讲过的线性回归模型,我们为了要学习参数使得得到的直线更好的拟合数据,我们使用了一个函数 这个函数就是比较模型得到的结果和"真实值"之间的"差距&qu ...

  7. Scikit-Learn 机器学习笔记 -- SVM

    Scikit-Learn 机器学习笔记 – SVM 参考文档: handson-ml import numpy as np# 加载鸢尾花数据集 def load_dataset():from skle ...

  8. 机器学习笔记(3) 随机森林

    random forest 和 extra-trees是对decison tree做ensemble而得到最终模型的两种算法. 阅读本文前需要先了解一下 机器学习笔记1:决策树 机器学习笔记2:集成学 ...

  9. matlab回归问题,机器学习笔记(一)—— 线性回归问题与Matlab求解

    给你多组数据集,例如给你很多房子的面积.房子距离市中心的距离.房子的价格,然后再给你一组面积. 距离,让你预测房价.这类问题称为回归问题. 回归问题(Regression) 是给定多个自变量.一个因变 ...

最新文章

  1. 怎样用ug画铝型材_用UG画钻头,适合初学UG的小伙伴,快来学习吧!
  2. 27 多进程之进程池Pool
  3. pythonapp下载-QPythonapp下载
  4. Android应用--简、美音乐播放器获取专辑图片(自定义列表适配器)
  5. (chap5 web服务器) 保存资源的缓存
  6. vue表单中批量导入功能_spring boot mybatis+ vue 使用POI实现从Excel中批量导入数据
  7. CDH 元数据库升级
  8. 【ES】Mac 下安装ES 报错 Failed to create native process factories for Machine Learning
  9. STM32重上电后,HAL_GetDEVID返回0
  10. Redis五大数据类型以及操作---散列表
  11. 打造个人专属邮箱,域名邮箱,邮件系统
  12. 云服务器日志4625登录验证失败
  13. 计算机专业想进国企考研可以考什么,毕业后想进国企,可以报考这些专业,更容易拿到铁饭碗,前途无量...
  14. 写给女孩:二十岁之后的每一年都很重要
  15. MySQL学习(十六):数据类型之日期与时间类型
  16. XAMPP+PhpStorm
  17. ORA-12516解决
  18. 珍藏多年的神网站都捐了,你需要的我都有,有了这些网站工作生活不用愁(二)
  19. XMind Zen 2020 10.3.1注册使用
  20. 苍蝇眼睛_桌子的布局像苍蝇一样下降=)

热门文章

  1. 关于Java的10个谎言
  2. 进程外Session和进程内Session存储
  3. jquery 绑定动态元素
  4. mysql cluster 安装NDB二进制版本
  5. 港湾命令行 配管理IP
  6. 2020年12月大学英语四六级英语作文预测(XDF王江涛)
  7. linux cdig 工具,linux常用工具su与su -
  8. OSError: Cannot initialize new instance of inotify, Errno=Too many open files (EMFILE) 问题解决
  9. 《剑指offer》c++版本 5.替换空格
  10. tcp/ip 协议栈Linux源码分析二 IPv4分片报文重组分析二