Geeks_Z の Blog Geeks_Z の Blog
首页
  • 学习笔记

    • 《HTML》
    • 《CSS》
    • 《JavaWeb》
    • 《Vue》
  • 后端文章

    • Linux
    • Maven
    • 汇编语言
    • 软件工程
    • 计算机网络概述
    • Conda
    • Pip
    • Shell
    • SSH
    • Mac快捷键
    • Zotero
  • 学习笔记

    • 《数据结构与算法》
    • 《算法设计与分析》
    • 《Spring》
    • 《SpringMVC》
    • 《SpringBoot》
    • 《SpringCloud》
    • 《Nginx》
  • 深度学习文章
  • 学习笔记

    • 《PyTorch》
    • 《ReinforementLearning》
    • 《MetaLearning》
  • 学习笔记

    • 《高等数学》
    • 《线性代数》
    • 《概率论与数理统计》
  • 增量学习
  • 哈希学习
GitHub (opens new window)

Geeks_Z

AI小学生
首页
  • 学习笔记

    • 《HTML》
    • 《CSS》
    • 《JavaWeb》
    • 《Vue》
  • 后端文章

    • Linux
    • Maven
    • 汇编语言
    • 软件工程
    • 计算机网络概述
    • Conda
    • Pip
    • Shell
    • SSH
    • Mac快捷键
    • Zotero
  • 学习笔记

    • 《数据结构与算法》
    • 《算法设计与分析》
    • 《Spring》
    • 《SpringMVC》
    • 《SpringBoot》
    • 《SpringCloud》
    • 《Nginx》
  • 深度学习文章
  • 学习笔记

    • 《PyTorch》
    • 《ReinforementLearning》
    • 《MetaLearning》
  • 学习笔记

    • 《高等数学》
    • 《线性代数》
    • 《概率论与数理统计》
  • 增量学习
  • 哈希学习
GitHub (opens new window)
  • Python

  • MLTutorials

  • 卷积神经网络

  • 循环神经网络

  • Transformer

  • VisionTransformer

  • 扩散模型

  • 计算机视觉

  • PTM

  • MoE

  • LoRAMoE

  • LongTailed

  • 多模态

  • 知识蒸馏

  • PEFT

  • 对比学习

  • 小样本学习

    • 小样本学习
      • 1\. INTRODUCTION
      • 2.OVERVIEW
      • 3.相关符号定义
      • 4.FSL问题定义
      • 5.两类FSL方法的区别与联系
      • 6.基于判别模型的方法
      • 7.总结
    • 小样本学习论文阅读
    • UCL
  • 迁移学习

  • 零样本学习

  • 集成学习

  • Mamba

  • PyTorch

  • CL

  • CIL

  • 小样本类增量学习FSCIL

  • UCIL

  • 多模态增量学习MMCL

  • LTCIL

  • DIL

  • 论文阅读与写作

  • 分布外检测

  • GPU

  • 深度学习调参指南

  • AINotes
  • 小样本学习
Geeks_Z
2025-04-17
目录

小样本学习

Link: 小样本学习——概念、原理与方法简介(Few-shot learning) (opens new window)

Few-shot learning (opens new window) (FSL) 在机器学习领域具有重大意义和挑战性,是否拥有从少量样本中学习和概括的能力,是将人工智能和人类智能进行区分的明显分界点,因为人类可以仅通过一个或几个示例就可以轻松地建立对新事物的认知,而机器学习算法通常需要成千上万个有监督样本来保证其泛化能力。原则上我们将FSL方法分为基于生成模型和基于判别模型两种,其中基于元学习的FSL方法值得特别注意。

到目前为止,FSL有一部分比较重要的应用,涵盖了计算机视觉,自然语言处理,音频和语音,强化学习和数据分析等许多研究热点,可以说是一个很有发展前景的方向。

1. INTRODUCTION

作为人类,其中一个显著的标志就是能够仅通过一个或几个示例就快速建立对新概念的认知能力。许多认知学和心理学证据表明,人类可以通过很少的图像来识别视觉对象,甚至儿童也可以通过仅一次的接触去记住一个新单词。

尽管没有确切的证据解释人类从少量样本中学习和概括能力的实现机制,但是一些神经生物学学者认为,人类杰出的学习和认知能力得益于其前额叶皮层(PFC)和人脑的工作记忆机制 ,尤其是PFC特定的神经生物学机制与先前存储在大脑中的记忆之间的相互作用。

