模型损失函数变化曲线图_Day82:对比损失(Contrastive Loss )函数及梯度的计算

Contrastive loss 最初源于 Yann LeCun “Dimensionality Reduction by Learning an Invariant Mapping” CVPR 2006。

该损失函数主要是用于降维中,即本来相似的样本,在经过降维(特征提取)后,在特征空间中,两个样本仍旧相似;而原本不相似的样本,在经过降维后,在特征空间中,两个样本仍旧不相似。同样,该损失函数也可以很好的表达成对样本的匹配程度。

Contrastive Loss 定义

263a3e24e6ff592d17c59f4a206b7be5.png

损失函数曲线图

a2271e681c08f4d38d56ef8b1ed22e74.png

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

梯度计算

63cf7ec924c1821682a5f6f7f4f12316.png

Spring Model Analogy 弹簧模型类比

43caa351004c0b035f70abfe028ad5c1.png
c6cdb7e9756e1108597ac93024fdbcca.png

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

代码

    def contro_loss(self):        '''        总结下来对比损失的特点:首先看标签,然后标签为1是正对,负对部分损失为0,最小化总损失就是最小化类内损失(within_loss)部分,        让s逼近margin的过程,是个增大的过程;标签为0是负对,正对部分损失为0,最小化总损失就是最小化between_loss,而且此时between_loss就是s,        所以这个过程也是最小化s的过程,也就使不相似的对更不相似了        '''        s = self.similarity        one = tf.constant(1.0)        margin = 1.0        y_true = tf.to_float(self.y_true)         # 类内损失:        max_part = tf.square(tf.maximum(margin-s,0)) # margin是一个正对该有的相似度临界值        within_loss = tf.multiply(y_true,max_part) #如果相似度s未达到临界值margin,则最小化这个类内损失使s逼近这个margin,增大s         # 类间损失:        between_loss = tf.multiply(one-y_true,s) #如果是负对,between_loss就等于s,这时候within_loss=0,最小化损失就是降低相似度s使之更不相似                # 总体损失(要最小化):        loss = 0.5*tf.reduce_mean(within_loss+between_loss)        return loss

————————————————

链接1:https://blog.csdn.net/forever__1234/article/details/81222092

链接2:https://blog.csdn.net/Hero_Never_GIVE_UP/article/details/82855493?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值