CV岗位面试题:孪生随机网络(Siamese Network)如何解决?

七月在线实验室

共 2773字,需浏览 6分钟

 ·

2021-03-20 12:23

文 | 七月在线
编 | 小七


解析:


简单来说,Siamese Network就是“连体的神经网络”,神经网络的“连体”是通过共享权值来实现的,如下图所示:


大家可能会有疑问:共享权值是什么意思?左右两个神经网络的权重一模一样?

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

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

答:Pseudo-Siamese Network,伪孪生神经网络,如下图所示。对于Pseudo-Siamese Network,两边可以是不同的神经网络(如一个是LSTM,一个是CNN),也可以是相同类型的神经网络。


Yann LeCun养乐村同志在NIPS 1993上发表了论文《Signature Verification using a ‘Siamese’ Time Delay Neural Network》用于美国支票上的签名验证,即验证支票上的签名与银行预留签名是否一致。1993年,Yann LeCun就在用两个卷积神经网络做签名验证了。

签名验证

随着SVM等算法的兴起,Neural Network被人们遗忘,还好有一些执着的人们,坚守在了神经网络研究的阵地。2010年Hinton在ICML上发表了文章《Rectified Linear Units Improve Restricted Boltzmann Machines》,用来做人脸验证,效果很好。其原理很简单,将两个人脸feed进卷积神经网络,输出same or different。


3. 孪生神经网络和伪孪生神经网络分别适用于什么场景呢?

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

4. Siamese network loss function一般用哪一种呢?

Softmax当然是一种好的选择,但不一定是最优选择,即使是在分类问题中。传统的Siamese Network使用Contrastive Loss。损失函数还有更多的选择,Siamese Network的初衷是计算两个输入的相似度。左右两个神经网络分别将输入转换成一个"向量",在新的空间中,通过判断cosine距离就能得到相似度了。Cosine是一个选择,exp function也是一种选择,欧式距离也可以,训练的目标是让两个相似的输入距离尽可能的小,两个不同类别的输入距离尽可能的大。其他的距离度量没有太多经验,这里简单说一下cosine和exp在NLP中的区别。

根据实验分析,cosine更适用于词汇级别的语义相似度度量,而exp更适用于句子级别、段落级别的文本相似性度量。其中的原因可能是cosine仅仅计算两个向量的夹角,exp还能够保存两个向量的长度信息,而句子蕴含更多的信息。

5. Siamese network是双胞胎连体,整一个三胞胎连体行不行?

已经有人做出来了,称为Triplet Network,论文是《Deep metric learning using Triplet network》,输入是三个,一个正例+两个负例,或者一个负例+两个正例,训练的目标是让相同类别间的距离尽可能的小,让不同类别间的距离尽可能的大。Triplet在CIFAR, MNIST的数据集上效果都是很不错的,超过了Siamese Network。


6. Siamese network的用途有哪些?

用于非常广,在NLP和CL领域都有很多应用。

  • 1. 前面提到的词汇的语义相似度分析,QA中question和answer的匹配等NLP领域,签名/人脸验证等CV领域应用。


  • 2. 手写体识别也可以用Siamese Network。


  • 3. 还有Kaggle上Quora的question pair的比赛,即判断两个提问是不是同一问题,冠军队伍用的就是N多特征+Siamese Network。


  • 4.m在图像上,基于Siamese网络的视觉跟踪算法也已经成为热点《Fully-convolutional siamesenetworksforobjecttracking》:https://link.springer.com/chapter/10.1007/978-3-319-48881-3_56 。




本周1元秒杀


七月在线价值千元【SVM与XGBoost】实战特训课,本周限时 1 元秒杀!

点击链接,立即购买-》https://www.julyedu.com/course/getDetail/346&from=sina



推荐系统

1、干货 | 基于用户的协同过滤推荐算法原理和实现

2、超详细丨推荐系统架构与算法流程详解

3、推荐 :一文从0到1掌握用户画像知识体系

机器学习

1、从小白到大师:一文Get决策树的分类与回归分析

自然语言处理(NLP)

1、AI自动评审论文,CMU这个工具可行吗?我们用它评审了下Transformer论文

2、Transformer强势闯入CV界秒杀CNN,靠的到底是什么"基因"

计算机视觉(CV)

1、9个小技巧让您的PyTorch模型训练装上“涡轮增压”...

GitHub开源项目:

1、火爆GitHub!3.6k Star,中文版可视化神器现身

2、两次霸榜GitHub!这个神器不写代码也可以完成AI算法训练

3、登顶GitHub大热项目 | 非监督GAN算法U-GAT-IT大幅改进图像转换

每周推荐:

1、本周优秀开源项目分享:无脑套用格式、开源模板最高10万赞

2、本周优秀开源项目分享:YOLOv4的Pytorch存储库、用pytorch增强图像数据等7大项目

七月在线学员面经分享:

1、 双非应届生拿下大厂NLP岗40万offer:面试经验与路线图分享

2、转行NLP拿下40万offer:分享我面试中遇到的54道面试题(含参考答案)

3、NLP面试干货分享:从自考本科 在职硕士到BAT年薪80万

浏览 55
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报