论文阅读笔记《Siamese Neural Networks for One-shot Image Recognition》

核心思想

  本文设计了一种利用孪生网络结构解决小样本分类任务的方法,其思想非常简单,用相同的网络结构分别对两幅图像提取特征,如果两幅图像的特征信息非常接近(L1距离小)那么他们很可能属于同一类物体,否则他们属于不同类的物体。在我看来该网络与Matching Network,Prototypical Network在本质上是相同的,都可以归属于度量学习(Mertic Learning)的范畴,只不过具体实现的方式有差异。Matching Network采用融合了注意力机制的LSTM网络提取特征,用余弦距离度量特征之间的差距;Prototypical Network采用普通的卷积神经网络但融合聚类的思想,用平方欧氏距离度量特征之间的差距。说回本文,其采用了两个结构完全相同,权重彼此共享的卷积网络分支,称为孪生网络,分别从两幅图像中提取特征信息,并利用全连接层展开成一维特征向量。然后计算两幅图像对应的特征向量之间的L1距离(差值的绝对值),并乘以一个权重值(该权重值是利用网络训练得到的参数,在一定程度上可以看做特征值维度上的注意力机制,假设某个特征值比较重要,其对应的权重也会更大),再将所有加权后的特征值求和。最后用Sigmoid函数将其转化为[0,1]范围内的相似程度得分(作者称scores the similarity between the two feature vectors,在我看来有一点不合适,因为根据上文的说法这个值越小应该表示两幅图像之间的越相似)。训练过程则是希望孪生网络能够提取出更加有效,更加抽象的特征信息,在测试过程中需要同时输入一个支持集和一个测试对象,与Matching Network相同该网络也允许使用训练集中没有出现过得类别进行测试,但支持集中必须包含与测试对象同类别的图片。

实现过程

网络结构

  整个孪生网络的两个分支是完全相同的,因此我们仅对其中一个的结构进行简要介绍。如图所示,该网络是由多个卷积层和最大池化层堆叠而成,卷积层的通道数均是64的倍数,卷积核尺寸由10 * 10,下降到7 * 7,再降到 4 * 4(这是早期卷积神经网络常用的模式,后来逐渐被多层3 * 3的卷积层所取代),卷积步长均为1,最大池化层的池化窗口为2 * 2。最后两层为全连接层,第一个全连接层将特征图展开成长度为4096的一维特征向量,并计算与另一个分支的L1距离;第二个全连接层则是将距离向量压缩为一个值,并利用sigmoid函数转化为相似程度得分(上文中提到的加权求和过程正是描述此处的第二个全连接层)。除最后两个全连接层采用sigmoid**函数外,其与各卷积层均采用ReLU**函数(这与文中表述有些出入,不知道是作者的笔误还是我理解存在偏差)
论文阅读笔记《Siamese Neural Networks for One-shot Image Recognition》

损失函数

  采用了带有正则化项的交叉熵损失函数,式中y(x1(i),x2(i))y(x_1^{(i)},x_2^{(i)})表示当x1(i)x_1^{(i)}x2(i)x_2^{(i)}属于同类物体时,y(x1(i),x2(i))=1y(x_1^{(i)},x_2^{(i)})=1,否者为0。
论文阅读笔记《Siamese Neural Networks for One-shot Image Recognition》

训练策略

  权重初始化方面,卷积层采用均值为0,方差为10^-2的正态分布,偏差采用均值为0.5,方差为10 ^-2的正态分布,全连接层采用均值为0,方差为10 ^-1的正态分布。学习率每个epoch下降1%,初始动量为0.5,随着训练过程线性增长直至达到μj\mu _j(作为超参数)。超参数优化策略采用一种贝叶斯优化框架Whetlab进行选择。数据集扩充是利用放射变化将图像数量增长为原来的8倍。训练时将图像两两组合,若来自同一类别则标记为1,否则标记为0.

网络推广

  作者尝试将在Omniglot数据集(一个包含多种语言手写字母的数据集)上训练得到的网络在不经过微调训练的条件下,直接应用与MNIST数据集(一个手写数字数据集),其依旧达到了70.3%的准确率,说明该网络具备一定的泛化能力。

创新点

  • 利用孪生网络结构分别提取两幅图片特征,并采用L1距离度量特征之间的差异
  • 无需依赖先验知识,可以在少样本的数据集上实现有效的特征提取,并最终实现分类任务

算法评价

  该篇文章应该是首个将孪生神经网络应用于少样本学习任务的文章,放在5年前(2015)来说绝对是一篇具有划时代意义的文章,其引入了利用距离度量的方式来解决少样本分类的问题,与之前采用贝叶斯网络或者依赖于先验知识的认知科学算法(HBPL)而言,无疑是一个巨大的进步。但就今天的眼光来看,其方法是具有很大的局限性的。首先使用孪生网络实现少样本学习任务存在一个内在的矛盾,孪生网络对于两个图像之间的差异是非常敏感的(包括位置差异,颜色差异),比如其可能认为一只黄色的猫和黄色的老虎之间的差别要比一只黄色的猫和黑色的猫之间的差别更小,而这就可能会导致错误的分类;另一方面同样的一个物体出现在图像的左上角和图像的右下角时其提取到的特征信息可能截然不同,尤其是经过全连接层后,空间位置信息被破坏,因此也有可能导致误分类。在本文中作者只使用手写字符数据集进行训练和测试,而不是ImageNet中多类别图片进行学习,我认为正是遇到了这两个问题(手写字符数据集相对于图像数据集有两个方面的简化:第一颜色只有黑白二色,第二内容主体集中在图片中间,且不存在大范围的移动和翻转)。解决这两个问题的办法通常是利用更深层的卷积神经网络,使得提取特征信息更加抽象(学习到猫和老虎之间的本质差别,而不是仅仅依赖颜色差异),并且增强空间不变性(随着卷积和池化加深,感受野范围会逐步扩大直至覆盖全图)。而更深层的网络则带来了另一个问题就是如何在小样本数据集上进行有效的训练,大量的权重参数将给网络的训练过程带来极大的压力,必须依赖更好的权重初始化和优化算法。为了解决这一内在矛盾,后来的研究者们分成了两个方向,一个方向是利用不同的网络结构来取代孪生网络结构,实现更有效的特征提取,如Matching Network;另一个方向是采用更好的权重初始化策略和优化算法,如元学习方式。但无论如何该文章为小样本学习任务开辟了一个新的道路,为后来的研究者们提供了一个更高的研究基础。可能这就是科学研究中螺旋式上升模式该有的样子吧!
如果大家对于深度学习与计算机视觉领域感兴趣,希望获得更多的知识分享与最新的论文解读,欢迎关注我的个人公众号“深视”。论文阅读笔记《Siamese Neural Networks for One-shot Image Recognition》