【CVPR 2018】牛津大学等联合提出通过让神经网络学会比较实现少样本学习

【论文导读】 深度学习的爆炸式发展得益于海量数据+强大计算力+算法三个部分的巨大进展,我们通常需要大量的数据去驱动模型的训练,使其获得很好的效果。但是在很多领域我们是没有很多数据的,比如在医学影像中很难拿到大量病人的图像数据,难道在这些情况下深度学习就废了吗?

我们先思考一下人是怎么学习的,当一个小孩看过一眼课本中的斑马后,他再次看到斑马就能够识别出来;当你看过一个人一次之后,通常情况下,你还是能够轻松的认出对方,人可以轻松的做到小样本学习,这就启发了人们去研究它,近年来,小样本学习或者零样本学习是深度学习中非常重要的一个研究方向。

摘要:在这篇文章中,作者给出了一个概念上简单、灵活和通用的小样本学习框架,其分类器必须能够识别新的类别,这些类别每一类都只会给出少量的样本。该方法称之为关系网络(Relation Network (RN)),它能够学会比较,从而实现小样本学习(Few-Shot Learning),并且稍加改进,就能够实现从少样本学习到零样本学习。该方法在五个基本测试集中都取得了很好的效果。

相关内容

对于少样本学习或者零样本学习的研究已经有一段时间了,早期的少样本学习工作往往涉及具有复杂迭代推理策略的生成模型,随着有区别性(可以理解为分类)的深度学习方法在丰富的多类别的数据集中的成功,人们开始思考将这种深度学习方法迁移到少样本学习中,其中许多方法使用元学习或从学习到学习的策略,它们从一组辅助任务(元学习、学习到学习)中提取一些可转移的知识,这样就可以帮助他们很好地进行少样本学习,下边来介绍一些已有的小样本学习方法。
基于Fine tune:
这种方法已被广泛地应用。获得一定量的标注数据,然后基于一个基础网络进行微调。这个基础网络是通过含有丰富标签的大规模数据集获得的,比如imagenet,我们的淘宝电商数据,称为通用数据域。然后在特定数据域上进行训练。训练时,会固定基础网络部分的参数,对领域特定的网络参数进行训练(这里有很多训练的trick,包括如何设置固定层和学习率等)
RNN Memory Based:
利用具有记忆的递归神经网络。在这里,通常的想法是RNN在给定问题的前一步上迭代并积累知识,关键在于确保它们可靠地存储所有潜在的、长期的、相关的历史信息,而不会忘记。这样的结构会比较复杂。
基于度量学习的方法:
该方法是对样本间距离分布进行建模,使得属于同类样本靠近,异类样本远离。
本文idea来源 [1]:
参考文献[1]中举了个例子,为什么人可以看到 iPhone X 一眼然后就可以认出它?我们会说:因为 iPhone X 丑陋的齐刘海,因为 iPhone X 背后的双摄像头是竖着的,和其他手机不一样!我们发现,我们大脑可以对 iPhone X 的形象提取关键特征,并且和其他手机做比较,从而使其拥有独特性让我们能够识别。所以,我们就发现了,我们人之所以能够识别一个新的东西,在于我们人的视觉系统天生的能够对任意物体提取特征,并会和其他物体进行进行比较。因为我们能够比较不同物体,所以我们根本无所谓看到的东西是不是以前就见过。这就是我们人具备少样本学习能力的关键原因,这种比较能力是基于你潜在的很多知识的(元知识)。

我们希望达到的目的是,当面向新的少样本学习任务时,我们能够充分利用我们已经学习到的识别能力(也就是元知识),来快速实现对新物体的识别。所以我们要研究的就算如何通过元学习的方式来让神经网络学会比较这个元知识能力,于是idea就产生了。
模型提出(Relation Network)
我们将该任务定义为小样本分类器学习,将数据集分成 training set、support set和testing set,其中support set和testing set共享相同的label空间,training set有自己的label空间。

关系网络示意图

如果support set中有C类物体,每类物体有K个样本,我们称之为C-way K-shot。如上边关系网络示意图所示,这是一个典型的5-way 1-shot的少样本学习问题,我们要对 5 个新类别的物体进行识别,但是每一类物体我们只给出一个样本。上图中,最左侧的 5 张图片就是我们拥有的训练样本(就是support set)而旁边的一个图片则是我们用来测试的样本(就是 testing set)。

整个关系网络由嵌入模块和关系模块组成,support set和testing set都需要经过嵌入模块提取特征,然后将特征联合起来输送到关系模块进行比较,然后我们根据比较的结果(relation score)来判断这个测试图片到底属于哪一个类。这很好理解,比如上图中测试图片是狗,那么它跟训练样本中狗的图片相似度比较高,那么我们就认为这个新的图片是狗。整个过程模拟人去识别一个物体的过程。
公式化表达:
如关系网络示意图所示

relation score计算公式
损失函数
样本学习和少样本学习不一样的地方在于零样本学习不给样本,而是给出一个代表某一类物体语义的嵌入向量,把训练样本(support set)改成这个语义嵌入向量就可以来做零样本学习了。公式如下,与公式1(relation score计算公式)对比,只有输入xi改变了。
零样本学习relation score计算公式

网络结构:
这是少样本学习的网络结构:
在输出层加了sigmoid得到score,其他的卷积层加relu。
少样本学习网络结构

这是零样本学习的网络结构:
结构中的DNN是选用在imagenet上预训练好的网络(如resnet)。
零样本学习网络结构

论文实验:
在少样本学习上,我们使用目前领域内都在使用的 Omniglot 和 MiniImagenet 作为我们的基准数据集,而在零样本学习上,我们则使用广泛采用的 AwA 和 CUB 数据集进行测试,都取得了 state-of-the-art 或者相当好的结果。
Omniglot

MiniImagenet

零样本学习实验结果:
零样本学习实验结果

实验结果证明了所提出方法的有效性。

思考:为什么关系网络能够有效
本文提出的方法可以认为是一种基于度量的方式,也就是使得属于同类样本靠近,异类样本远离,靠谁近就是属于哪一类的,和传统认为设计的度量方式(比如欧氏距离、余弦距离)不同的是,我们的度量方式是靠网络自己去学习的,认为设计的度量方式是有比较大缺陷的,参考下面的图,这是一个二维数据比较的小实验,可以看出让神经网络去学习这种度量的是比较准确的,而认为设计的偏差比较大。

网络自主学习度量

这也启发我们,很多东西可以避免人为去设计,可以让网络自己去学习。

原文标题:Learning to Compare: Relation Network for Few-Shot Learning
原文链接:https://arxiv.org/pdf/1711.06025.pdf
开源代码:https://github.com/floodsung/LearningToCompare_FSL
参考文献
1、https://www.leiphone.com/news/201804/eki2dvqLmUZyxo5L.html
2、https://blog.csdn.net/mao_feng/article/details/78939864

我的博客即将搬运同步至腾讯云+社区,邀请大家一同入驻:https://cloud.tencent.com/developer/support-plan

你可能感兴趣的:(【CVPR 2018】牛津大学等联合提出通过让神经网络学会比较实现少样本学习)