Siamese network总结

简介: 本文介绍了Siamese (连体)网络的主要特点、训练和测试Siamese网络的步骤、Siamese网络的应用场合、Siamese网络的优缺点、为什么Siamese被称为One-shot分类,以及Siamese的损失函数。

Siamese Network的主要特点

 

1. Siamese 网络采用两个不同的输入,通过两个具有相同架构、参数和权重的相似子网络。


2. 这两个子网互为镜像,就像连体双胞胎一样。 因此,对任何子网架构、参数或权重的任何更改也适用于其他子网。


3. 两个子网络输出一个编码来计算两个输入之间的差异。


4. Siamese 网络的目标是使用相似度分数对两个输入是相同还是不同进行分类。可以使用二元交叉熵、对比函数或三元组损失来计算相似度分数,这些都是用于一般距离度量学习方法的技术。


5. Siamese 网络是一种one-shot分类器,它使用判别特征从未知分布中概括不熟悉的类别。

f04fbb904f869c7d0c6bcc0ef8f45b58.png

训练 Siamese 神经网络

 

1. 加载包含不同类的数据集


2. 创建正负数据对。 当两个输入相同时为正数据对,当两个输入不同时为负数据对。


3. 构建卷积神经网络,它使用全连接层输出特征编码。我们将通过姊妹 CNN传递两个输入。姐妹 CNN 应该具有相同的架构、超参数和权重。


4. 构建差分层以计算两个姐妹 CNN 网络编码输出之间的欧几里得距离。


5. 最后一层是具有单个节点的全连接层,使用 sigmoid 激活函数输出相似度分数。

6. 使用二元交叉熵作为损失函数。

欢迎关注公众号CV技术指南,专注于计算机视觉的技术总结、最新技术跟踪、经典论文解读

测试 Siamese 神经网络


1. 向训练模型发送两个输入以输出相似度分数。


2. 由于最后一层使用 sigmoid 激活函数,它输出一个范围在 0 到 1 之间的值。接近 1 的相似度得分意味着两个输入是相似的。接近 0 的相似度得分意味着两个输入不相似。一个好的经验法则是使用 0.5 的相似性截止阈值。

 

Siamese 神经网络的应用


1. 签名验证


2. 面部识别


3. 比较指纹


4. 根据临床分级评估疾病严重程度


5. 工作资料的文本相似度以恢复匹配


6. 用于配对相似问题的文本相似度

 

为什么Siamese神经网络被称为one-shot分类?


1. one-shot分类模型仅使用每个新类别的单个训练样本即可正确进行预测。


2. Siamese 网络使用有监督的训练方法来学习通用输入特征,然后根据训练数据对未知的类分布进行预测。


3. 受过训练的 Siamese 网络使用一次性学习来预测两个输入之间的相似性或不相似性,即使这些新分布中的样本很少。

 

Siamese 网络的优点


1. Siamese 网络是一种one-shot分类模型,只需一个训练样本即可进行预测。


2. 对类别不平衡更鲁棒,因为它需要很少的信息。 它可以用于某些类的样本很少的数据集。


3. Siamese 网络的one-shot学习特性不依赖于特定领域的知识,而是利用了深度学习技术。

 

Siamese 网络的缺点


仅输出相似性分数而不输出概率。:互斥事件的概率总和为 1。而距离不限于小于或等于 1。

 

为什么姐妹网络一定要一样?


两个姐妹卷积网络((sister convolutional network))的模型架构、超参数和权重必须相同。 它确保它们各自的网络不会将两个极其相似的图像映射到非常不同的特征空间,因为每个网络计算相同的函数。

 

Siamese 网络使用的损失函数


1. Siamese 网络使用相似度分数来预测两个输入是相似还是不同,使用度量学习方法,该方法找到其输入之间的相对距离。


2. 可以使用二元交叉熵、对比函数或三重损失计算相似度分数。

3. Siamese 网络执行二元分类,将输入分类为相似或不相似;因此,默认使用二元交叉熵损失函数。

 

对比损失函数


1. 对比损失函数通过对比两个输入来区分相似和不同的图像。当你在训练时不了解所有类别并且训练数据有限时,它会有所帮助。它创建了一种数据编码,可以在将来有新类时使用。


2. 对比损失需要一对正负训练数据。 正对包含一个anchor样本和一个正样本,负对包含一个anchor样本和一个负样本。


3. 对比损失函数的目标是使正对具有较小的距离,对负对具有较大的距离。


c128ce4c9a4c942b6138b3c25867a388.png

