Siamese Neural Network (SNN: 孪生神经网络)
Posted Arrow
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Siamese Neural Network (SNN: 孪生神经网络)相关的知识,希望对你有一定的参考价值。
0. 概述
- GLA:Generalized Linear Assignment (通用线性分配)
1. 用途
- 衡量两个输入的相似程度。
- 孪生神经网络有两个输入(Input1 and Input2),将两个输入feed进入两个神经网络(Network1 and Network2),这两个神经网络分别将输入映射到新的空间,形成输入在新的空间中的表示。通过Loss的计算,评价两个输入的相似度。
2. SNN网络结构
- Network1和Network2是同一个网络,且它们的权值都一样。
3. PSNN网络结构
- PSNN:Pseudo-Siamese Neural Network (伪孪生神经网络 )
- 其Netowrk1和Network2可以是不同的神经网络(如:左边是LSTM,右边是CNN),也可是相同类型的神经网络
- 其权值不共享
4. 孪生神经网络和伪孪生神经网络的区别
- 孪生神经网络用于处理两个输入"比较类似"的情况。
- 伪孪生神经网络适用于处理两个输入"有一定差别"的情况。
- 如:我们要计算两个句子或者词汇的语义相似度,使用siamese network比较适合;如果验证标题与正文的描述是否一致(标题和正文长度差别很大),或者文字是否描述了一幅图片(一个是图片,一个是文字),就应该使用pseudo-siamese network。也就是说,要根据具体的应用,判断应该使用哪一种结构,哪一种Loss
5. SNN损失函数
- Softmax当然是一种好的选择,但不一定是最优选择,即使是在分类问题中。传统的siamese network使用Contrastive Loss。
- 损失函数还有更多的选择,siamese network的初衷是计算两个输入的相似度,。左右两个神经网络分别将输入转换成一个"向量",在新的空间中,通过判断cosine距离就能得到相似度了。
- Cosine是一个选择,exp function也是一种选择,欧式距离什么的都可以,训练的目标是让两个相似的输入距离尽可能的小,两个不同类别的输入距离尽可能的大。
- 根据实验分析,cosine更适用于词汇级别的语义相似度度量,而exp更适用于句子级别、段落级别的文本相似性度量。其中的原因可能是cosine仅仅计算两个向量的夹角,exp还能够保存两个向量的长度信息,而句子蕴含更多的信息。
6. 轨迹关连
以上是关于Siamese Neural Network (SNN: 孪生神经网络)的主要内容,如果未能解决你的问题,请参考以下文章
《Siamese network 孪生神经网络--一个简单神奇的结构》
推荐图解神经网络算法工作原理Here's how a neural network works
如何使用 Keras 将输入和输出数据放入 Siamese Network?
《SARAS-Net: Scale and Relation Aware Siamese Network for Change Detection》论文分享