相比之下,大多数尖端的机器学习算法都需要大量数据,尤其是最广为人知的深度学习,即使它已将人工智能推向了新的高潮,在视觉,文本,语音等广泛的研究领域中均取得了令人瞩目的成就。

一般来讲,深度学习的成功可以归结于三个关键因素:强大的计算资源(例如GPU)、复杂的神经网络(如CNN、LSTM)、大规模数据集。

但是,由于诸如隐私,安全性或数据的高标签成本等一系列因素,许多现实的应用场景(例如在医学,军事和金融领域)没有条件获取足够的带标签的训练样本,因此,如何使得一个机器学习/深度学习系统能够从非常少量的样本中高效地学习和推广其认知能力,成为许多机器学习/深度学习研究人员迫切期待实现的蓝图。

从高层的角度来看,研究小样本学习(FSL)的理论和实践意义主要来自三个方面:

  1. 首先,FSL方法预计不会依赖大规模的训练样本,从而避免了某些特定应用中数据准备的高昂成本。
  2. FSL可以缩小人类智能与人工智能之间的距离,这是发展通用类型AI的必经之路。
  3. FSL可以为一项新出现的、可采集样本很少的任务实现低成本,快速的模型部署。

尽管上述的实践意义非常令人鼓舞,但由于其理论中固有的难度(即数据规模问题),对于FSL的研究在过去的几十年里,比起利用大量数据进行的机器学习研究要缓慢很多。

接下来,先考虑一个一般的机器学习问题,该问题由准备好的监督训练集所描述:

Dt={(xi,yi)}i−1n ,( x∈X,y∈Y, 从联合分布 PX×Y 中得出)

该学习算法的目标是产生映射函数: f∈F:X→Y ,使得预期的错误成本 εex=E(x,y)∼PX×YL(f(x),y) 达到最小。

其中 L(f(x),y) 表示 x 的预测值 f(x) 与其实际值 y 之前的损失Loss

实际上,联合分布 PX×Y 对于我们是未知的,因此因此学习算法实际上旨在最小化经验误差 εex=E(x,y)∼DtL(f(x),y) 。

在这种情况下,一个典型的问题是,如果学习算法选择的 f 的函数空间 F 太大,则泛化误差 ε=|εex−εem| 会变得很大,因此,很容易出现过拟合。

我们可以从以下角度重新审视这个问题:

minfεem,s.t.f(xi)=yi,∀(xi,yi)∈Dt.(1)

如果 Dt 中包含更多的受监督的样本,那么函数 f 将会有更多的约束条件,这意味着函数 f 的空间将会变小,这将会带来一个比较好的泛化效果。相反,如果监督样本的数据集规模减少,自然会导致较差的泛化能力。从本质上讲,每个监督样本形成的约束可以看作是函数 f 上的归一化,它可以压缩函数 f 的冗余可选空间,从而减少学习算法的泛化误差。

从以上可以看出,如果一个学习算法只使用普通的ML/DL学习技术来处理一个FSL任务,而没有任何复杂的学习策略或特定的网络设计,那么得到的算法模型将面临严重的过拟合问题。

小样本学习(FSL)可以追溯到2000年初,也称为small-sample learning, few-shot learning或者one-shot learning,这个概念(FSL)正交于zero-shot learning(ZSL),那是机器学习的另一个热门话题。ZSL的设置需要特定于概念的辅助信息,以支持跨概念的知识传递信息,这与FSL的信息大不相同。

2.OVERVIEW

机器学习的一般机制是使用在预先准备的训练样本上学习的统计模型来对未来数据做出预测。 在大多数情况下,模型的泛化能力由足够数量的训练样本来保证。

但是,在许多实际应用中,可能只允许我们拿到极少的关于新事物的训练数据,在限制范围内,每个概念仅一个或几个示例。 例如,我们可能需要识别几种不常见的国家一级保护动物,而手边只有几张带注释的动物图片。

