原文链接: Few-Shot Learning (FSL): What it is & its Applications

如果手机需要成千上万张照片来训练才能进行人脸识别解锁,这是很不友好的。在机器学习应用领域,小样本学习(Few-shot Learning)(在刚刚描述的情况下称为单样本学习(one-shot learning))是一个热门话题,它能够基于少量的训练样本去预测。本文将讨论以下几个方面:

1. 什么是小样本学习?

2. 小样本学习为什么重要 ?

3. 小样本学习(Few-shot Learning)和零样本学习(Zero-shot Learning)的区别

4. 小样本学习的方法

5. 小样本学习的应用

6. Python实现

机器学习的未来

1. 什么是小样本学习?

小样本学习(Few-shot learning, FSL),在少数资料中也被称为low-shot learning(LSL)。小样本学习是一种训练数据集包含有限信息的机器学习问题。

对于机器学习应用来说,通常的做法是提供尽可能多的数据。这是因为在大多数机器学习应用中,输入更多的数据训练能使模型的预测效果更好。然而,小样本学习的目标是使用数量较少的训练集来构建准确的机器学习模型。由于输入数据的维度是一个决定资源消耗成本(如,时间成本,计算成本等)的因素,公司可以通过使用小样本学习来降低数据分析/机器学习消耗成本。

2. 小样本学习为什么重要 ?

  • 类人的学习方式:人在看过少量例子后就可以认出手写字符之间的不同。然而,计算机需要大量的数据去“分类”它看到的东西,并识别出手写字符之间的不同。小样本学习是一种test base的方法,我们期望它能像人一样从少量的样本中学习。
  • 稀有案例学习:小样本学习能用于稀有案例的学习。例如,当对动物图片进行分类时,用小样本学习训练的机器学习模型,在只得到少量的先验信息后,可以正确地对稀有物种的图像进行分类。
  • 降低数据收集和计算成本:由于小样本学习仅需要少量的数据来训练模型,消除了数据收集和标记相关的高成本。训练数据量少意味着训练数据集的维数低,这可以显著降低计算成本。

3. 小样本学习(Few-shot Learning)和零样本学习(Zero-shot Learning)的区别

小样本学习的目的是在有少量训练数据的情况下能获得准确分类测试样本的模型。零样本学习的目的是预测训练数据集中没有出现过的类。零样本学习和小样本学习有很多共同的应用,例如:

  • 图像分类(image classification)
  • 语义分割(semantic segmentation)
  • 图像生成(image generation)
  • 目标检测(object detection)
  • 自然语言处理(natural language processing)

还有一种叫单样本学习(one-shot learning)的,它经常会和零样本学习混在一起。单样本学习是小样本学习问题的一个特例,它的目的是从一个训练样本或图片中学习到有关物体类别的信息。单样本学习的一个例子是,智能手机中使用的人脸识别技术。

4. 小样本学习的方法

5. 小样本学习的应用

5.1 计算机视觉 :计算机视觉探索如何从数字图像或视频中获得高级理解。小样本学习在计算机视觉中主要用于处理以下问题:

5.2 自然语言处理 :小样本学习使自然语言处理应用程序能够用很少的文本数据样本来完成任务。例如:

5.3 机器人 :为了让机器人的行为更像人类,它们应该能够从少量的示例中归纳出信息。因此,小样本学习在训练机器人完成特定任务中扮演了一个关键角色,例如:

  • 通过模仿一个动作来学习该动作-learning a movement by imitating a single demonstration。 IEEE****
  • 从少量示例中学习操作动作-learning manipulation actions from a few demonstrations。 IEEE*****
  • 视觉导航-visual navigation。 PMLR
  • 连续控制-continuous control。 NIPS*****

5.4 声信号处理 :包含有关声音信息的数据可以通过声信号处理进行分析,小样本在该方向的应用有:

5.5 其它应用

6. Python实现

机器学习的未来

IBM 研究表明,机器学习在未来将围绕以下领域发展:

  • 经典机器学习:一次处理一个数据集、一个任务和一个繁重训练的问题
  • 基于小样本的机器学习:处理大量的离线训练,然后在类似的任务上轻松学习
  • 发展中的机器学习:持续学习各种任务。
