Siamese Network 孪生网络简介

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Siamese Network 孪生网络简介相关的知识,希望对你有一定的参考价值。

参考技术A “匹配”这类任务有着很广泛的应用场景,例如NLP中的文本匹配,推荐领域的物品召回等任务。由此,学术界和工业界提出了很多不同的方法和模型来解决匹配问题,并致力于效果提升。本篇文章介绍一种经典的网络模型Siamese Network(孪生神经网络),该模型能够处理但不局限于“匹配”问题,下面一起来看下。

个人心得:

Wikipedia:

https://en.wikipedia.org/wiki/Siamese_neural_network

Siamese Network的模型架构如图所示。可以看出,该模型的设计思路非常符合“匹配”的直观感受,即将输入pair通过特征变换后进行交叉得到分值(eg. 相似度)。

整个模型可以分为三步:

本节我们以NLP文本匹配任务为例介绍Siamese Network的设计思路。针对文本匹配的Siamese Network设计实例如下图所示。

我们可以看到,模型输入层是待匹配的sentence pair,经过同一个编码器转换后,得到其embedding特征编码向量。进一步,将两个embedding向量进行交互组合,最后送入全连接层得到分类预测结果。其实抽象出来,在文本匹配任务中,Siamese Network可以拆解为,将输入转换到同一个特征空间,然后进行向量交互匹配(类似于余弦相似度),最后进行特征变换使得模型能够学习到针对不同任务的不同参数。

本文我们介绍了孪生神经网络Siamese Network的设计思路和原理,并结合文本匹配来进行阐述。Siamese Network原理简单,适用范围广,可以作为很多场景的一个不错的baseline模型。

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 Network 孪生网络简介的主要内容,如果未能解决你的问题,请参考以下文章

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

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

SiameseFC遮挡跟踪应用matconvnet工具箱,实现基于Fully-Convolutional Siamese Networks全卷积孪生网络的车辆跟踪matlab仿真

《SARAS-Net: Scale and Relation Aware Siamese Network for Change Detection》论文分享

如何使用 Keras 将输入和输出数据放入 Siamese Network?

论文笔记之:Siamese Instance Search for Tracking