随着深度学习的蓬勃发展,尤其是CNN在视觉任务上取得的巨大成功,许多FSL研究人员开始将目光从非深度模型转移到深度模型,2015年,G.Kochet等人通过提议一个孪生卷积网络,在成对样本上学习与类别无关的相似性度量标准,率先将深度学习纳入FSL问题的解决方案,这也标志着FSL进入了一个新时代。之后,后续的FSL方法充分利用了深度神经网络在特征表示和端到端模型优化方面的优势,从不同角度解决了FSL问题,包括数据增强,度量学习和元学习。

图1 FSL发展历程和相关应用

3.相关符号定义

通常,我们用 $x $ 来表示输入数据,$y $ 来表示监督信息, X 和 Y 分别表示输入数据和监督信息的空间。

一个典型的FSL任务数据则被描述为 DT=(Dtrn,Dtst)

其中:

Dtrn={(xi,yi)}i=1Ntrn,Dtst={xj},xi,xj∈Xτ⊂X,yi∈Yτ⊂Y

用于任务 T 的样本 xi,xj 来自一个特定的域 ,Dτ={Xτ,P(Xτ)} ,由数据空间 Xτ 和边际概率分布 $P(X_{\tau})$ 组成。

通常,在 Dtrn 中有 C 个任务类,每个类只有 K (非常小,例如1、5)个样本,即 Ntrn = CK ,这也称为C-way,K-shot任务。目的是产生一个目标预测函数 :f∈F:X→Y ,该函数可以对 Dtst 中的待预测样本进行预测。根据之前的分析,很难用少量的 Dtrn 建立高质量的模型。

因此,在大多数情况下,研究人员可以利用一个有监督的辅助数据集 :DA=(xia,yia)i=1Naux,xia∈XA⊂X,yia∈YA⊂Y

DA 中包括足够的类别和归属该类别的根据以往的经验收集的样本 (Na≫Ntrn,|YA|≫|YT|)

需要注意的是, DA 中不包含任务 T 中的样本类别。即, YT∩YA=⊘ ,但 DA 和 DT 中的数据都来自同一域中,也就是说,,,DT{Xτ,P(Xτ)}=DA{XA,P(XA)}

这个设定是相对可靠且合理的,因为现在我们可以轻松地从许多与task T 相关的历史数据,包括离线或公开标记的数据中获取我们需要的辅助数据集 DA ,尤其是在当今的大数据时代。

在此基础上,我们对FSL进行统一定义。

4.FSL问题定义

**定义:**Few-shot learning是指,给定一个有特定于任务 T 的包含少量可用的有监督信息的数据集 DT 和与 T 不相关的辅助数据集 DA ,小样样本学习的目标是为任务 T 构建函数 f ,该任务的完成利用了 DT 中很少的监督信息和 DA 中的知识,完成将输入映射到目标的任务。

上述定义中与 T 不相关的术语表示 DT 和 DA 中的类别是正交的,即 YT∩YA=∅ 。如果 DA 覆盖了 T 中的任务,即 YT∩YA=YT ,则FSL问题将崩溃为传统的大样本学习问题。

由此可以产生很多基于FSL的扩展性问题,如 Dtrn 中包含一部分无标签数据,或者 DA≠DT 的情况。

5.两类FSL方法的区别与联系

判别模型概念理解:

判别方法由数据直接学习决策函数 f(x) 或者条件概率分布 P(y|x) 作为预测的模型,即判别模型。判别方法关心的是对给定输入 x ,应该预测什么样的输出 y 。

比如说要确定一只羊是山羊还是绵羊,用判别模型的方法是先从历史数据中学习到模型,

然后通过提取这只羊的特征来预测出这只羊是山羊的概率,还是绵羊的概率。

生成模型概念理解:

生成方法由数据学习输入和输出联合概率分布 P(x,y) ,然后求出后验概率分布 P(y|x) 作为预测的模型,即生成模型。这里以朴素贝叶斯为例,我们要求的目标可以通过:

P(x,y)=P(x|y)P(y)

求出输入输出的联合概率分布,然后通过贝叶斯公式:

P(y|x)=P(x|y)P(y)P(x)

求出后验概率分布。

对于上面的例子我们换种思路,我们可以根据山羊的特征首先学习出一个山羊模型,然后根据绵羊的特征学习出一个绵羊模型。然后从这只羊中提取特征,放到山羊模型中看概率是多少,再放到绵羊模型中看概率是多少,哪个大就是哪个。