当前 机器学习 的技术已经运用到很多工程项目中,但大部分 机器学习 的算法只有在样本数量充足且 运用在单一场景中的时候,才能获得良好的结果。其中,经典的支持向量回归机是一种具有良好泛化能力的 回归算法。但若当前场景的样本数量较少时,则得到的回归模型泛化能力较差。针对此问题,本文以加权ε 支持向量回归机为基础,提出了小样本数据的迁移学习支持向量回归机算法。本文算法以加权ε支持向量回 归机为Bagging 算法的基学习器,使用与目标任务相关联的源域数据,通过自助采样生成多个子回归模型, 采用简单平均法合成一个总回归模型。在UCI 数据集和现实数据集——玉米棒与花生粒储藏环节损失数据集 上的实验结果表明本文方法较标准ε-SVR 算法与改进的RMTL 算法在小数据样本上有更好的泛化能力。
分类非常常见,但如果每个类只有几个标注样本,怎么办呢? 比如:我们打造了一个智能对话开发平台以赋能第三方开发者来开发各自业务场景中的任务型对话,其中一个重要功能就是对意图进行分类。大量平台用户在创建一个新对话任务时,并没有大量标注数据,每个意图往往只有几个或十几个样本。 面对这类问题,有一个专门的 机器学习 分支——Few- shot L ear ning 来进行研究和解决。 一、 小样本学习 方法 1、基于模型微调的 小样本学习 基于模型微调的方法是 小样本学习 较为传统的方法,该方法通常在大规模数据上预训练模型,在目标小样
在大规模 小样本学习 (large-scale FSL )中,有这样一个baseline:使用所有的源类(source class)训练一个feature embedding模型,然后用这个模型提取出目标类(target class)中样本的特征,以进行最近邻分类。从下图可以看出,仅使用简单的最近邻(NN)方法得到的结果,甚至能与目前最先进的 FSL 模型相匹配: 这就说明了一个问题:在SGM、PP...
Rethinking Few- Shot Image Classification: A Good Embedding Is All You Need? https://arxiv.org/abs/2003.11539(CVPR2020) https://github.com/WangYueFt/rfs/(code) keywords: FSL 、Embedding Model、Knowl...
Generalizing from a Few Examples: A Survey on Few- Shot L ear ning 论文地址:paper 这篇概述很简洁: 简介 的论文解读 一、 摘要 机器学习 在有大量数据支撑的时候的效果很好,但是数据量很少的时候效果很差了。Few shot l ear ning 是针对于这个问题场景下提出的解决办法,他可以迅速自适应到一个新的任务中去。 FSL 的核心问题是unreliable empirical risk minimizer,基于如何利用先验知识来解决问题,我们可以把
在安装 FSL 之前,需要先在虚拟机上安装好Ubuntu系统,建议预留给它的硬盘空间大于60G。接下来,按照以下步骤安装 FSL : 1. 打开终端(Ctrl+Alt+t),固定到左侧选项栏。 2. 输入以下指令以添加 FSL 软件包的源:sudo sh -c 'echo "deb http://neuro.debian.net/debian data main" > /etc/apt/sources.list.d/neurodebian.list' 3. 输入以下指令以添加 FSL 软件包的密钥:sudo apt-key adv --recv-keys --keyserver hkp://pgp.mit.edu:80 0xA5D32F012649A5A9 4. 输入以下指令以更新软件包列表:sudo apt-get update 5. 输入以下指令以安装 FSL :sudo apt-get install fsl -complete 6. 安装完成后,可以在终端中输入 fsl 命令来启动 FSL 。 需要注意的是,官网原指令是“sudo apt-get install fsl -complete”,但有些用户在安装时可能会提示找不到安装包,这时可以尝试使用上述步骤来安装 FSL 。另外, FSL 的安装方式有多种,可以根据自己的需求选择适合自己的安装方式。 PaddlePaddle: AssertionError: In PaddlePaddle 2.x, we turn on dynamic graph mode by default