小样本学习(Few-shot Learning)

小样本学习(Few-shot Learning)

问题定义

人类非常擅长通过极少量的样本识别一个新物体,比如小孩子只需要书中的一些图片就可以认识什么是“斑马”,什么是“犀牛”。在人类的快速学习能力的启发下,研究人员希望机器学习模型在学习了一定类别的大量数据后,对于新的类别,只需要少量的样本就能快速学习,这就是
Few-shot Learning 要解决的问题。

Few-shot Learning 是 Meta Learning 在监督学习领域的应用。Meta Learning,又称为 learning
to learn,在 meta training 阶段将数据集分解为不同的 meta task,去学习类别变化的情况下模型的泛化能力,在 meta testing 阶段,面对全新的类别,不需要变动已有的模型,就可以完成分类。

形式化来说,few-shot 的训练集中包含了很多的类别,每个类别中有多个样本。在训练阶段,会在训练集中随机抽取 C 个类别,每个类别 K 个样本(总共CK 个数据),构建一个 meta-task,作为模型的支撑集(support set)输入;再从这 C个类中剩余的数据中抽取一批(batch)样本作为模型的预测对象(batch set)。即要求模型从 CK 个数据中学会如何区分这 C 个类别,
这样的任务被称为 *C-way K-shot
问题。

训练过程中,每次训练(episode)都会采样得到不同 meta-task,所以总体来看,训练包含了不同的类别组合,这种机制使得模型学会不同 meta-task 中的共性部分,比如如何提取重要特征及比较样本相似等,忘掉 meta-task 中 task相关部分。通过这种学习机制学到的模型,在面对新的未见过的 meta-task 时,也能较好地进行分类。

在图像领域的研究现状

早期的 Few-shot Learning 算法研究多集中在图像领域,如图所示,Few-shot Learning模型大致可分为三类:Mode Based,Metric Based 和 Optimization Based。

img

其中 Model Based 方法旨在通过模型结构的设计快速在少量样本上更新参数,直接建立输入 x 和预测值 P 的映射函数;

Metric Based方法通过度量 batch 集中的样本和 support 集中样本的距离,借助最近邻的思想完成分类;

Optimization Based方法认为普通的梯度下降方法难以在 few-shot 场景下拟合,因此通过调整优化方法来完成小样本分类的任务。

Model Base 方法

Santoro 等人 [3] 提出使用记忆增强的方法来解决 Few-shot Learning 任务。基于记忆的神经网络方法早在 2001
年被证明可以用于 meta-learning。他们通过权重更新来调节 bias,并且通过学习将表达快速缓存到记忆中来调节输出。

然而,利用循环神经网络的内部记忆单元无法扩展到需要对大量新信息进行编码的新任务上。因此,需要让存储在记忆中的表达既要稳定又要是元素粒度访问的,前者是说当需要时就能可靠地访问,后者是说可选择性地访问相关的信息;另外,参数数量不能被内存的大小束缚。神经图灵机(NTMs)和记忆网络就符合这种必要条件。

文章基于神经网络图灵机(NTMs)的思想,因为 NTMs 能通过外部存储(external
memory)进行短时记忆,并能通过缓慢权值更新来进行长时记忆,NTMs
可以学习将表达存入记忆的策略,并如何用这些表达来进行预测。由此,文章方法可以快速准确地预测那些只出现过一次的数据。

文章基于 LSTM 等 RNN 的模型,将数据看成序列来训练,在测试时输入新的类的样本进行分类。

具体地,在 t时刻,模型输入img,也就是在当前时刻预测输入样本的类别,并在下一时刻给出真实的label,并且添加了 external memory 存储上一次的 x 输入,这使得下一次输入后进行反向传播时,可以让 y (label) 和 x建立联系,使得之后的 x 能够通过外部记忆获取相关图像进行比对来实现更好的预测。

img

Meta Network

Meta Network的快速泛化能力源自其“快速权重”的机制,在训练过程中产生的梯度被用来作为快速权重的生成。模型包含一个
meta learner 和一个 base learner,meta learner 用于学习 meta task 之间的泛化信息,并使用 memory
机制保存这种信息,base learner 用于快速适应新的 task,并和 meta learner 交互产生预测输出。

Metric Based

如果在 Few-shot Learning 的任务中去训练普通的基于 cross-entropy
的神经网络分类器,那么几乎肯定是会过拟合,因为神经网络分类器中有数以万计的参数需要优化。

相反,很多非参数化的方法(最近邻、K-近邻、Kmeans)是不需要优化参数的,因此可以在 meta-learning 的框架下构造一种可以端到端训练的
few-shot 分类器。该方法是对样本间距离分布进行建模,使得同类样本靠近,异类样本远离。下面介绍相关的方法。

孪生网络(Siamese Network) 通过有监督的方式训练孪生网络来学习,然后重用网络所提取的特征进行 one/few-shot 学习。

img

具体的网络是一个双路的神经网络,训练时,通过组合的方式构造不同的成对样本,输入网络进行训练,在最上层通过样本对的距离判断他们是否属于同一个类,并产生对应的概率分布。在预测阶段,孪生网络处理测试样本和支撑集之间每一个样本对,最终预测结果为支撑集上概率最高的类别。

相比孪生网络,匹配网络(Match Network)为支撑集和 Batch 集构建不同的编码器,最终分类器的输出是支撑集样本和query 之间预测值的加权求和。

该文章也是在不改变网络模型的前提下能对未知类别生成标签,其主要创新体现在建模过程和训练过程上。对于建模过程的创新,文章提出了基于memory 和 attention 的 matching nets,使得可以快速学习。

img

Author: pangzibo243
Link: https://litianbo243.github.io/2019/08/31/小样本学习(Few-shot-Learning)/
Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.
支付宝打赏
微信打赏