由于我们关注的是 y 的离散值结果中哪个概率大(比如山羊概率和绵羊概率哪个大),而并不是关心具体的概率,因此上式改写为:

$arg\max_{y}P(y|x)=arg\max_{y}\frac{P(x|y) P(y)}{P(x)} =arg\max_{y}{P(x|y) P(y)} $

其中 P(x|y) 称为条件概率(class-conditional probability),或称为“似然”(likelihood), P(y) 称为先验(prior)概率。 P(x) 是用于归一化的"证据"因子。对于给定样本 x 。证据因子 P(x) 与类标记无关,因此估计 P(y|x) 的问题就转化为如何基于训练数据来估计先验 P(y) 和似然 P(x|y) 。

判别模型与生成模型比较:

判别模型:

优点: 1)仅需要有限的样本。节省计算资源,需要的样本数量也少于生成模型。 2)能清晰的分辨出多类或某一类与其他类之间的差异特征,准确率往往较生成模型高。 3)由于直接学习P(y|x),而不需要求解类别条件概率,所以允许我们对输入进行抽象(比如降维、构造等),从而能够简化学习问题。

缺点:

1)不能反映训练数据本身的特性。能力有限,可以告诉你的是1还是2,但没有办法把整个场景描述出来。 2)没有生成模型的优点。 3)黑盒操作: 变量间的关系不清楚,不可视。

主要应用:

Image and document classification

Biosequence analysis

Time series prediction

生成模型:

优点:
1)生成给出的是联合分布$P(x,y) $ ,不仅能够由联合分布计算后验分布P(y|x)(反之则不行),还可以给出其他信息,比如可以使用P(x)=∑i=1kP(x|yi)P(yi) 计算边缘分布P(x)。如果一个输入样本的边缘分布P(x) 小的话,那么可以认为学习出的这个模型可能不太适合对这个样本进行分类,分类效果可能会不好,这也是所谓的异常值检测(outlier detection)。
2)生成模型收敛速度比较快,即当样本数量较多时,生成模型能更快地收敛于真实模型。
3)生成模型能够应付存在隐变量的情况,比如混合高斯模型就是含有隐变量的生成方法。

4)研究单类问题比判别模型灵活性强

缺点:
1)联合分布能够提供更多的信息,但也需要更多的样本和更多计算,尤其是为了更准确估计类别条件分布,需要增加样本的数目,而且类别条件概率的许多信息是我们做分类用不到,因而如果我们只需要做分类任务,就浪费了计算资源。
2)另外,实践中多数情况下判别模型效果更好。

6.基于判别模型的方法

6.1度量学习(Metric Learning)

度量学习的一般目标是学习相似度度量 S ,在该标准下,相似样本对可以获得较高的相似度得分,而非相似对则获得较低的相似度得分。

基于度量学习的FSL方法的通用框架

如上图所示,所有基于度量学习的FSL方法都遵循这一原理,它使用辅助数据集 DA 创建相似性度量并将其推广到任务 T 的新颖类中。相似度度量可以是简单的距离测量,复杂的网络或其他可行的模块或算法,只要它们可以估计样本或特征之间的相似度即可。

几种典型的基于度量学习的FSL方法包括类相关性度量(CRM)、KernelBoost (opens new window)、Siamese Net等,他们开发了与不同的度量损失函数和相关的各种形式的相似性度量指标来解决FSL任务。

基于度量学习的FSL方法

CRM是非深度期提出的基于度量学习的基于FSL方法的基础工作,它使用马氏距离来衡量样本相似性。

KernelBoost 建议通过boosting算法学习成对距离,形式为核函数。核函数定义为一些弱核函数的组合。

Siamese Nets (opens new window)是第一个将深度神经网络带入FSL任务的工作,它由拥有相同权重的孪生CNN组成,两个CNN接受一对样本 (,)(xi,xj) 作为输入,并且将它们在顶层的输出进行计算,以输出单个成对相似度(,)scprep(xi,xj)。

2-CNN网络模型

关于度量学习算法的具体流程和内容将会在后续文章中给出

6.2 数据增强(Augmentation)

数据增强是提高训练样本数量和增强数据多样性的直观方法,在视觉领域,一些基本的增强操作包括旋转,翻转,裁剪,平移以及将噪波添加到图像中。对于FSL任务,这些低层次的增强手段不足以为FSL模型的泛化能力带来实质性的收益。 在这种情况下,不少文章提出了针对FSL定制的更复杂的增强模型,算法或网络。

