孪生神经网络

news2024/11/15 12:50:56

孪生神经网络

孪生神经网络(Siamese network)主要用途是比较两图片的相似程度,其核心思想就是权值共享

卷积神将网络是通过卷积运算提取图像的特征进行训练的,如果想比较两个图像的相似程度,也要对两个图像分别进行特征提取,只判断特征的相似度就可以了。然而不同的卷积核运算后得到的特征很有可能不在一个域中,所以要使用同一个网络进行特征提取。

img

孪生神经网络的优点:对于类别不平衡问题鲁棒性更强,更易于做集成学习,可以从语义相似性上学习来估测两个输入的距离。

孪生神经网络的缺点,由于有两个输入,两个子网,其训练相对于常规网络运算量更大,需要的时间更长。输出的结果是两个类间的距离而不是概率

训练过程

训练集

孪生神经网络不需要每一类都有很多图片,其训练集叫做support set,数据集的类别可以很多,每个类别只需几张图片即可。

在这里插入图片描述

首先选择一个神经网络f,对输入图像进行特征提取,提取结果为h1和h2,z表示两个向量之间的区别,再加上全连接层处理z向量,最后用sigmoid函数输出为一个标量(如果两个图片是同一类,则输出应该接近1,如果不是同一类则应该接近0)。

在这里插入图片描述

损失函数

