Contrastive Loss 对比损失函数及梯度的计算
Contrastive loss 最初源于
Yann LeCun
“Dimensionality 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))=2N1n=1∑NYDW2+(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=1NYDW2 ,即原本相似的样本,如果在特征空间的欧式距离较大,则说明当前的模型不好,因此加大损失。
当 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=1NDW2 ,此时计算梯度为:
∂ 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 > m − ( m − D W ) ∂ D W ∂ W , D W < m \frac{\partial L_D}{\partial W} = \left\{ \begin{matrix} &0 &, D_W > m \\ &-(m - D_W)\frac{\partial D_W}{\partial W} &, D_W < m \end{matrix}\right. ∂W∂LD={0−(m−DW)∂W∂DW,DW>m,DW<m
同理,当 D W < m D_W < 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 对比损失函数及梯度的计算相关推荐
- Contrastive Loss 对比损失函数
Contrastive Loss 定义 在caffe的孪生神经网络(siamese network)中,其采用的损失函数是contrastive loss,这种损失函数可以有效的处理孪生神经网络中的p ...
- 机器学习笔记 - 关于Contrastive Loss对比损失
一.对比损失 虽然二元交叉熵(下图公式)肯定是损失函数的有效选择,但它不是唯一的选择(甚至不是最佳选择). 然而,实际上有一个更适合孪生网络的损失函数,称为对比损失. 其中Y是我们的标签.如果图像对属 ...
- 对比损失Contrastive Loss
[时间]2-019.01.21 [题目]对比损失Contrastive Loss PS:本文转载自Contrastive Loss Contrastive Loss 在传统的siamese netwo ...
- Contrastive Loss(Siamese Network)
Contrastive Loss (对比损失) 孪生神经网络(siamese network)中,其采用的损失函数是contrastive loss,这种损失函数可以有效的处理孪生神经网络中的pair ...
- 【逻辑回归算法】{2} ——逻辑回归损失函数的梯度
目标:求出逻辑回归损失函数的最小值. 逻辑回归的损失函数: 逻辑回归损失函数的梯度: 计算预测函数Sigmoid函数的导数: 代入: 计算过程: 最后得出逻辑回归损失函数的梯度: 回顾一下线性回归代价 ...
- Understanding the Behaviour of Contrastive Loss理解对比损失的性质以及温度系数的作用
论文标题:Understanding the Behaviour of Contrastive Loss Understanding the Behaviour of Contrastive Loss ...
- Muti-Similarity Loss:考虑了batch中整体距离分布的对比损失函数
点击上方"AI公园",关注公众号,选择加"星标"或"置顶" 作者:Keshav G 编译:ronghuaiyang 导读 这是对比损失函数的 ...
- 多分类交叉熵损失函数的梯度计算过程推导
Softmax函数公式: Si 代表的是第i个神经元的输出 其中wij 是第i个神经元的第 j 个权重,b是偏移值.zi 表示该网络的第i个输出 隐藏层输出经过softmax: 具体过程如下图所示: ...
- 论文笔记:Dual Contrastive Loss and Attention for GANs
目录 一.Dual Contrastive Loss and Attention for GANs 是什么? 1.损失函数 2.网络结构 3.总结 二.这项工作主要做了什么? 1.双重对比损失 2.生 ...
最新文章
- 一个困扰数学家30多年的分类问题,终于被解决了!
- 设计模式学习笔记三——Abstract Factory模式
- TestNG方法測试及注意要点 代码及配置具体解释(解决testng方法不运行问题)
- 转载-致IT同仁 —— IT人士常犯的17个职场错误
- 此项目与visual studio的当前版本不兼容_忘掉GOPATH,迎接Go modules,进入Go项目依赖库版本管理新时代...
- 【数据结构与算法】之深入解析“寻找旋转排序数组中的最小值II”的求解思路与算法示例
- 基于FPGA多通道数据采集系统verilog设计
- 2016: 神殿(求二进制1的个数最多的那个数)
- chrome启动参数
- App测试之性能测试流畅度fps测试
- 在Ubuntu8.10中启用TrackPoint
- 高端游戏计算机配置单,2021年高端游戏电脑配置清单推荐
- 华硕a53s拆机图解_华硕a53s_拆机教程_图解_20140228更正
- 一个短信息运营商SP告诉你手机短信收费黑幕!!
- Linux高性能并发服务器发开学习(二进程和线程)
- epoch mysql_PostgreSQL: epoch 新纪元时间的使用
- CHAPTER 10 Formal Grammars of English
- R语言绘图之ggplot2包
- 抖音3D旋转相册 (源码下载)
- 杜教筛 (包括线筛) 莫比乌斯函数前缀和 欧拉函数前缀和 因数和函数前缀和 因子个数前缀和 ( 分析 )...