通过对比实现少样本或零样本学习Learning to Compare: Relation Network for Few-Shot Learning

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_24305433/article/details/79950735

一、简介

最近偶然间看到一篇解读CVPR中Learning to Compare: Relation Network for Few-Shot Learning这篇论文(https://arxiv.org/abs/1711.06025)的文章(http://www.gzhshoulu.wang/article/1926990),感觉非常有意思。大家都知道,近年来深度学习之所以取得如此大的成功,主要在于目前拥有大量的数据及强大的计算资源,尤其是在图像方面。因此如何实现深度学习的快速学习,是深度学习研究的一大难题。大家都知道,但是对于人而言,在人识别物体的时候,仅需要少量的图像或不需要图像,仅仅根据对物体的描述就能根据以往的经验知识实现对物体的识别,这是为什么呢?因为我们有先验知识,我们会利用自己的先验知识来进行学习,例如经常使用老式诺基亚手机的人也能很快的学会如何使用智能机。如何实现这种快速学习呢?元学习就是实现它的方法之一。

什么是元学习呢?英文名叫Meta Learning其实也叫做Learning to Learn,即学会学习。如何让神经网络实现元学习呢?这个链接中包含目前的一些元学习的方法https://yq.aliyun.com/articles/176594。而今天这篇论文则是利用对比来实现元学习,作者人为人在识别图像时是通过比较图像与图像之间的特征来实现识别的,即少样本学习;当然也可以对比图像与描述对图像的描述来实现对比,即零样本学习。如对于刚出生没多久的小孩子来说,他们也能很快的识别出什么是“鸭鸭”和“鹅鹅”,即使他们并没有见过几次这些(灵感来自我刚一岁多的小侄子,呵呵),因为我们的视觉细胞可以自动的提取图像的特征(如轮廓、光照强度等),然后对比我们以往的经验就能对图像进行识别了。这篇论文的Relation Network(RN)就是根据这种思想设计的。

二、方法

1、数据处理

作者通过将数据分为training set、support set、testing set三部分,其中support set作为对比学习的样例,它拥有和测试数据一样的标签,在测试过程中,可以通过与测试数据做对比来实现对测试数据的识别。对于包含C个不同的类别,每个类别有K个带标签的样本的support set,文中称这种少样本学习问题为C-way,K-shot。为了实现对网络的训练,我们需要将training set分成和support set 及testing set,相同的数据格式,文中称作sample set与query set,即随意从训练集中选取C类每类有K个带标签的数据来组成sample set及query set

2、模型

2.1 one-shot

作者所提出的RN包含两部分,一部分就是嵌入单元用来提取图像的特征,另一部分是关联单元,用来计算两个图像的相似度,如图1所示,这是一个明显的5-way,1-shot模型。然后剩下的就简单了,在训练时,我们利用training set来对网络进行元学习,用sample set中的数据与query set 中的数据做对比。在嵌入单元分别获得两者的特征、然后对特征进行连接后送入到关联单元来得到关联系数,来表示输入之间的相似度,如公式1所示,其中代表嵌入单元,代表将特征连接一起,代表连接单元。



图 1


2.2 K-shot

如果对于每类我们有K(K>1)个labelled的样本,该怎么办呢?很简单,将同一类的feature_map进行相加,然后就和上面的一样了。few-shot的网络模型如图(a)所示。

                                               

(a)                                                                                                                                (b)

图2

2.3  zero-shot

zero-shot和one-shot类似,只不过这里将support set中的图像换成了语义向量,嵌入单元也做了修改。zero-shot的网络结构如图2(b)所示,这里的DNN是训练好的模型,如VGG、Inception等。

三、实验

作者分别在Omniglot and miniImagenet数据集上测试了few-shot,在Animals with Attributes (AwA) and

Caltech-UCSD Birds-200-2011 (CUB)上测试了zero-shot。所有的程序都是使用pytorch编写的https://github.com/floodsung/LearningToCompare_FSL

3.1 few-shot

3.1.1 Omniglot

Omniglot包含50个不同的字母,共计1623类字符,每一类由20个不同的人作出的。为了增加数据量,作者还对图像进行了旋转变换。作者分别对5-way 1-shot、5-way 5-shot、20-way 1-shot、20-way 5-shot的情况做了实验,实验结果如表1。

表 1

3.1.2 miniImageNet

miniImageNet是从ImageNet分割得到的,具体分割方法参照https://papers.nips.cc/paper/6385-matching-networks-for-one-shot-learning,作者在miniImageNet上进行了5 way 1-shot及5 way 5-shot的实验,实验结果如表2。


表 2

3.2 zero-shot

RN在AwACUB上的准确率和其他方法的对比如表3所示。



表 3


表 4

四、RN为什么能工作

这部分应该是本论文最核心的部分,论文指出,之前的few-shot工作都是预先指定好度量方式的,如欧式距离或余弦距离,学习部分主要体现在特征嵌入方面,但是该论文同时学习了特征的嵌入及非线性度量矩阵(相似度函数),这些都是端到端的调整。通过学习的到的相似性矩阵有着比人为选定的矩阵更具有灵活性,更能捕获到特征之间的相似性。


图 3

为了证明RN的有效性,作者分别使用马哈拉诺比斯度量矩阵方法3(c)、马哈拉诺比斯度量矩阵+多层感知机3(d)及RN3(b)对query set 的匹配情况,通过和3(a)相对比可以看出,RN的匹配效果最好。


图 4

图4左面是原始情况下Omniglot中图的关系,其中青色是和样例点(黄色)相匹配的图像,紫色是和样本点不匹配的图像从图中可以看出使用欧式距离或余弦距离都不能实现对样例点的正常匹配。但通过对RN的倒数第二层进行PCA降维,得到的分布图如图4(右)所示,可以看出匹配的与无法匹配的变成线性可分的。

展开阅读全文

没有更多推荐了,返回首页