`Triplet Loss

Triplet Loss三元组损失函数,其应用见谷歌2015年发表在CVPR上的做人脸验证的论文facenet。该损失函数定义一个三元组作为输入,分别是 ( X a n c h o r , X p o s i t i v e , X n e g a t i v e ) (X_{anchor},X_{positive},X_{negative}) (Xanchor,Xpositive,Xnegative)
这三个输入的通过如下方式构成,先从训练数据集中随机选一个样本作为Anchor,再随机选取一个和Anchor属于同一类的样本作为正样本 X p o s i t i v e X_{positive} Xpositive,和一个不同类的样本作为负样本 X n e g a t i v e X_{negative} Xnegative ,通过这种方式定义一个输入的三元组 X a n c h o r , X p o s i t i v e , X n e g a t i v e X_{anchor},X_{positive},X_{negative} Xanchor,Xpositive,Xnegative,将其输入到网络可以得到对应的特征向量 [ f ( X a n c h o r ) , f ( X p o s i t i v e ) , f ( X n e g a t i v e ) ] [f(X_{anchor}),f(X_{positive}),f(X_{negative})] [f(Xanchor),f(Xpositive),f(Xnegative)]

Triplet Loss的目的是通过训练,使得同种类别的距离更近,不通类别的距离更大,即拉近anchor与positive;推远anchor和negative。

通过这种相似度比较式的学习,模型不仅与同类别更像,还学会了与不同类别增大区分度的信息。通常定义一个 α \alpha α,使得Anchor距离Negative的距离比距离Positive大 α \alpha α, 公式化表示为:

∣ f ( X a n c h o r ) − f ( X n e g a t i v e ) ∣ ∣ − ∣ ∣ f ( X a n c h o r ) − f ( X p o s i t i v e ) ∣ ∣ > α |f(X_{anchor}) - f(X_{negative})|| - ||f(X_{anchor}) - f(X_{positive})|| \gt \alpha f(Xanchor)f(Xnegative)f(Xanchor)f(Xpositive)>α

定义为:

L ( X a n c h o r , X p o s i t i v e , X n e g a t i v e ) = m a x ( ∣ ∣ f ( X a n c h o r ) − f ( X p o s i t i v e ) ∣ ∣ − ∣ ∣ f ( X a n c h o r ) − f ( X n e g a t i v e ) ∣ ∣ + α , 0 ) L(X_{anchor}, X_{positive}, X_{negative}) = max(||f(X_{anchor}) - f(X_{positive})|| - ||f(X_{anchor}) - f(X_{negative})|| + \alpha, 0) L(Xanchor,Xpositive,Xnegative)=max(f(Xanchor)f(Xpositive)f(Xanchor)f(Xnegative)+α,0)

Contrastive Loss

Contrastive Loss的输入是一对样本,基于相似的一对对象特征距离应该更小,不相似的一对对象特征距离应该较大来计算。从数据中选一对样本 ( X a , X b ) (X_a, X_b) (Xa,Xb),这两个样本的欧式距离表示为$d=||X_a-X_b||_2=\sqrt{({X_a-X_b})^2}d=∣∣X $

则Contrastive Loss可表示为:
L ( X a , X b ) = ( 1 − Y ) 1 2 d 2 + Y 1 2 { m a x ( 0 , m − d ) } 2 L(X_a,X_b) = (1-Y)\frac{1}{2}d^2 + Y\frac{1}{2}\{max(0, m-d)\}^2 L(Xa,Xb)=(1Y)21d2+Y21{max(0,md)}2

Y表示 X a , X b ) X_a,X_b) Xa,Xb)是否匹配,匹配为1不匹配为0

m是设置的安全距离,当 ( X a , X b ) (X_a, X_b) (Xa,Xb)的距离小于m 时,Contrasive Loss将变成0,这使得 X a X_a Xa

X b X_b Xb 相似而不是相同,能保证算法的泛化能力

有了损失函数就可以通过反向传播进行参数更新了

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/59967.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

毛里智慧小学宿舍楼工程量清单编制

目 录 摘 要 I 第1章 前言 1 第2章 招标控制价编制 3 2.1招标控制价 3 2.2建设项目招标控制价汇总表 4 2.3单项工程招标控制价汇总表 5 2.4单项工程招标控制价汇总表 14 2.5分部分项工程和单价措施项目清单与计价表 24 2.6总价措施项目清单与计价表 27 2.7综合单价分析表 28 2.…

C语言学习之路(基础篇)—— 文件操作(上)

说明:该篇博客是博主一字一码编写的,实属不易,请尊重原创,谢谢大家! 概述 1) 磁盘文件和设备文件 磁盘文件 指一组相关数据的有序集合,通常存储在外部介质(如磁盘)上,使用时才调入内存。 设备文件 在操作…

亚马逊云科技re:Invent:Serverless是所有构想的核心

12月2日,2022亚马逊云科技re:Invent全球大会上,Amazon.com副总裁兼首席技术官Werner Vogels博士向开发者们展示了另一种可能。在一系列Serverless工具的帮助下,一些代码可以少写,因为未来你可能再也不需要写它们了。这恐怕是自云原…

包装类-Wrapper

包装类的分类 针对八种基本数据类型相应的引用类型-包装类有了类的特点,就可以调用对应的类中的方法 装箱和拆箱 Java是一种面向对象的编程语言,学习Java时就被明确灌输了一个概念:OOP,即面向对象编程。一切皆对象。但是基本…

[附源码]JAVA毕业设计框架的电脑测评系统(系统+LW)

[附源码]JAVA毕业设计框架的电脑测评系统(系统LW) 目运行 环境项配置: Jdk1.8 Tomcat8.5 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技…

Win11右键菜单反应慢有延迟解决方法分享

Win11右键菜单反应慢有延迟解决方法分享。有用户发现电脑鼠标点击右键菜单的时候,会出现一些延迟,导致自己在使用的过程中非常难受。那么这个问题如何自己去进行解决呢?我们一起来看看详细的解决方法分享吧。 解决方法: 注意&…

物联网IoT体系结构及核心技术

物联网,英文名为Internet of things(IoT),顾名思义,物联网就是物物相连的互联网。 这有两层意思: 1、物联网的核心和基础仍然是互联网,是在互联网基础上的延伸和扩展的网络; 2、从…

超级详细 的 Redis 安装教程

超级详细 的 Redis 安装教程 Windows 版本的 Redis 是 Microsoft 的开源部门提供的 Redis. 这个版本的 Redis 适合开发人员学习使用,生产环境中使用 Linux 系统上的 Redis, 这里讲解了这两种的安装和下载。按照你们需要的liunx 或window步骤来 就可以了(…

智能优化算法:法医调查优化算法 - 附代码

智能优化算法:法医调查优化算法 摘要:法医调查优化算法( Forensic-based investigation algorithm, FBI), 是由 Jui-Sheng Chou 等于2020 年提出的一种群体智能优化算法。其灵感来源于警官调查嫌疑人的过程。 1.法医调查优化算法 警察的大规模案件调查…

Java并发编程—线程详解

文章目录线程简介什么是线程多线程的使用什么时候需要使用多线程?写多少个线程比较合适?线程优先级靠谱的让出CPU的方法?线程的状态线程的状态有哪几种?线程的状态转换Daemon线程启动和终止线程构造线程启动线程理解中断如何安全的…

[附源码]计算机毕业设计基于Springboot的物品交换平台

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

逻辑回归模型和Python代码实现

文章目录逻辑回归原理sigmoid函数优化建模代码实现自编代码sklearn代码代码测试原理测试交叉验证逻辑回归原理 此前介绍的线性回归基本模型和增加了正则项的优化模型都只能用来预测连续值(标签值是多少),如果想要应用于分类问题(…

回归预测 | MATLAB实现GRU(门控循环单元)多输入单输出

回归预测 | MATLAB实现GRU(门控循环单元)多输入单输出 文章目录 回归预测 | MATLAB实现GRU(门控循环单元)多输入单输出预测效果基本介绍模型结构程序设计参考资料致谢预测效果 基本介绍 GRU神经网络是LSTM神经网络的一种变体,LSTM 神经网 络是在RNN的基础上发展起来的。RNN是一…

Python学习----网络编程

网络:网络就是实现资源共享和信息传递的虚拟平台,我们可以编写基于网络通信的程序。比如socket编程,web开发 Socket编程 Socket是程序之间通信的一个工具,好比显示生活中的电话,你知道了对方的电话号码之后&#xff…

RabbitMQ进阶

可以结合着狂神的RabbitMQ的笔记来进行学习 狂神说RabbitMQ笔记 RabbitMQ高级特性 消息可靠性投递 保证我发出的消息可以到达中间件,避免在传输的过程中发生丢失的情况。 这两个可靠性传输方式分别是负责不同的阶段,confirm是负责保证从生产者到队列…

[附源码]Python计算机毕业设计Django抗疫医疗用品销售平台

项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等等。 环境需要 1.运行环境:最好是python3.7.7,…

2023年江苏省职业院校技能大赛中职赛项规程样题

2023年江苏省职业院校技能大赛中职赛项规程 一、赛项名称 赛项编号:JSZ202335 赛项名称:网络安全 赛项组别:学生组、教师组 赛项归属专业大类:信息技术类 竞赛目的 贯彻落实《国家职业教育改革实施方案》《关于推动现代职业教…

设计模式——观察者模式

动机(Motivation) 在软件构建过程中,我们需要为某些对象建立一种“通知依赖关系” ——一个对象(目标对象)的状态发生改变,所有的依赖对象(观察者对象)都将得到通知。如果这样的依赖…

非零基础自学Golang 2 开发环境 2.1 Go 的安装

非零基础自学Golang 学习文档地址:https://www.topgoer.cn/ 本文仅用于学习记录,不存在任何商业用途,如侵删【已联系过文档作者】 文章目录非零基础自学Golang2 开发环境2.1 Go 的安装2.1.1 下载地址2.1.2 Go 的安装2.1.3 安装检查2 开发环境…

TypeScript22(Rollup构建TS项目 webpack构建TS项目)

Rollup构建TS项目 安装依赖: 1.全局安装rollup: npm install rollup-g 2.安装TypeScript: npm install typescript -D 3.安装TypeScript 转换器: npm install rollup-plugin-typescript2 -D 4.安装代码压缩插件&#xff1a…