Siamese Loss
- Siamese Loss
参考:https://blog.csdn.net/sxf1061926959/article/details/54836696
孪生网络中的Siamese Loss,来自Yann LeCun的论文《Learning a Similarity Metric Discriminatively, with Application to Face Verification》,最小化把相同类的数据之间距离,最大化不同类之间的距离。
引入了siamese网络结构的思想,具体使用的网络形式完全可以自己定义
主要思想:
1、输入不再是单个样本,而是一对样本,不再给单个的样本确切的标签,而且给定一对样本是否来自同一个类的标签,是就是0,不是就是1
2、设计了两个一模一样的网络,网络共享权值W,对输出进行了距离度量,可以说l1、l2等。
3、针对输入的样本对是否来自同一个类别设计了损失函数,损失函数形式有点类似交叉熵损失:
最后使用获得的损失函数,使用梯度反传去更新两个网络共享的权值W。
注:损失函数中的2Qe−2.77QEw2Qe^{-\frac{2.77}{Q}E_{w}}2Qe−Q2.77Ew,可以用hinge loss代替。
优点: Siamese网络是一种相似性度量方法。传统的用于区分的分类方法是需要确切的知道每个样本属于哪个类,需要针对每个样本有确切的标签。而且相对来说标签的数量是不会太多的。当类别数量过多,每个类别的样本数量又相对较少的情况下,这些方法就不那么适用了。其实也很好理解,对于整个数据集来说,我们的数据量是有的,但是对于每个类别来说,可以只有几个样本,那么用分类算法去做的话,由于每个类别的样本太少,我们根本训练不出什么好的结果,所以只能去找个新的方法来对这种数据集进行训练,从而提出了siamese网络。siamese网络从数据中去学习一个相似性度量,用这个学习出来的度量去比较和匹配新的未知类别的样本。这个方法能被应用于那些类别数多或者整个训练样本无法用于之前方法训练的分类问题。
代码实现:
#注:label=1,同一人;label=0,不同人。
def siamese_loss(model1, model2, y):# L(W,Y,X1,X2) = Y*2/Q*||CNN(p1i)-CNN(p2i)||^2 + (1-Y)*2*Q*exp(-2.77/Q*||CNN(p1i)-CNN(p2i)||margin = 5.0Q = tf.constant(margin, name="Q", dtype=tf.float32)E_w = tf.sqrt(tf.reduce_sum(tf.square(model1 - model2),1))pos = tf.multiply(tf.multiply(tf.to_float(y), 2/Q), tf.square(E_w))neg = tf.multiply(tf.multiply(tf.to_float(1-y),2*Q),tf.exp(-2.77/Q*E_w))loss = pos + negloss = tf.reduce_mean(loss, name="loss")return model1, model2, loss
注:博众家之所长,集群英之荟萃。
Siamese Loss相关推荐
- 论文笔记:KD-Net
Escape from Cells: Deep Kd-Networks for the Recognition of 3D Point Cloud Models 1.四个问题 要解决什么问题? 3D点 ...
- 【自然语言处理】【向量表示】PairSupCon:用于句子表示的成对监督对比学习
PairSupCon:用于句子表示的成对监督对比学习 <Pairwise Supervised Contrastive Learning of Sentence Representations& ...
- Cross Domain Knowledge Transfer for Person Re-identification笔记
Cross Domain Knowledge Transfer for Person Re-identification笔记 1 介绍 2 相关工作 3 方法 3.1 特征提取的ResNet 3.2 特 ...
- SuperPoint:深度学习特征点+描述子
[原文链接]:https://www.vincentqin.tech/posts/superpoint/ 本文出自近几年备受瞩目的创业公司MagicLeap,发表在CVPR 2018,一作Daniel ...
- Contrastive Loss(Siamese Network)
Contrastive Loss (对比损失) 孪生神经网络(siamese network)中,其采用的损失函数是contrastive loss,这种损失函数可以有效的处理孪生神经网络中的pair ...
- ECCV 2018 《Triplet Loss in Siamese Network for Object Tracking》论文笔记
目录 模型概况 实验结果 理解出错之处望不吝指正. 文章链接 模型概况 模型结构如下图所示: 本模型与SiamFC的区别在于:提出了一种不同于SiamFC的损失函数. ...
- 一文理解Ranking Loss/Margin Loss/Triplet Loss
点击蓝字 关注我们 作者丨土豆@知乎 来源丨https://zhuanlan.zhihu.com/p/158853633 本文已获授权,未经作者许可,不得二次转载. 前言 Ranking loss在 ...
- contrastive loss function (papers)
1.Learning a Similarity Metric Discriminatively, with Application to Face Verification 2,Dimensional ...
- SiameseNet(Learning Text Similarity with Siamese Recurrent Networks)
SiameseNet研究意义: 1.基于LSTM的孪生网络结构,为后来研究打下良好的基础,有很深远的影响 2.提出了几种文本增强的思路 注: 孪生网络指的是输入是成对的,并且两部分的网络结构和参数都是 ...
最新文章
- 使用svn时碰到的一个的问题
- c语言在车辆工程专业中的用途,车辆工程专业培养目标与毕业要求(11页)-原创力文档...
- 关闭图片 pycharm_博士大佬总结的Pycharm 常用快捷键思维导图,收藏!
- 655. Print Binary Tree 解题报告(树)
- ansible-playbook-常用
- Leetcode - 169. Majority Element (多数投票问题)
- matlab产生ofdm信号,Matlab 完成简单的OFDM 信号的产生与解调程序.pdf
- SmartFoxServer学习总结(转载)
- 装箱与拆箱 java 1615211150
- Redis学习总结(2)——Java使用Redis
- 5G相关协议下载路径
- Android屏幕密度计算公式
- 代码写的太烂了,所以我干不下去了
- 获取手机MAC地址问题
- 英特尔Sandy Bridge处理器深度解析
- python自动表单填充工具(内含rar)
- 用光敏电阻实现光源跟踪
- endcap和welltap_ICC布局规划
- mb63.net/ios.html,Document
- 我的世界无限贪婪服务器,《我的世界》1.12.2无尽贪婪mod