基于数据增强的FSL方法的总体框架

除了DAGAN在数据级别对样本进行增强之外,其他方法也实现了在task T 中训练样本的特征级增强。根据数据的扩充是否依赖于外部信息(例如语义属性,词向量属性等),可以将现有的基于扩充的FSL方法进一步分为有监督和无监督两类。

基于监督增强的几种FSL方法包括特征轨迹转移、AGA、Dual TriNet、Author-Topic (AT)和ABS-Net。为便于标记,设 Ωfe 为特征空间, Ωsi 为辅助信息空间。通过这些方法学习到的扩增 A(·) 本质上是 Ωfe 与 Ωsi 之间的映射关系,尽管它们在映射方向和映射模块上有所不同,总结如下图所示。

feature与side information之间的映射关系

基于数据增强的FSL方法不会与其他FSL方法冲突,例如基于度量学习或元学习的方法。相反,大多数基于增强的FSL方法是对它们的补充,数据增强方法可以当作即插即用的模块:首先可以采用这些增强策略来丰富 Dtrn ,然后通过其他FSL方法学习增强的 Dtrnaug .

具体内容会在之后的文章中详细探讨

6.3 元学习(Meta Learning)

元学习的想法最早是在九十年代提出的。 随着深度学习的普及,一些文章提出利用元学习策略来学习以优化深度模型。通常,元学习主张跨任务学习,然后适应新任务。

其目的是在任务级别上学习而不是在样本上学习,并且学习任务未知的系统而不是特定于任务的模型。

FSL可以用于验证跨任务的元学习方法的功能,其中每个任务仅提供一些带标签的样本。

元学习通过两个阶段来处理FSL问题:meta-train(元训练)和meta-test(元测试),在元训练阶段,模型暴露于许多独立的,由辅助数据集 DA 构建的监督任务 T∼p(T) 中,以学习如何适应未来的相关任务。 p(T) 定义任务分配,这表明所有任务都来 p(T) 自并遵循相同的任务范式,例如,所有任务都是C-ways,K-shot问题。

每个meta-train任务都会设置一个特定于任务的数据集 DT={Dtrn,Dtst}

在元测试中,模型在新任务 T∼p(T) 上测试,其元测试标签空间与元训练期间的标签空间不相交。

元学习是一种高级的跨任务学习策略,而不是特定的FSL模型。我们基于元学习模型来在该学习策略背后进行FSL的内容。通常将基于主题学习的FSL方法概括为五个子类 类别:Learn-to-Measure (L2M), Learn-to-Finetune (L2F), Learn-to-Parameterize (L2P), Learn-to-Adjust (L2A) and Learn-to-Remember (L2R)。

5-way ,1-shot示意图

我们有一个拥有大量数据的训练集(training set),我们利用这个训练集来构造出和测试时类似的数据结构 ,DA{XA,P(XA)} ,也就是sample set和query set来模拟测试时的support set和testing set。我们可以使用训练集来生成巨量的模拟任务,从而在meta层面上训练整个关系网络。随后,我们在运用数据集 DT(Dtrn,Dtst) 来对网络进行调整,以期待让其实现小样本学习的任务,在少量数据集 DT 上实现准确分类。元学习的目标就是通过学习大量的任务,从而学习到内在的元知识,从而能够快速的处理新的同类任务,这和少样本学习的目标设定是一样的。

具体的元学习方案和其余扩展内容会在专栏随后的文章中更新

7.总结

使学习系统能够从少量样本中学习,对于机器学习和人工智能的进一步发展至关重要,本文对小样本学习(FSL)的概念、原理和方法进行了简要的解释,并且将FSL方法进行了归类解释,随后会更新一些关于文中谈到的FSL方法和相关原理解释。

上次更新: 2025/06/25, 11:25:50
对比学习在学什么
小样本学习论文阅读

← 对比学习在学什么 小样本学习论文阅读→

最近更新
01
帮助信息查看
06-08
02
常用命令
06-08
03
学习资源
06-07
更多文章>
Theme by Vdoing | Copyright © 2022-2025 Geeks_Z | MIT License
京公网安备 11010802040735号 | 京ICP备2022029989号-1
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式