雷锋网 AI 科技评论按:本文作者Flood Sung,他为雷锋网 AI 科技评论撰写了基于 CVPR 录用论文《Learning to Compare: Relation Network for Few-Shot Learning》的独家解读稿件,未经许可不得转载。
1. 前言
相信每一位研究深度学习的朋友都明白,深度学习能够在这几年取得如此爆炸式的发展,除了算法本身的改进与创新,最关键的因素就是拥有海量的数据和强大的计算资源。那么,我们很自然的会问:没有海量数据怎么办?现实生活中有很多问题并没有那么多的数据可以采集,或者说采集数据所需的成本很高,比如稀有物种的图片,医疗诊断的图片。或者更简单的例子,我们每个人身边都有很多独有的物品。难道这些少样本的东西深度学习就无法处理,无法识别了嘛?不应该呀。原因非常简单,我们人可以很轻松的做到少样本学习,我们看到一个人就能记住他的样貌并在下一次认出对方。既然人能做到,那么深度学习按道理也应该可以实现。因此,少样本学习成为了近年来深度学习领域非常重要的一个前沿研究问题。
在本文中,我们将介绍 CVPR2018 最新录用的一篇少样本学习的 paper:
Learning to Compare: Relation Network for Few-Shot Learning
链接:https://arxiv.org/pdf/1711.06025.pdf
开源代码:https://github.com/floodsung/LearningToCompare_FSL
在这篇 paper 中,我们提出构建一个关系网络(Relation Network)来让其学习如何比较(Learning to Compare),从而实现少样本学习(Few-Shot Learning)。这个方法非常简单通用,但是效果很不错,在少样本学习及零样本学习的几个基准数据集上都取得了相当好的结果。下面,我们就来好好聊聊这篇 paper。
2. 为什么有这个 idea?
一般我们在 paper 中,并不会探讨这个问题,就是这个 idea 是怎么产生的。但是在这篇博文中,我就可以先说说 idea 本身。我们想既然人可以实现少样本学习,那么我们是不是应该先问这样一个问题就是为什么人可以实现少样本学习?这个问题可能会比较宽泛,那么我们把它具体化一下:为什么人可以看到 iPhone X 一眼然后就可以认出它?我们很显然会说:因为 iPhone X 丑陋的齐刘海,因为 iPhone X 背后的双摄像头是竖着的,和其他手机不一样!我们发现,我们大脑可以对 iPhone X 的形象提取关键特征,并且和其他手机做比较,从而使其拥有独特性让我们能够识别。我们再举一个例子:你能够快速的识别网红吗?我不知道其他人能不能,反正我觉得都一个样,都是网红脸,傻傻分不出。我们说到了「分不出」这三个字,因为我们在识别一个人的脸的时候,我们大脑依然是在和其他脸做比较,而网红脸因为太像,以至于我们很难区分,也就很难识别。
所以,我们就发现了,我们人之所以能够识别一个新的东西,在于我们人的视觉系统天生的能够对任意物体提取特征,并进行比较。因为我们能够比较不同物体,所以我们根本无所谓看到的东西是不是以前就见过。这就是我们人具备少样本学习能力的关键原因。那么问题又来了:提取特征很好理解,现在的神经网络比如卷积神经网络也是在学习提取特征,但是这个比较能力又是什么东西呢?思考清楚这个问题是产生这个 idea 的关键。看起来我们人不需要学习先天就拥有视觉比较能力。如果哪天你看到一个人看一个东西却说出「It doesn’t look like anything to me.」,那你一定不是在现实世界,而是西部世界了。所以,为什么人先天拥有视觉比较能力?我不清楚,我只能把它归结为一种元知识 (Meta Knowledge)。
少样本学习一直和元学习(Meta Learning)关系紧密。元学习的目标就是通过学习大量的任务,从而学习到内在的元知识,从而能够快速的处理新的同类任务,这和少样本学习的目标设定是一样的。我们也希望通过很多任务来学习识别物体这种能力,从而面向新的少样本学习任务,我们能够充分利用我们已经学习到的识别能力(也就是元知识),来快速实现对新物体的识别。而在这里,通过前面的分析,我们明白了,我们要研究如何通过元学习的方式来让神经网络学会比较这个元知识能力。而因为任意的知识都可以通过神经网络来表示,因此呢,我们就想:为什么不用一个神经网络来表示这个视觉比较能力呢?然后利用这个网络去做少样本学习?到了这里,我们的 idea 也就呼之欲出了。
图 1 关系网络示意图
3. 简单说说方法论
有了上面的分析,我们得到的模型就非常简单了,可以说完全模拟人识别物体的过程:如上图所示,是一个典型的 5way 1shot 的少样本学习问题,也就是我们要对 5 个新类别的物体进行识别,但是每一类物体我们只给出一个样本。上图中,最左侧的 5 张图片就是我们拥有的训练样本(一般称为 support set)而旁边的一个图片则是我们用来测试的样本(一般称为 testing set)。我们先构造一个嵌入单元(embedding module)来提取每一张图片的特征信息,是什么特征我们不管,然后我们把要测试的图片特征和训练样本的图片特征连起来输入到关系单元(relation module)中做比较,然后我们根据比较的结果(relation score)来判断这个测试图片到底属于哪一个类。这很好理解,比如上图中测试图片是狗,那么它跟训练样本中狗的图片相似度比较高,那么我们就认为这个新的图片是狗。所以,整个识别过程是非常简单,完全模拟人的识别过程的。我们把上图中的嵌入单元和关系单元合起来统称为关系网络(relation network)。
那么怎么来训练这个网络呢?我们有一个拥有大量数据的训练集(training set),我们利用这个训练集来构造出和测试时类似的数据结构,也就是 sample set 和 query set 来模拟测试时的 support set 和 testing set。我们可以使用训练集来生成巨量的模拟任务,从而在 meta 层面上训练整个关系网络。我们把输出的 relation score 看做是一个从 0 到 1 的数值。0 就代表极不相似,而 1 则代表完全相似。因此,我们就非常直接地采用平方差 MSE 作为网络训练的 loss。
只做少样本学习不是这个模型的全部,我们很容易地把它做一些改变,就能直接用于零样本学习。零样本学习和少样本学习不一样的地方在于零样本学习不给样本,而是给出一个代表某一类物体语义的嵌入向量,我们要直接利用这个嵌入向量来对物体做分类。那么,在我们的关系网络中,我们只需要把训练样本(support set)改成这个语义嵌入向量就可以来做零样本学习了。
图 2 少样本学习网络结构
图 3 零样本学习网络结构
4. 具体实验
这里也稍微说一下实验。在少样本学习上,我们使用目前领域内都在使用的 Omniglot 和 MiniImagenet 作为我们的基准数据集,而在零样本学习上,我们则使用广泛采用的 AwA 和 CUB 数据集进行测试。无论在哪个数据集上,我们都取得了 state-of-the-art 或者相当好的结果:
图 4 omniglot 实验结果
图 5 零样本学习实验结果
从这些实验中,我们可以看到我们模型的有效性。更详细的实验过程请阅读 paper 原文及已开源的代码。
5. 关于关系网络的思考,为什么它能 work?
在少样本学习领域,我们的方法可以认为是一种基于度量(metric-based)的方法,但是我们的方法很不一样的一点,也是创新的一点在于我们完全使用神经网络来学习这种度量方式,并且使用元学习的训练方式。而一般的基于度量的方法都是人为的设计一种度量,比如最简单的欧式距离。显然,人为设计的方式总是有缺陷的,那么我们就想来看看,使用神经网络来学习的度量是不是能比人为设计的好。因此,我们做了个小实验来印证这个想法。这个小实验是一个 2 维数据的比较实验。比如这样两个数据(1,2)和(-2,-1),这两个数据看起来是不相关的,但是它们在某一些状态下可能属于同一个类别。那么这种情况,其实传统的人为设计的度量方式实际上就失效了。我们只能通过神经网络去学习这种度量。所以像下图这样复杂的螺旋曲线关系数据情况,我们通过关系网络(relation network)可以学的不错,而人为度量则完全不行。
图 6 关系网络有效性试验示意图
因此,我们这篇 paper 也是想给大家一个启示,用神经网络进一步去替代一些之前还是人为设计的东西,有希望取得更好的效果!像目前元学习(Meta Learning)在研究的一个方向就是用神经网络学习来生成网络结构,也是一个意思。
6. 小结
在这篇博文中,我们简单的介绍了 CVPR2018 这篇最新少样本学习的 paper,和大家分析了一下 paper idea 的核心思想。对于这个 idea,我们拓展一下就有一个非常重要的问题值得去思考,也就是「其他领域有多少问题其实也是依靠元知识 Meta Knowledge 来驱动的?」如果我们发现了这样元知识的需求,就可以考虑使用类似的方法——元学习(Meta Learning)的方法来实现。
领取专属 10元无门槛券
私享最新 技术干货