传统上,开发机器学习系统需要收集大量的数据,并对其进行ML算法训练以产生结果。然而、
- 收集、标记和验证大数据是很昂贵的。一个机器学习项目的成本可能高达85,000美元。
- 有很多情况下,企业无法获得大型数据集,必须依靠少数例子来产生结果。例如,罕见的疾病,不会有大量的放射学图像。或者,如果智能手机需要有数以千计的用户照片来识别他们并获得解锁,这将是令人沮丧的。
小样本学习是机器学习中的一个热门话题,模型根据少数训练实例进行预测。在这篇文章中,我们将探讨小样本学习如何工作,它的应用和方法。
什么是小样本学习(FSL)?
小样本学习(FSL),在少数资料中也被称为低量学习(LSL),是一种机器学习方法,训练数据集包含有限的信息。
机器学习应用的通常做法是提供模型所能接受的尽可能多的数据。这是因为在大多数机器学习应用中,提供更多的数据可以使模型预测得更好。然而,少数几个镜头的学习旨在用较少的训练数据建立准确的机器学习模型。
小样本学习算法加上以数据为中心的模型开发方法可以帮助公司减少数据分析/机器学习(ML)成本,因为输入数据量是决定资源成本(如时间和计算)的一个重要因素。
为什么它很重要?
- 像人类一样学习的测试基地:人类在看到几个例子后就能发现手写字符的不同。然而,计算机需要大量的数据来对他们 “看到” 的东西进行分类,并发现手写字符之间的差异。寥寥无几的学习是一个测试基础,希望计算机能像人类一样从少数例子中学习。
- 为罕见的情况学习:通过使用小样本学习,机器可以学习罕见情况。例如,在对动物的图像进行分类时,用少量的学习技术训练的机器学习模型在接触到少量的先验信息后可以对一个稀有物种的图像进行正确分类。
- 减少数据收集工作和计算成本:由于少数照片学习需要较少的数据来训练模型,因此与数据收集和标记有关的高成本被消除了。低量的训练数据意味着训练数据集的低维度,这可以大大降低计算成本。
小样本学习的应用有哪些?
1. 计算机视觉:计算机视觉探讨了计算机如何从数字图像或视频中获得高水平的理解。小样本学习主要用于计算机视觉,以处理以下问题:
- 字符识别(NIPS)
- 图像分类(ICML)
- 物体识别(NIPS*, ECCV)
- 手势识别(牛津)。
- 其他与物体有关的应用
对象跟踪(NIPS**)。
部件标签(IEEE) - 其他图像应用:
图像检索(NIPS***)
图像生成(NIPS****)
图像说明(计算机协会)。
场景位置识别(IEEE*)。
三维物体的形状视图重建(ICLR) - 视频应用
视频分类(ECCV*)。
运动预测(ECCV**)。
动作定位(IEEE**)
人员重新识别(IEEE***)。
事件检测(英国机器视觉会议)
2. 自然语言处理(NLP):小样本学习使自然语言处理(NLP)应用程序能够用少量的文本数据实例完成任务。这些任务可以列举如下:
- 翻译(ICLR*)。
- 句子完成(谷歌)
- 短篇评论的情感分类(NAACL)
- 对话系统的用户意图分类(IBM研究)。
- 犯罪指控预测,研究中使用的代码在Github上共享。(Association for Computer Linguistics)
- 词汇相似性任务(如nonce定义)(计算机语言学协会*)。
- 文本分类 (Association for Computer Linguistics**)
3. 音频处理:含有语音/声音信息的数据可以通过声学信号处理进行分析,小样本学习可以实现以下任务的部署:
4. 机器人技术:为了使机器人的行为更像人类,它们应该能够从少数示范中概括出信息。因此,在训练机器人完成某些任务的过程中,少数几个镜头的学习起着关键作用,例如:
- 通过模仿单个示范来学习动作(IEEE****)
- 从少数示范中学习操纵动作(IEEE*****)
- 视觉导航(PMLR)
- 连续控制(NIPS*****)
5. 医疗保健:
6. 其他应用:
它是如何工作的?
Source: Borealis.ai
小样本学习(FSL)可以被认为是一个元学习问题,在这个问题上,模型会学习如何学习解决给定的问题。
让我们以一个图像分类问题为例:
- 该模型被送入一些不同类别的示例图像(被称为N-way-K-shot分类),并通过不同的图像反复解决这个任务。
- 例如,上面的图片显示了一个3-way-2-shot分类问题,每个任务涉及支持集中3种不同动物的2张图片,模型试图对查询集中的图片进行分类。
- 该模型通过每个不相关的任务提高其将动物分类到正确类别的准确性。
- 然后在一组不同的分类任务中测试该模型的性能。
小样本学习和零样本学习之间有什么区别?
小样板学习的目的是让ML模型在训练数据集中有少量实例的情况下预测出正确的类别。零样本学习的目的是预测正确的类别,而不需要在训练数据集中接触任何属于该类别的实例。零样本学习和小样本学习有相互的应用,例如:
- 图像分类
- 语义分割
- 图像生成
- 对象检测
- 自然语言处理
最后是单次学习,它经常与零样本学习混在一起。单次学习是一种特殊的小样本学习问题,其目的是从一个训练样本/图像中学习有关物体类别的信息。智能手机使用的人脸识别技术就是一个单次学习问题的例子。
小样本学习的不同方法是什么?
关于相似性的先验知识:ML模型在训练数据中学习模式,这些模式倾向于分离不同的类别,即使它们是未见过的。传统的ML模型不能区分训练数据集中不存在的类,而小样本学习技术使ML模型能够区分训练数据中不存在的两个类,在某些应用中,它们甚至可以区分两个以上的未见过的类:
辨别两个未见过的类别:
辨别多个未见过的类别:
关于学习的先验知识:ML模型使用先验知识来约束学习算法,以选择能从少数例子中很好概括的参数。
在小样本学习中用于超参数调整的技术有:
学习更新规则也可以鼓励小数据集的良好表现:
序列方法取整个数据集和测试实例,预测测试标签的值:
数据的先验知识:ML模型利用关于数据结构和变异性的先验知识,这使得从少数例子中构建可行的模型。
生成模型可以为数据类别的家族构建:
训练集的新例子可以被合成:
它是如何在Python中实现的?
目前有几个开源的几率学习项目。为了实现小样本学习项目,用户可以参考以下Python中的库/存储库:
- Pytorch – Torchmeta:一个既能解决几率分类问题又能解决回归问题的库,它可以方便地在多个问题上进行基准测试,并具有可重复性。
- FewRel:一个大规模的几率关系提取数据集,它包含一百多个关系和大量不同领域的注释实例。
- Meta Transfer Learning:这个资源库包含了TensorFlow和PyTorch实现的Meta-Transfer Learning for Few-Shot Learning。
- Few Shot:该资源库包含干净的、可读的和经过测试的代码,用于重现几率学习研究。
- Few-Shot Object Detection(FsDet):包含官方的简单小样本对象检测的实现。
- Omniglot数据集上的原型网络(Prototypical Networks):在Pytorch的一个笔记本上实现 “用于小样本学习的原型网络”。
ML的未来
IBM的研究表明,ML在未来将围绕以下几个部分进行发展:
- 经典ML:一次处理一个数据集的问题,一个任务和一个重度训练。
- 小样本ML:处理大量的离线训练,然后在类似的任务上轻松学习
- 发展中的ML:对各种任务进行持续的终身学习