孪生网络(Siamese network)
孪生神经网络用于处理两个输入"比较类似"的情况。
比如,我们要计算两个句子或者词汇的语义相似度,使用siamese network比较适合;
伪孪生网络(pseudo-siamese network)
伪孪生神经网络适用于处理两个输入"有一定差别"的情况。
如果验证标题与正文的描述是否一致(标题和正文长度差别很大),或者文字是否描述了一幅图片(一个是图片,一个是文字),就应该使用pseudo-siamese network。
## Siamese network loss function一般用哪一种呢?
Softmax当然是一种好的选择,但不一定是最优选择,即使是在分类问题中。传统的siamese network使用Contrastive Loss。损失函数还有更多的选择,siamese network的初衷是计算两个输入的相似度,。左右两个神经网络分别将输入转换成一个"向量",在新的空间中,通过判断cosine距离就能得到相似度了。Cosine是一个选择,exp function也是一种选择,欧式距离什么的都可以,训练的目标是让两个相似的输入距离尽可能的小,两个不同类别的输入距离尽可能的大。
Siamese network的用途有哪些?
这个可以说太多了,nlp&cv领域都有很多应用。
前面提到的词汇的语义相似度分析,QA中question和answer的匹配,签名/人脸验证。
手写体识别也可以用siamese network,网上已有github代码。
还有kaggle上Quora的question pair的比赛,即判断两个提问是不是同一问题,冠军队伍用的就是n多特征+Siamese network,知乎团队也可以拿这个模型去把玩一下。
在图像上,基于Siamese网络的视觉跟踪算法也已经成为热点《Fully-convolutional siamese networks for object tracking》。
作者:fighting41love
链接:https://www.jianshu.com/p/92d7f6eaacf5
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。