Contrastive loss 最初源于 Yann LeCunDimensionality Reduction by Learning an Invariant Mapping” CVPR 2006。
该损失函数主要是用于降维中,即本来相似的样本,在经过降维(特征提取)后,在特征空间中,两个样本仍旧相似;而原本不相似的样本,在经过降维后,在特征空间中,两个样本仍旧不相似。同样,该损失函数也可以很好的表达成对样本的匹配程度

Contrastive Loss 定义

在caffe的孪生神经网络(siamese network)中,其采用的损失函数是contrastive loss,这种损失函数可以有效的处理孪生神经网络中的paired data的关系。contrastive loss的表达式如下:
L ( W , ( Y , X 1 , X 2 ) ) = 1 2 N ∑ n = 1 N Y D W 2 + ( 1 − Y ) m a x ( m − D W , 0 ) 2 L(W, (Y, X_1, X_2))=\frac{1}{2N}\sum_{n=1}^NYD_W ^2+(1-Y)max(m-D_W,0)^2 L(W,(Y,X1​,X2​))=2N1​n=1∑N​YDW2​+(1−Y)max(m−DW​,0)2
其中 D W ( X 1 , X 2 ) = ∣ ∣ X 1 − X 2 ∣ ∣ 2 = ( ∑ i = 1 P ( X 1 i − X 2 i ) 2 ) 1 2 D_W(X_1, X_2)=||X_1 - X_2||_2 = (\sum^P_{i=1}{(X^i_1 - X^i_2)^2})^\frac{1}{2} DW​(X1​,X2​)=∣∣X1​−X2​∣∣2​=(∑i=1P​(X1i​−X2i​)2)21​,代表两个样本特征 X 1 X_1 X1​ 和 X 2 X_2 X2​ 的欧氏距离(二范数) P P P 表示样本的特征维数, Y Y Y 为两个样本是否匹配的标签, Y = 1 Y=1 Y=1 代表两个样本相似或者匹配, Y = 0 Y=0 Y=0 则代表不匹配, m m m 为设定的阈值, N N N 为样本个数。

观察上述的contrastive loss的表达式可以发现,这种损失函数可以很好的表达成对样本的匹配程度,也能够很好用于训练提取特征的模型。

  • 当 Y = 1 Y = 1 Y=1(即样本相似时),损失函数只剩下 L S = 1 2 N ∑ n = 1 N Y D W 2 L_S = \frac{1}{2N}\sum_{n=1}^NYD_W ^2 LS​=2N1​∑n=1N​YDW2​ ,即原本相似的样本,如果在特征空间的欧式距离较大,则说明当前的模型不好,因此加大损失。

  • 当 Y = 0 Y = 0 Y=0(即样本不相似时),损失函数为 L D = 1 2 N ∑ n = 1 N ( 1 − Y ) m a x ( m − D W , 0 ) 2 L_D = \frac{1}{2N}\sum_{n=1}^N (1-Y)max(m-D_W,0)^2 LD​=2N1​∑n=1N​(1−Y)max(m−DW​,0)2 ,即当样本不相似时,其特征空间的欧式距离反而小的话,损失值会变大,这也正好符号我们的要求。

    [注意这里设置了一个阈值margin,表示我们只考虑不相似特征欧式距离在0~margin之间的,当距离超过margin的,则把其loss看做为0(即不相似的特征离的很远,其loss应该是很低的;而对于相似的特征反而离的很远,我们就需要增加其loss,从而不断更新成对样本的匹配程度)]

这张图表示的就是损失函数值与样本特征的欧式距离之间的关系,其中红色虚线表示的是相似样本的损失值,蓝色实线表示的不相似样本的损失值。

梯度计算

论文中使用stochastic gradient descent 来不断更新 D W D_W DW​,不断减小loss,更好表达成对样本的匹配程度。
(这里我们先忽略累和操作,后面自己加上即可)

  • Y = 1(即样本相似时),损失函数为 L S = 1 2 N ∑ n = 1 N D W 2 L_S = \frac{1}{2N}\sum_{n=1}^ND_W ^2 LS​=2N1​∑n=1N​DW2​ ,此时计算梯度为:
    ∂ L S ∂ W = D W ∂ D W ∂ W \frac{\partial L_S}{\partial W} = D_W\frac{\partial D_W}{\partial W} \\ ∂W∂LS​​=DW​∂W∂DW​​

