阅读 1194

Siamese Network 孪生网络简介

0. 写在前面

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

个人心得:

  1. Siamese Network中,两个输入共享编码层(嵌入层);
  2. 通过调整Siamese Network的特征变换层及损失函数,能够使其适用于不同的任务。

Wikipedia:

en.wikipedia.org/wiki/Siames…

1. 模型架构

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

整个模型可以分为三步:

  1. 将输入pair送入编码器,得到编码后的向量化表示。需要注意的是,在Siamese Network中,输入pair是共用编码器参数的,不论在训练还是在测试过程中,编码器只有一套,所有输入共用。
  2. 向量特征组合和交叉。这一步的目的是为了让模型能够学习输入pair的“匹配”特征,得到交叉后的特征向量;
  3. 将上一步特征向量送入特征映射层,并设计损失函数,使得模型能够完成指定任务。

2. Siamese Network 之文本匹配示例

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

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

3. 总结

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

文章分类
人工智能
文章标签