Press "Enter" to skip to content

【机器学习】Few-shot learning(少样本学习)

文章目录

 

少样本学习的诞生

 

人类本身能够通过极少量的样本识别一个新物体,即使是一个小孩也能凭借动物图册上的几张小小的插画记住不同的动物。在人类的 快速学习能力 的启发下,研究人员希望机器学习模型在学习了一定类别的大量数据后,对于新的类别,只需要 少量 的样本就能快速学习,这就是 Few-shot Learning 要解决的问题。

 

Few-shot Learning 是 Meta Learning 在监督学习领域的应用。Meta Learning,又称为learning to learn,该算法旨在让模型学会“学习”,能够处理类型相似的任务,而不是只会单一的分类任务。举例来说,对于一个LOL玩家,他可以很快适应王者荣耀的操作,并在熟悉后打出不错的战绩。人类利用已经学会的东西,可以更快的掌握一些新事物,而传统的机器学习方法在这方面的能力还有所欠缺,因此提出了元学习这个概念。

 

了解元学习的详情,请参考我的另一篇文章: 【机器学习】Meta-Learning(元学习)

 

Meta learning (元学习)中,在 meta training 阶段将数据集分解为不同的 meta task,去学习类别变化的情况下模型的泛化能力,在 meta testing 阶段,面对全新的类别,不需要变动已有的模型,就可以完成分类。

 

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

 

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

 

少样本学习

 

Few-shot learning指从少量标注样本中进行学习的一种思想。Few-shot learning与标准的监督学习不同,由于训练数据太少,所以不能让模型去“认识”图片,再泛化到测试集中。而是让模型来区分两个图片的相似性。当把few-shot learning运用到分类问题上时,就可以称之为few-shot classification,当运用于回归问题上时,就可以称之为few-shot regression。下面所提到的few-shot learning都只针对分类问题进行讨论。

 

假如我们的有一个很大的训练集,包含以下五类样本,有哈士奇、大象、老虎、金刚鹦鹉和汽车。我们的目标不是让模型认出哪个是哈士奇,哪个是大象,而是让模型知道不同类别间的区别。

我们现在给模型输入一张新的图片松鼠(squirrel),模型并不知道它是松鼠,因为训练样本中没有这一种动物。但当你把两只松鼠的图片都输入到网络中,它虽然不知道它们属于松鼠这一类别,但模型可以很确信的告诉你这是同一物种,因为长得很像。

但当你输入一只穿山甲(pangolin)和一只狗(dog),模型能够区分出来它们长得不像,所以不是同一种动物。

少样本学习中的相关概念

 

概念1:Support set VS training set

 

小样本带标签的数据集称为support set,由于support set数据样本很少,所以不足以训练一个神经网络。而training set每个类别样本量很大,使用training set训练的模型能够在测试集取得很好的泛化效果。

 

概念2:Supervised learning VS few-shot learning

监督学习:
(1)测试样本之前从没有见过
(2)测试样本类别出现在训练集中
Few-shot learning
(1)query样本之前从没有见过
(2)query样本来自于未知类别

我说:少样本学习的优势在于可以判断出新样本来自于未知类别。

 

由于query并未出现在训练集中,我们需要给query提供一个support set,通过对比query和support set间的相似度,来预测query属于哪一类别。

概念3:k-way n-shot support set

k-way:support set中有 k 个类别
n-shot:每一个类别有 n 个样本

例如下图中有四个类别,每个类别有两个样本,所以是4-way 2-shot support set:

Few-shot learning的预测准确率随 way 增加而减小,随 shot 增加而增加。因为对于2-way问题,预测准确率显然要比1000-way问题要高。而对于 shot,一个类别中样本数越多越容易帮助模型找到正确的类别。

 

少样本学习的基本思想

 

Few-shot learning的最基本的思想是学一个 相似性函数 : 来度量两个样本和的相似性。 越大表明两个图片越相似,越小,表明两个图片差距越大。

 

操作步骤:

 

(1)从大规模训练数据集中学习相似性函数

 

(2)比较query与support set中每个样本的相似度,然后找出相似度最高的样本作为预测类别。

 

 

参考链接

 

Few-shot learning(少样本学习)入门
一位学有余力的同学:什幺是Few-shot Learning

Be First to Comment

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注