孪生神经网络(Siamese Network)详解

1. 要解决什么问题?

主要解决以下两类分类问题:

  • 第一类,分类数量较少,每一类的数据量较多,比如ImageNet、VOC等。这种分类问题可以使用神经网络或者SVM解决,只要事先知道了所有的类。
  • 第二类,分类数量较多(或者说无法确认具体数量),每一类的数据量较少,比如人脸识别、人脸验证任务。

2. 文章创新点

解决以上两个问题,本文提出了以下解决方法:

  1. 提出了一种思路:将输入映射为一个特征向量,使用两个向量之间的“距离”(L1 Norm)来表示输入之间的差异(图像语义上的差距)。

  2. 基于上述思路设计了Siamese Network。每次需要输入两个样本作为一个样本对计算损失函数。
    1)用的softmax只需要输入一个样本。
    2)FaceNet中的Triplet Loss需要输入三个样本。

  3. 提出了Contrastive Loss用于训练。

3. 网络结构

在这里插入图片描述
Siamese Network有两个结构相同,且共享权值的子网络。分别接收两个输入X1X1与X2X2,将其转换为向量Gw(X1)与Gw(X2),再通过某种距离度量的方式计算两个输出向量的距离Ew。

4. Contrastive Loss损失函数

在孪生神经网络(siamese network)中,其采用的损失函数是contrastive loss,这种损失函数可以有效的处理孪生神经网络中的paired data的关系。contrastive loss的表达式如下:
$$
其中
在这里插入图片描述

代表两个样本特征 X 1 X_1 X1 X 2 X_2 X2 的欧氏距离(二范数)P 表示样本的特征维数,Y 为两个样本是否匹配的标签,Y=1 代表两个样本相似或者匹配,Y=0 则代表不匹配,m 为设定的阈值,N 为样本个数。

观察上述的contrastive loss的表达式可以发现,这种损失函数可以很好的表达成对样本的匹配程度,也能够很好用于训练提取特征的模型。

  • 当 Y=1(即样本相似时),损失函数只剩下
    在这里插入图片描述
    即当样本不相似时,其特征空间的欧式距离反而小的话,损失值会变大,这也正好符号我们的要求。
  • 当 Y=0 (即样本不相似时),损失函数为
    在这里插入图片描述
    即当样本不相似时,其特征空间的欧式距离反而小的话,损失值会变大,这也正好符号我们的要求。

[注意这里设置了一个阈值margin,表示我们只考虑不相似特征欧式距离在0~margin之间的,当距离超过margin的,则把其loss看做为0(即不相似的特征离的很远,其loss应该是很低的;而对于相似的特征反而离的很远,我们就需要增加其loss,从而不断更新成对样本的匹配程度)]

5. 最后

  • 9
    点赞
  • 125
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
孪生神经网络Siamese Network)是一种特殊的神经网络结构,它包含两个相同的子网络,这两个子网络共享相同的参数。这两个子网络可以是不同类型的神经网络,例如一个是LSTM,另一个是CNN。孪生神经网络主要用于解决两种分类问题。 第一种分类问题是分类数量较少,每一类的数据量较多的情况,比如ImageNet、VOC等。这种问题可以使用神经网络或者支持向量机(SVM)等算法来解决,前提是我们事先知道了所有的类别。 第二种分类问题是分类数量较多(或者无法确认具体数量),每一类的数据量较少的情况,比如人脸识别和人脸验证任务。在这种情况下,孪生神经网络可以通过学习两个输入之间的相似度来进行分类。例如,在人脸验证任务中,我们可以将两张人脸图像输入到孪生神经网络中,网络会输出一个表示两张图像相似度的值,从而判断这两张图像是否属于同一个人。 三元组神经网络(Triplet Network)是一种用于学习特征表示的神经网络结构。它通过使用三个样本:锚定样本(Anchor Sample)、正样本(Positive Sample)和负样本(Negative Sample),来训练网络。锚定样本和正样本属于同一类别,而负样本属于不同类别。三元组神经网络的目标是使锚定样本与正样本之间的距离尽可能小,而与负样本之间的距离尽可能大。通过这种方式,网络可以学习到更好的特征表示,从而在分类和识别任务中取得更好的性能。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值