即分别对 X 1 X_1 X1​和 X 2 X_2 X2​求偏导,更新梯度 :

  • Y = 0 (即样本不相似时),损失函数为 L D = 1 2 N ∑ ( 1 − Y ) m a x ( m − D W , 0 ) 2 L_D = \frac{1}{2N}\sum (1-Y)max(m-D_W,0)^2 LD​=2N1​∑(1−Y)max(m−DW​,0)2,此时计算梯度为 :

    ∂ L D ∂ W = { 0 , D W &gt; m − ( m − D W ) ∂ D W ∂ W , D W &lt; m \frac{\partial L_D}{\partial W} = \left\{ \begin{matrix} &amp;0 &amp;, D_W &gt; m \\ &amp;-(m - D_W)\frac{\partial D_W}{\partial W} &amp;, D_W &lt; m \end{matrix}\right. ∂W∂LD​​={​0−(m−DW​)∂W∂DW​​​,DW​>m,DW​<m​

同理,当 D W &lt; m D_W &lt; m DW​<m时,分别对 X 1 X_1 X1​和 X 2 X_2 X2​求偏导:

Spring Model Analogy 弹簧模型类比

弹簧模型公式:
F = − K X F = -KX F=−KX
(F表示两点间弹簧的作用力,K是弹簧的劲度系数,X为弹簧拉伸或收缩的长度,弹簧静止状态时X=0)

论文中将该contrastive loss损失函数类比于弹簧模型:将成对的样本特征,使用该损失函数来表达成对样本特征的匹配程度。成对的样本特征之间(类比于图中的一个个点),我们假设这些点之间都有一个弹簧,弹簧静止时长度为0,点对之间无作用力。①对于样本相似的特征,相当于其间的弹簧产生了正位移X(X < m),即弹簧被拉伸了X的长度,此时两个相似特征(点)之间存在吸引力。②对于样本不相似的特征,相当于其间的弹簧产生的了负位移,即弹簧被压缩了,此时两个不相似特征之间存在排斥力。注意弹簧的特性:当两点之间弹簧位移超X>m时,此时,弹簧发生形变,此时两点之间视为没有吸引力了。具体如下图所示:

结合上面求梯度的公式也可以很好的理解该损失函数的思想,上面的 ∂ L S ∂ W \frac{\partial L_S}{\partial W} ∂W∂LS​​ 和 ∂ L D ∂ W \frac{\partial L_D}{\partial W} ∂W∂LD​​ 代表两点间弹簧的作用力F, ∂ D W ∂ W \frac{\partial D_W}{\partial W} ∂W∂DW​​ 对应弹簧的劲度系数, D W D_W DW​ 和 − ( m − D W ) -(m - D_W) −(m−DW​)代表弹簧的缩放位移。

上图显示了类比的弹簧系统。实心圆表示与中心点相似的点。空心圆圈代表不同的点。弹簧显示为红色曲折线。作用在点上的力以蓝色箭头显示。箭头的长度近似给出了力的强度。在右侧的两个图中,x轴是距离 D W D_W DW​,y轴是损失函数的值。(a)中显示使用仅吸引attractonly弹簧连接到相似点的点。(b)表示相似点对的损失函数及其梯度。(c)表示该点仅与半径为m的圆内的不同点连接,仅具有m-repulse-only排斥弹簧连接到不相似的点。(d)显示不相似点对相关的损失函数及其梯度。(e)显示一个点被不同方向的其他点拉动,形成平衡的情况。

Reference:

  • Dimensionality Reduction by Learning an Invariant Mapping
  • https://blog.csdn.net/autocyz/article/details/53149760

Contrastive Loss 对比损失函数及梯度的计算相关推荐

  1. Contrastive Loss 对比损失函数

    Contrastive Loss 定义 在caffe的孪生神经网络(siamese network)中,其采用的损失函数是contrastive loss,这种损失函数可以有效的处理孪生神经网络中的p ...

  2. 机器学习笔记 - 关于Contrastive Loss对比损失

    一.对比损失 虽然二元交叉熵(下图公式)肯定是损失函数的有效选择,但它不是唯一的选择(甚至不是最佳选择). 然而,实际上有一个更适合孪生网络的损失函数,称为对比损失. 其中Y是我们的标签.如果图像对属 ...

  3. 对比损失Contrastive Loss

    [时间]2-019.01.21 [题目]对比损失Contrastive Loss PS:本文转载自Contrastive Loss Contrastive Loss 在传统的siamese netwo ...

  4. Contrastive Loss(Siamese Network)

    Contrastive Loss (对比损失) 孪生神经网络(siamese network)中,其采用的损失函数是contrastive loss,这种损失函数可以有效的处理孪生神经网络中的pair ...

  5. 【逻辑回归算法】{2} ——逻辑回归损失函数的梯度

    目标:求出逻辑回归损失函数的最小值. 逻辑回归的损失函数: 逻辑回归损失函数的梯度: 计算预测函数Sigmoid函数的导数: 代入: 计算过程: 最后得出逻辑回归损失函数的梯度: 回顾一下线性回归代价 ...

  6. Understanding the Behaviour of Contrastive Loss理解对比损失的性质以及温度系数的作用

    论文标题:Understanding the Behaviour of Contrastive Loss Understanding the Behaviour of Contrastive Loss ...

  7. Muti-Similarity Loss:考虑了batch中整体距离分布的对比损失函数

    点击上方"AI公园",关注公众号,选择加"星标"或"置顶" 作者:Keshav G 编译:ronghuaiyang 导读 这是对比损失函数的 ...

  8. 多分类交叉熵损失函数的梯度计算过程推导

    Softmax函数公式: Si 代表的是第i个神经元的输出 其中wij 是第i个神经元的第 j 个权重,b是偏移值.zi 表示该网络的第i个输出 隐藏层输出经过softmax: 具体过程如下图所示: ...

  9. 论文笔记:Dual Contrastive Loss and Attention for GANs

    目录 一.Dual Contrastive Loss and Attention for GANs 是什么? 1.损失函数 2.网络结构 3.总结 二.这项工作主要做了什么? 1.双重对比损失 2.生 ...

最新文章

  1. 一个困扰数学家30多年的分类问题,终于被解决了!
  2. 设计模式学习笔记三——Abstract Factory模式
  3. TestNG方法測试及注意要点 代码及配置具体解释(解决testng方法不运行问题)
  4. 转载-致IT同仁 —— IT人士常犯的17个职场错误
  5. 此项目与visual studio的当前版本不兼容_忘掉GOPATH,迎接Go modules,进入Go项目依赖库版本管理新时代...
  6. 【数据结构与算法】之深入解析“寻找旋转排序数组中的最小值II”的求解思路与算法示例
  7. 基于FPGA多通道数据采集系统verilog设计
  8. 2016: 神殿(求二进制1的个数最多的那个数)
  9. chrome启动参数
  10. App测试之性能测试流畅度fps测试
  11. 在Ubuntu8.10中启用TrackPoint
  12. 高端游戏计算机配置单,2021年高端游戏电脑配置清单推荐
  13. 华硕a53s拆机图解_华硕a53s_拆机教程_图解_20140228更正
  14. 一个短信息运营商SP告诉你手机短信收费黑幕!!
  15. Linux高性能并发服务器发开学习(二进程和线程)
  16. epoch mysql_PostgreSQL: epoch 新纪元时间的使用
  17. CHAPTER 10 Formal Grammars of English
  18. R语言绘图之ggplot2包
  19. 抖音3D旋转相册 (源码下载)
  20. 杜教筛 (包括线筛) 莫比乌斯函数前缀和 欧拉函数前缀和 因数和函数前缀和 因子个数前缀和 ( 分析 )...

热门文章

  1. js快速学习思维导图
  2. 线性代数Python计算:线性变换的值域与核
  3. 学校生均计算机,义务教育普通中小学校必配生均建筑面积指标(18页)-原创力文档...
  4. 4【计算机编程】到底该学哪种编程语言?各种不同的编程语言现在都用来干嘛?
  5. vm虚拟机安装debian NAT模式 桥接模式 究竟是什么意思
  6. Vue从零开始之VueRouter
  7. 小红书流量规则是什么,推荐机制解读
  8. 龙岗大运中心体育中心纯航拍多图32张(航拍深圳第5集)
  9. 嵌入式实时操作系统5——就绪表
  10. 网易云音乐爬虫超简单,告别会员享受听觉盛宴