【学习参考】:

https://blog.csdn.net/MyArrow/article/details/122539749Siamese Neural Network (SNN: 孪生神经网络)-LMLPHPhttps://blog.csdn.net/MyArrow/article/details/122539749

【Siamese和Chinese有点像。Siam是古时候泰国的称呼,中文译作暹罗。Siamese也就是“暹罗”人或“泰国”人。Siamese在英语中是“孪生”、“连体”的意思】Siamese network就是“连体的神经网络”,神经网络的“连体”是通过共享权值来实现的,如下图所示。

Siamese Neural Network (SNN: 孪生神经网络)-LMLPHP

共享权值是什么意思?左右两个神经网络的权重一模一样?

答:是的,在代码实现的时候,甚至可以是同一个网络,不用实现另外一个,因为权值都一样。对于siamese network,两边可以是lstm或者cnn,都可以。

大家可能还有疑问:如果左右两边不共享权值,而是两个不同的神经网络,叫什么呢?

答:pseudo-siamese network,伪孪生神经网络,如下图所示。对于pseudo-siamese network,两边可以是不同的神经网络(如一个是lstm,一个是cnn),也可以是相同类型的神经网络。



用途:

衡量两个输入的相似程度

孪生神经网络有两个输入(Input1 and Input2),将两个输入feed进入两个神经网络(Network1 and Network2),这两个神经网络分别将输入映射到新的空间,形成输入在新的空间中的表示。通过Loss的计算,评价两个输入的相似度。



区别:

孪生神经网络用于处理两个输入"比较类似"的情况。
伪孪生神经网络适用于处理两个输入"有一定差别"的情况。
如:我们要计算两个句子或者词汇的语义相似度,使用siamese network比较适合;如果验证标题与正文的描述是否一致(标题和正文长度差别很大),或者文字是否描述了一幅图片(一个是图片,一个是文字),就应该使用pseudo-siamese network。也就是说,要根据具体的应用,判断应该使用哪一种结构,哪一种Loss



以后学习中再遇到接着学习补充!!
 

 

12-04 09:59