专栏首页程序生活Contrastive Loss(对比损失)Contrastive Loss

Contrastive Loss(对比损失)Contrastive Loss

Contrastive Loss

在传统的siamese network中一般使用Contrastive Loss作为损失函数,这种损失函数可以有效的处理孪生神经网络中的paired data的关系。

siamese network-孪生神经网络

contrastive loss的表达式如下:

# tensorflow伪代码
def contrastive_loss(self, y,d,batch_size):
      tmp= y *tf.square(d)
      #tmp= tf.mul(y,tf.square(d))
      tmp2 = (1-y) *tf.square(tf.maximum((1 - d),0))
      return tf.reduce_sum(tmp +tmp2)/batch_size/2    

其中d=||an-bn||2,代表两个样本的欧式距离,y为两个样本是否匹配的标签,y=1代表两个样本相似或者匹配,y=0则代表不匹配,margin为设定的阈值。 这种损失函数最初来源于Yann LeCun的Dimensionality Reduction by Learning an Invariant Mapping,主要是用在降维中,即本来相似的样本,在经过降维(特征提取)后,在特征空间中,两个样本仍旧相似;而原本不相似的样本,在经过降维后,在特征空间中,两个样本仍旧不相似。 观察上述的contrastive loss的表达式可以发现,这种损失函数可以很好的表达成对样本的匹配程度,也能够很好用于训练提取特征的模型。当y=1(即样本相似)时,损失函数只剩下

即原本相似的样本,如果在特征空间的欧式距离较大,则说明当前的模型不好,因此加大损失。

而当y=0时(即样本不相似)时,损失函数为

即当样本不相似时,其特征空间的欧式距离反而小的话,损失值会变大,这也正好符号我们的要求。

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

个人见解:欧式距离表示两个文本向量在空间之间的距离,如果距离很小说明样本相似;反过来,两个文本越相似,那么它们之间的欧式距离越小;从上面图中我们可以看出,x轴为d(欧式距离),以红色虚线为例,它们描述了两个相似文本loss与欧式距离之间的关系,因为欧式距离越大与"两个文本相似"这个事实事与愿违,那么我们就对它们惩罚越大(即loss越大)。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Leetcode-Medium 98. Validate Binary Search Tree

    判定一棵树是否满足二叉搜索树的性质。二叉查找树(Binary Search Tree),(又:二叉搜索树,二叉排序树)它或者是一棵空树,或者是具有下列性质的二叉...

    致Great
  • Leetcode-Easy 852. Peak Index in a Mountain Array

    致Great
  • Gensim实现Word2Vec的Skip-Gram模型简介快速上手对语料进行分词使用gensim的word2vec训练模型

    简介 Genism是一个开源的Python库,用于便捷高效地提取文档中的语义话题。它用于处理原始的、非结构化的电子文本(“纯文本”),gensim中的一些算法,...

    致Great
  • FastDFS原理及部署

    FastDFS是一个c语言编写的一个开源的轻量级分布式文件系统,它对文件进程管理,功能包括:文件存储,文件同步,文件访问(文件上传、文件下载)等,解决了大容量存...

    小手冰凉
  • LeetCode - 二叉搜索树的范围和

    原题地址:https://leetcode-cn.com/problems/range-sum-of-bst/

    晓痴
  • Netty Pipeline与ChannelHandler那些事

    每个channel内部都会持有一个ChannelPipeline对象pipeline,pipeline默认实现DefaultChannelPipeline内部维...

    luoxn28
  • 使用DTLE对MySQL大表做分库分表

    https://actiontech.github.io/dtle-docs-cn/3/3.0_function_scenario_mapping.html

    二狗不要跑
  • jquery常用函数及技巧(持续更新)

    版权声明:本文为吴孔云博客原创文章,转载请注明出处并带上链接,谢谢。 https://blog.csdn.net/wkyseo/articl...

    空空云
  • 一大波开发者福利来了,一份微软官方Github上发布的开源项目清单等你签收

    最近在倒腾WPF的项目,试着搜一下微软官方提供的WPF Smaples, 结果找到了https://github.com/Microsoft/WPF-Sampl...

    Enjoy233

扫码关注云+社区

领取腾讯云代金券