triplet loss 原理以及梯度推导

原创 2015年07月07日 13:01:52

【前言】
最近,learning to rank 的思想逐渐被应用到很多领域,比如google用来做人脸识别(faceNet),微软Jingdong Wang 用来做 person-reid 等等。learning to rank中其中重要的一个步骤就是找到一个好的similarity function,而triplet loss是用的非常广泛的一种。

【理解triplet】

这里写图片描述

如上图所示,triplet是一个三元组,这个三元组是这样构成的:从训练数据集中随机选一个样本,该样本称为Anchor,然后再随机选取一个和Anchor (记为x_a)属于同一类的样本和不同类的样本,这两个样本对应的称为Positive (记为x_p)和Negative (记为x_n),由此构成一个(Anchor,Positive,Negative)三元组。

【理解triplet loss】
有了上面的triplet的概念, triplet loss就好理解了。针对三元组中的每个元素(样本),训练一个参数共享或者不共享的网络,得到三个元素的特征表达,分别记为:这里写图片描述 。triplet loss的目的就是通过学习,让x_a和x_p特征表达之间的距离尽可能小,而x_a和x_n的特征表达之间的距离尽可能大,并且要让x_a与x_n之间的距离和x_a与x_p之间的距离之间有一个最小的间隔这里写图片描述。公式化的表示就是:
这里写图片描述

对应的目标函数也就很清楚了:
这里写图片描述
这里距离用欧式距离度量,+表示[]内的值大于零的时候,取该值为损失,小于零的时候,损失为零。
由目标函数可以看出:

  • 当x_a与x_n之间的距离 < x_a与x_p之间的距离加这里写图片描述时,[]内的值大于零,就会产生损失。
  • 当x_a与x_n之间的距离 >= x_a与x_p之间的距离加这里写图片描述时,损失为零。

【triplet loss 梯度推导】
上述目标函数记为L。则当第i个triplet损失大于零的时候,仅就上述公式而言,有:
这里写图片描述

【算法实现时候的提示】
可以看到,对x_p和x_n特征表达的梯度刚好利用了求损失时候的中间结果,给的启示就是,如果在CNN中实现 triplet loss layer, 如果能够在前向传播中存储着两个中间结果,反向传播的时候就能避免重复计算。这仅仅是算法实现时候的一个Trick。

下一节给出caffe中实现triplet loss的方法和代码。

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/tangwei2014/article/details/46788025

分布式爬虫以及Scrapy源码剖析

信息时代,数据为王,互联网包含了迄今为止最有用的数据集,并且大部分可以免费公开访问,但是由于数据被嵌入在众多网站的结构和样式中导致难以被复用,应运而生出现了网络爬虫,使用程序自动获取互联网上的资源。本系列课程将带你开发自动化程序实现数据自动采集,针对众多网站防止数据被获取采取防爬虫方案,课程中包含对防爬策略所有解决方法,以及如何提高爬虫性能,爬虫方向真正做到“遇鬼杀鬼,遇神杀神,所向披靡”。
  • 2017年09月22日 10:25

Triplet Loss及其梯度

Triplet Loss及其梯度  Triplet Loss简介 我这里将Triplet Loss翻译为三元组损失,其中的三元也就是如下图的Anchor、Negative、Positive,如下图...
  • jcjx0315
  • jcjx0315
  • 2017-08-14 13:35:01
  • 1134

Re-ID with Triplet Loss

一篇讲Person Re-ID的论文,与人脸识别(认证)有很多相通的地方。 《In Defense of the Triplet Loss for Person Re-Identification》...
  • shuzfan
  • shuzfan
  • 2017-04-11 17:48:38
  • 6561

深度学习triplet loss 做人再识别(person-reid)

最近需要做这个课题,采用深度学习做,废话不多说,直接说一下我的思路以及遇到的问题,希望能有人交流一下(哭,效果一直不好,找不到原因)。主要是参照cvpr的这篇论文Person Re-Identific...
  • gu_gu_
  • gu_gu_
  • 2017-02-21 14:33:45
  • 6624

tripletLoss,训练,网络配置

网络定义中的使用类似softmaxlosslayer,最后两层对应修改举例如下: #======================softmax==================== # layer ...
  • hecunxin0
  • hecunxin0
  • 2017-08-03 14:08:42
  • 969

Triplet Loss、Coupled Cluster Loss 探究

因为要区分相似图像,所以研究了一下 Triplet Loss,还有今年 CVPR 的一篇文章:《Deep Relative Distance Learning: Tell the Difference...
  • u010167269
  • u010167269
  • 2016-07-25 20:49:46
  • 8640

基于Triplet loss 函数训练人脸识别深度网络

基于Triplet loss 函数训练人脸识别深度网络 在FaceNet中,作者提出了基于度量学习的误差函数Triplet loss,其思想来源如下: ∥∥xai−xpi∥∥22+thresh...
  • kklots
  • kklots
  • 2015-10-08 11:53:22
  • 13931

Beyond triplet loss—— Re-ID

一篇讲Person Re-ID的论文,来自CVPR2017,同样是改进了Triplet Loss。《Beyond triplet loss: a deep quadruplet network for...
  • shuzfan
  • shuzfan
  • 2017-04-15 21:55:51
  • 4068

triplet loss layer原理

【前言】  最近,learning to rank 的思想逐渐被应用到很多领域,比如google用来做人脸识别(faceNet),微软Jingdong Wang 用来做 person-reid 等等...
  • Allyli0022
  • Allyli0022
  • 2017-06-16 16:45:38
  • 533

triplet loss (原理 + 实现)

一、triplet loss 原理 triplet:一个三元组,这个三元组是这样构成的:从训练数据集中随机选一个样本,该样本称为Anchor,然后再随机选取一个和Anchor (记为x_a)属于同一...
  • qq_36620489
  • qq_36620489
  • 2017-12-18 15:38:18
  • 230
收藏助手
不良信息举报
您举报文章:triplet loss 原理以及梯度推导
举报原因:
原因补充:

(最多只允许输入30个字)