1a0deeb59422bd4081fc5b7b838b847b.png在上面的等式中,当输入来自同一类时,Y 为 0;否则,Y 的值为 1。


m 是定义半径的余量,以指示超出此余量的不同对不会造成损失,并且始终大于 0。

Dw 是姐妹 siamese 网络输出之间的欧几里得距离。

 

Triplet Loss


在 Triplet loss 中,我们使用数据的三元组而不是二元对。 三元组由anchor、正样本和负样本组成,主要用于面部识别。


f241fa8439b5f847b5cc33e2e45e004c.png

在 Triplet loss 中,anchor和正样本编码之间的距离被最小化,而anchor和负样本编码之间的距离被最大化。

 

Triplet loss 将 d(a,p) 推到 0 ,并且 d(a,n) 大于 d(a,p)+margin

 

结论


Siamese 网络受到 Siamese twins 的启发,是一种one-shot分类,用于区分相似和不同的图像。 即使不知道所有训练时的类别并且训练数据有限,它也可以应用。 Siamese 网络基于度量学习方法,该方法使用二元交叉熵或对比损失或三重损失找到其输入之间的相对距离。

相关文章
|
机器学习/深度学习 PyTorch 算法框架/工具
【PyTorch】Neural Network 神经网络(上)
【PyTorch】Neural Network 神经网络(上)
70 0
|
机器学习/深度学习 自然语言处理 TensorFlow
Recurrent Neural Network,简称 RNN
循环神经网络(Recurrent Neural Network,简称 RNN)是一种神经网络,其特点是具有循环结构,可以对序列数据进行建模。RNN 通过将序列数据分解为多个时间步,并在每个时间步使用相同的神经网络结构对数据进行处理,从而能够捕捉序列数据中的时间依赖关系。
67 6
|
机器学习/深度学习 TensorFlow 语音技术
Convolutional Neural Network,简称 CNN
卷积神经网络(Convolutional Neural Network,简称 CNN)是一种深度学习模型,主要用于图像识别、物体检测、语音识别等任务。CNN 通过局部感知、权值共享和下采样等操作,能够有效地提取图像特征,从而实现对图像的分类和识别。
230 4
|
机器学习/深度学习 数据采集 算法
卷积神经网络(Convolutional Neural Network
机器学习是一种人工智能技术,通过让计算机从数据中学习和提取规律,从而实现对未知数据的预测和决策。卷积神经网络(Convolutional Neural Network,简称 CNN)是机器学习中的一种方法,主要应用于图像识别、语音识别、文本处理等领域。
131 4
|
机器学习/深度学习 数据采集 自然语言处理
循环神经网络(Recurrent Neural Network,
循环神经网络(Recurrent Neural Network,简称 RNN)是机器学习中的一种神经网络结构,主要应用于处理序列数据和具有时序性的数据。与传统的前向神经网络不同,RNN 具有循环结构,可以捕捉时间序列数据中的依赖关系,从而更好地处理时序数据。
130 2
|
机器学习/深度学习 自然语言处理 PyTorch
循环神经网络(Recurrent Neural Network,RNN)
循环神经网络(Recurrent Neural Network,RNN)是一种具有循环连接的神经网络结构,专门用于处理序列数据,如语音、文本、时间序列等。与传统的前馈神经网络不同,RNN在网络中引入了状态变量,使得网络可以记忆先前的信息,并在处理后续输入时使用该信息。这种记忆能力使得RNN在建模时序数据和处理时序任务方面表现出色。
264 1
|
机器学习/深度学习 PyTorch TensorFlow
卷积神经网络(Convolutional Neural Network,CNN)
卷积神经网络(Convolutional Neural Network,CNN)是一种深度学习模型,特别适用于处理具有网格结构的数据,如图像和语音等。CNN的核心思想是通过卷积操作和池化操作来提取输入数据的特征,并通过全连接层进行分类或回归任务。
163 0
|
机器学习/深度学习 PyTorch 算法框架/工具
【PyTorch】Neural Network 神经网络(下)
【PyTorch】Neural Network 神经网络(下)
54 0
|
机器学习/深度学习 自然语言处理 数据挖掘
【文本分类】A C-LSTM Neural Network for Text Classification
【文本分类】A C-LSTM Neural Network for Text Classification
154 0
【文本分类】A C-LSTM Neural Network for Text Classification
|
机器学习/深度学习 数据可视化 数据挖掘
【图像分类系列】(一)--Network In Network
【图像分类系列】(一)--Network In Network
163 0
【图像分类系列】(一)--Network In Network