Few-shot learning(少样本学习)
date
Apr 1, 2023
Last edited time
Apr 1, 2023 06:42 AM
status
Published
slug
少样本学习
tags
DL
CV
summary
type
Post
Field
Plat
人类本身能够通过极少量的样本识别一个新物体,即使是一个小孩也能凭借动物图册上的几张小小的插画记住不同的动物。在人类的快速学习能力的启发下,研究人员希望机器学习模型在学习了一定类别的大量数据后,对于新的类别,只需要少量的样本就能快速学习,这就是 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),模型并不知道它是松鼠,因为训练样本中没有这一种动物。但当你把两只松鼠的图片都输入到网络中,它虽然不知道它们属于松鼠这一类别,但模型可以很确信的告诉你这是同一物种,因为长得很像。
概念 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 样本来自于未知类别
我说:少样本学习的优势在于可以判断出新样本来自于未知类别。
概念 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 中每个样本的相似度,然后找出相似度最高的样本作为预测类别。