小样本学习(Few-shot Learning)综述
问题定义
人类非常擅长通过极少量的样本识别一个新物体,比如小孩子只需要书中的一些图片就可以认识什么是“斑马”,什么是“犀牛”。
在人类的快速学习能力的启发下,研究人员希望机器学习模型在学习了一定类别的大量数据后,对于新的类别,只需要少量的样本就能快速学习,这就是 Few-shot Learning 要解决的问题。
Meta Learning
又称为Learning to Learn。
- 在 meta training 阶段,将数据集分解为不同的 meta task,去学习类别变化的情况下模型的泛化能力。
- 在 meta testing 阶段,面对全新的类别,不需要变动已有的模型,就可以完成分类。
Few-shot Learning
Few-shot Learning 是 Meta Learning 在监督学习领域的应用。
训练方法
- few-shot 的训练集中包含了很多的类别,每个类别中有多个样本。
- 在训练阶段,会在训练集中随机抽取 C C C 个类别,每个类别 K K K 个样本(总共 C K CK CK 个数据),构建一个 meta-task,作为模型的 支撑集(support set) 输入。
- 再从这 C C C 个类中剩余的数据中抽取一批(batch)样本作为模型的预测对象(batch set)。
- 即要求模型从 C K CK CK 个数据中学会如何区分这 C C C 个类别,这样的任务被称为 C-way K-shot 问题。
优点
- 训练过程中,每次训练(episode)都会采样得到不同的 meta-task,所以总体来看,训练包含了不同的类别组合。
- 这种机制使得模型学会不同 meta-task 中的共性部分,比如如何提取重要特征及比较样本相似等,忘掉 meta-task 中 task 相关部分。
- 通过这种学习机制学到的模型,在面对新的未见过的 meta-task 时,也能较好地进行分类。泛化性能较好。
举例
2-way 5-shot示例:
meta training 阶段构建了一系列 meta-task 来让模型学习如何根据 support set 预测 batch set 中的样本的标签;meta testing 阶段的输入数据的形式与训练阶段一致(2-way 5-shot),但是会在全新的类别上构建 support set 和 batch。
常用算法
分为三类:Mode Based,Metric Based 和 Optimization Based。
- Model Based 方法旨在通过模型结构的设计快速在少量样本上更新参数,直接建立输入 x 和预测值 P 的映射函数;
- Metric Based 方法通过度量 batch 集中的样本和 support 集中样本的距离,借助最近邻的思想完成分类;
- Optimization Based 方法认为普通的梯度下降方法难以在 few-shot 场景下拟合,因此通过调整优化方法来完成小样本分类的任务。