孪生网络实现小数据学习!看神经网络如何找出两张图片的相似点

2017 年 7 月 18 日 机器人圈


原文来源hackernoon

作者:Harshvardhan Gupta

「机器人圈」编译:嗯~阿童木呀、多啦A亮


深度神经网络是涉及图像分类问题的重要算法。这其中的部分原因是,它们具有大量的可训练的参数。然而,这是以需要大量的数据为代价的,而这有时是不可获得的。那么接下来,我就将讨论小样本学习(One Shot Learning),其旨在缓解诸如此类的问题,以及如何在PyTorch中实现一个使用它的神经网络。


本文假设你对神经网络知识有所了解。


本文相关材料线索来自于此篇论文


标准分类vs小样本分类


几乎所有分类模型使用的都是标准分类。输入被馈送到一系列层,最后输出类概率。如果你想通过猫来预测出狗,你可以在你所期望的预测时间内训练相似的(但不相同的)狗/猫图片模型。当然,这要求你有一个数据集,与你使用模型进行预测时所期望的数据集类似。


另一方面,小样本分类模型的要求就是,你只要有一个你想要预测的每个类的训练样本就可以。该模型仍然在几个实例上进行训练,但是它们只需要与你的训练样本相类似。


可以说明此问题的一个很好的例子就是面部识别。你可以在一个包含少数人的各种角度、拍摄光线等数据的数据集上训练此小样本分类模型。然后,如果你想要判别某人X是否在图像中,那么就可以拍摄该人的一张照片,然后询问模型该人物是否在该图像中(请注意,该模型没有使用某人X的任何照片进行训练)。


作为人类,我们往往只需要一次会面就可以通过面部识别出一个人,而且对于计算机来说,这是很可取的,因为大多数情况下数据处于最小值。


孪生网络


孪生网络是一种特殊类型的神经网络架构。与一个学习对其输入进行分类的模型不同,该神经网络是学习在两个输入中进行区分。它学习了两个输入之间的相似之处。


架构


孪生网络由两个完全相同的神经网络组成,每个都采用两个输入图像中的一个。然后将两个网络的最后一层馈送到对比损失函数,用来计算两个图像之间的相似度。我已经做了一个图解用来帮助解释这个架构。



它具有两个姐妹网络,它们是具有完全相同权重的相同神经网络。


图像对中的每个图像将被馈送到这些网络中的一个。


使用对比损失函数优化网络(我们将获得确切的函数)。


对比损失函数(Contrastive Loss function)


孪生架构的目的不是对输入图像进行分类,而是区分它们。因此,分类损失函数(如交叉熵)不是最合适的选择。相反,这种架构更适合使用对比函数。根据直觉而言,这个函数只是评估网络区分一对给定的图像的效果如何。


点击此处链接获取更多详情


对比损失函数如下:


等式1.0


其中Dw被定义为姐妹孪生网络的输出之间的欧氏距离(euclidean distance)。数学上欧氏距离是:

 

等式1.1


其中Gw是其中一个姐妹网络的输出。X1和X2是输入数据对。


等式1.0说明


Y值为1或0。如果模型预测输入是相似的,那么Y的值为0,否则Y为1。


max()是表示0和m-Dw之间较大值的函数。


m是大于0的边际价值(margin value)。有一个边际价值表示超出该边际价值的不同对不会造成损失。这是有道理的,因为你只希望基于实际不相似对来优化网络,但网络认为是相当相似的。


数据集


我们将使用两个数据集,经典的MNIST和OmniGlot。 MNIST将用于训练模型以了解如何区分字符,然后我们将在OmniGlot上测试该模型。


OmniGlot数据集


OmniGlot数据集由包含50种国际语言的样本组成。每种语言中的每个字母只有20个样本。 这被认为是MNIST的“转置”,其中类的数量较少(10个),训练样本数量较多。在OmniGlot中类的数量是非常多的,而每个类的样本数是很少的。


图2.0来自OmniGlot数据集的一些样本


OmniGlot将用作我们的小样本分类数据集,以便能够从少数样本中识别出许多不同的类。


结论


我们是在小样本学习下进行研究,并尝试使用一种称为孪生网络的神经网络架构来解决这一问题。与此同时,我们还讨论了区分输入对的损失函数。


同时,我们还实施了这样的架构,并对MNIST进行训练,然后在OmniGlot上进行了预测。


了解更多信息,欢迎点击链接


欢迎加入


中国人工智能产业创新联盟在京成立 近200家成员单位共推AI发展



关注“机器人圈”后不要忘记置顶

我们还在搜狐新闻、机器人圈官网、腾讯新闻、网易新闻、一点资讯、天天快报、今日头条、QQ公众号…

↓↓↓点击阅读原文查看中国人工智能产业创新联盟手册

登录查看更多
35

相关内容

基于深度神经网络的少样本学习综述
专知会员服务
169+阅读 · 2020年4月22日
【ICLR-2020】网络反卷积,NETWORK DECONVOLUTION
专知会员服务
38+阅读 · 2020年2月21日
专知会员服务
41+阅读 · 2020年2月20日
GANs最新综述论文: 生成式对抗网络及其变种如何有用
专知会员服务
70+阅读 · 2019年10月19日
真正的神经网络,敢于不学习权重
机器之心
6+阅读 · 2019年6月13日
一个神经网络实现4大图像任务,GitHub已开源
贝叶斯神经网络(系列)第一篇
AI研习社
14+阅读 · 2019年3月1日
深度学习训练数据不平衡问题,怎么解决?
AI研习社
7+阅读 · 2018年7月3日
入门 | 从VGG到NASNet,一文概览图像分类网络
机器之心
6+阅读 · 2018年4月2日
从零开始:教你如何训练神经网络
机器之心
5+阅读 · 2017年12月11日
相似图片搜索的原理
数据库开发
9+阅读 · 2017年8月11日
Arxiv
5+阅读 · 2016年10月24日
VIP会员
相关资讯
真正的神经网络,敢于不学习权重
机器之心
6+阅读 · 2019年6月13日
一个神经网络实现4大图像任务,GitHub已开源
贝叶斯神经网络(系列)第一篇
AI研习社
14+阅读 · 2019年3月1日
深度学习训练数据不平衡问题,怎么解决?
AI研习社
7+阅读 · 2018年7月3日
入门 | 从VGG到NASNet,一文概览图像分类网络
机器之心
6+阅读 · 2018年4月2日
从零开始:教你如何训练神经网络
机器之心
5+阅读 · 2017年12月11日
相似图片搜索的原理
数据库开发
9+阅读 · 2017年8月11日
Top
微信扫码咨询专知VIP会员