Generalizing from a Few Examples: A Survey on Few-Shot Learning
前言
一篇关于小样本学习的综述,引用量高达1600余次,文章的知识通俗易懂,结构清晰,是FSL入门的绝佳文章,相信你一定会有所收获~
Abstract
机器学习在数据集很小的时候会遇到阻碍,小样本学习(FSL) 使用先验知识,可以快速泛化到仅包含少量具有监督信息的样本的新任务中。FSL的核心问题是经验风险最小化不可靠。FSL方法可以从三个角度进行分类:
- 数据:使用先验知识来增强监督经验;
- 模型:使用先验知识来减少假设空间;
- 算法:使用先验知识来改变在假设空间中对最佳假设的搜索。
1. INTRODUCTION
高性能计算设备、大规模数据集、先进的模型算法加快了人工智能的步伐。但是当前的AI不能够从几个examples中快速概括。成功的AI应用需要从大规模数据集中学习,但是人类可以利用过去的知识快速学习。
FSL可以从有限数量的具有监督信息的示例中学习,场景与优势:
- 给定几个examples进行character generation;
- 难以获得监督数据的隐私、安全、道德等场景;
- 小样本翻译、推荐冷启动等;
- 减轻收集大规模监督数据的负担。
本文的贡献:
- 给出FSL正式定义;
- 给出具体事例区分不同的FSL方法;
- 指出FSL核心问题——经验风险最小化问题不可靠;
- 综述全面,分类具体,分析得当;
- 提出有前途的发展方向。
1.1 Organization of the Survey
略
1.2 Notation and Terminology
通用的符号表示如下:
标记 | 名称 |
---|---|
T \rm T T | 给定的某一个学习任务 |
I \rm I I | 训练集的个数 |
D = { D t r a i n , D t e s t } \rm D=\{D_{train}, D_{test} \} D={Dtrain,Dtest} | 训练集和测试集 |
D t r a i n = { ( x i , y i ) } \rm D_{train}=\{(x_i, y_i) \} Dtrain={(xi,yi)} | 训练集 |
p ( x , y ) \rm p(x, y) p(x,y) | 真实样本的联合概率分布 |
h ^ \rm \hat h h^ | FSL模型学习到的x到y的假设关系 |
θ \rm {\theta} θ | 模型训练的参数 |
ℓ ( y ^ − y ) \rm \ell(\hat y - y) ℓ(y^−y) | 损失函数 |
y ^ = h ( x ; θ ) \rm \hat y =h(x;\theta) y^=h(x;θ) | 预测结果 |
h ∗ ∈ H \rm h^* \in \mathcal{H} h∗∈H | 假设空间 H \mathcal{H} H中最优的假设 |
FSL任务的目标是学习一个最优的策略 h ∗ ∈ H \rm h^* \in \mathcal{H} h∗∈H的 θ \rm {\theta} θ。
2. Overview
2.1 Problem Definition
FSL作为机器学习的特例,在给定训练集提供有限监督信息的情况下可以获得良好的学习性能。FSL定义如下:
FSL是一种机器学习问题(由E,T,P定义),其中E仅包含有限数量的示例,这些示例具有针对目标T的监督信息。
现有的FSL问题主要是监督学习问题。包括图像分类,短文本情感分类和目标识别。通常人们会考虑N-way-K-shot分类,即训练数据集包括N个类别的K个示例。
FSL三个典型的场景:
- 像人类一样的test bed(试验台);
- 学习罕见的情况,当难以获得充分监督信息时;
- 减少数据收集工作和计算成本,通过少量监督数据和先验知识提高性能往往具有更高通用性。
FSL相对机器学习多了先验知识,一个典型的FSL方法就是贝叶斯方法。只有一个样本称为one-shot,没有监督样本称为ZSL,这就需要E包含来自其他模态的信息。
2.2 Relevant Learning Problems
本节阐述一些机器学习问题和FSL的关联与差异。
- 弱监督学习。从仅包含弱监督(不完整、不准确的监督信息)的经验E中学习。与FSL最相关的是不完整信息的弱监督,即只有少量样本有监督信息,又可以分类为:
- 半监督学习:从少量监督样本和大量无标注样本中学习,应用于文本或网页分类等场景。正向无标签学习是其中一个特例。
- 主动学习:选择信息丰富的无标签数据来询问专家获得label。适合高成本场景。
根据定义,弱监督学习仅包含分类和回归问题,但是FSL还包括强化学习问题。弱监督学习将大量无监督数据作为additional information,而FSL引入大量先验知识。
- 不平衡学习。从经验E中学习y的偏态分布。y中某些值很少使用会出现。它训练测试所有可能的y。FSL选择一些示例对y进行训练测试,也会引人其它y作为先验知识。
- 迁移学习。将数据丰富的源域迁移到数据稀缺的目标域。迁移学习方法在FSL中很热门,其中先验知识从源任务迁移到小样本任务。
- 元学习。通过提供的数据集和元学习者跨任务提取的元知识改进新任务T的P。元知识即不同任务之间通用的知识。换言之,利用通用信息和特定任务的信息来提升任务。
2.3 Core Issue
2.3.1 Empirical Risk Minimization
经验风险最小化问题。给定一个假设h,我们希望最小化它的预期风险R,即相对于
p
(
x
,
y
)
p(x, y)
p(x,y)测量的损失,具体来说:
R
(
h
)
=
∫
ℓ
(
h
(
x
)
,
y
)
d
p
(
x
,
y
)
=
E
[
ℓ
(
h
(
x
)
,
y
)
]
R(h)= \int \ell (h(x), y) dp(x,y)=\mathbb{E}[\ell (h(x), y)]
R(h)=∫ℓ(h(x),y)dp(x,y)=E[ℓ(h(x),y)]
即求loss的期望,越小越好。但是
p
(
x
,
y
)
p(x, y)
p(x,y)是未知的,因此常用包含
I
I
I个数据集的损失来近似
R
(
h
)
R(h)
R(h),即:
R
I
(
h
)
=
1
I
∑
i
=
1
I
ℓ
(
h
(
x
i
)
,
y
i
)
R_I(h)= \frac{1}{I} \sum^{I}_{i=1}\ell (h(x_i), y_i)
RI(h)=I1∑i=1Iℓ(h(xi),yi)
h
^
\hat{h}
h^是未知的(可以认为loss为0),需要通过一些
h
∈
H
h \in \mathcal{H}
h∈H 进行近似。
h
∗
h^*
h∗是假设空间中最佳近似,
h
i
h_i
hi是通过经验风险最小化得到的H中的最佳假设。
其中近似误差
E
a
p
p
(
H
)
\mathcal{E}_{\rm app}(\mathcal{H})
Eapp(H)衡量了假设空间中的函数与最优假设
h
^
\hat{h}
h^的逼近程度,估计误差
E
e
s
t
(
H
,
I
)
\mathcal{E} _{\rm est}(\mathcal{H},I)
Eest(H,I)衡量了最小化经验风险
R
I
(
h
)
R_I(h)
RI(h)而不是假设空间
H
\mathcal{H}
H内的预期风险
R
(
h
)
R(h)
R(h)的效果。
总而言之,为了降低总体的误差,需要从数据、模型、算法三个角度出发来获得在数据集
D
t
r
a
i
n
D_{train}
Dtrain下、假设空间
H
\mathcal{H}
H下的最优假设。
2.3.2 Unreliable Empirical Risk Minimizer
为了降低
E
e
s
t
(
H
,
I
)
\mathcal{E} _{\rm est}(\mathcal{H},I)
Eest(H,I),需要大规模带有监督数据的数据集,但在FSL场景,可用的数据集很小容易过拟合。下图展示了训练样本足够和不足的学习的比较:
2.4 Taxonomy
为了缓解FSL监督学习中存在的不可靠的经验风险最小化问题,必须采用先验知识。现有的FSL工作主要分为以下三类:
- 数据。采用先验知识进行数据增强,将样本数量提升到 I ~ \tilde{I} I~,其中 I ~ ≫ I \tilde{I} \gg I I~≫I,这样可以获得更加精准的经验风险最小化假设。
- 模型。这些方法采用先验知识来约束假设空间,得到更小的假设空间 H ~ \tilde{\mathcal{H}} H~,更小的假设空间可以在数据集 D t r a i n D_{train} Dtrain下学习到更好的假设。
- 算法。采用先验知识搜索假设空间最优假设的参数 θ \theta θ,先验知识通过提供良好的初始化或者知指导步骤来改变搜索策略,对于后者,由此产生的最终二等搜索步数受到先验知识和经验风险最小化的影响。
3. DATA
通过人工制定的规则进行数据增强经常作为FSL方法的预处理方法,如在图像上进行平移、翻转、剪切、缩放和反射等。然而设计这些规则很大程度取决于领域知识,并且需要高昂的劳动成本。数据增强规则只能应用于特定的数据集,并且人工很难列举出所有可能的invariance(不变性)。
除了以上手工制定的规则外,下面的是更高级的数增强方法:
3.1 Transforming Samples from D t r a i n D_{\mathbf{train}} Dtrain
该策略通过将数据 ( x i , y i ) ∈ D t r a i n (x_i, y_i) \in D_{\rm train} (xi,yi)∈Dtrain转换为多个具有变化的样本实现。转换过程作为先验知识生成额外的样本。早期的工作包括通过通过样本对齐,将相似类中学习几何变换;自动编码器通过从相似类中学习到类内变换作用到原始数据上,以及使用从大量场景图像中学习到的一组独立属性强度回归器生成新的样本。
3.2 Transforming Samples from a Weakly Labeled or Unlabeled Data Set
该策略通过从具有弱标签或无标签的大规模数据中选择具有目标标签的样本来增强 D t r a i n D_{\rm train} Dtrain。这种方法的优势是不用人工标注数据,但是如何选择样本是一个问题。一些方法为每个目标标签学习一个样本SVM,然后用于预测弱标签数据集的样本标签,并将预测得到的数据加入 D t r a i n D_{\rm train} Dtrain中。其它方法包括直接使用标签传播(label propagation)、使用渐进策略选择信息量丰富的无标签数据。
3.3 Transforming Samples from Similar Data Sets
该策略通过聚合和改编来自相似但是更大的数据集的输入输出对来增强 D t r a i n D_{\rm train} Dtrain。聚合权重通常基于样本之间某些相似性度量。有方法从辅助语料库中提取聚合参数,但是这些样本可能不是来自目标FSL类,所以直接用来增强 D t r a i n D_{\rm train} Dtrain会带来噪声。因此GAN用于从很多样本的数据中生成不可区分的合成样本,它有两个生成器,一个将few-shot类的样本映射到large-scale上的类,另一个将large-scale上类的样本映射到few-shot类(为了弥补GAN训练中样本不足的问题)。
3.4 Discussion and Summary
选择何种增强策略取决于具体的应用和数据。比如大量弱监督数据但是成本高,对弱监督数据进行数据增强;当大规模无监督数据都难以收集时,如果有few-shot类相似的类,可以从这些相似类型中迁移样本;如果只有一些学习好的transformers而没有原始样本,可以通过转换对 D t r a i n D_{\rm train} Dtrain进行填充。总结:
- 数据通过引入先验知识得到增强;
- 增强策略迁移性差,最近的AutoAugment自动学习深度网络训练的增强策略可以解决;
- 现用方法主要在图像上,而不是文本和音频。
4. MODEL
为了接近最标准的假设
h
^
\hat h
h^,模型必须确定一个假设空间,以使该假设空间内最优假设和
h
^
\hat h
h^距离很小。FSL需要足够大的假设空间(线性假设空间太小),这使得标准机器学习模型不可用。FSL方法利用先验知识将假设空间
H
\mathcal{H}
H约束到更小的假设空间
H
~
\tilde{\mathcal{H}}
H~,既能得到更可靠的经验风险最小化器,又降低了过拟合的风险。
根据使用的先验知识,这类方法可以分为四个类型:
4.1 Multitask Learning
在存在多个相关任务的情况下,多任务学习通过挖掘任务的通用信息和特定信息来同时学习这些任务。具体来说,给定C个任务,其中部分任务只有少量样本,其他有大规模样本。把few-shot任务作为目标任务,其余任务作为源任务,由于这些任务是同时学习的,因此每个任务的学习参数是相互约束的。根据这些参数如何约束又可以分为参数共享和参数绑定。
4.1.1 Parameter Sharing
该策略直接在任务之间共享一些参数。比如不同任务的网络模型共享前几层通用信息,并学习不同最终层获得不同的输出;或者目标任务只能更新task-specific层,源任务可以同时更新共享层和task-specific层。
4.1.2 Parameter Tying
该策略鼓励不同任务之间的参数相似,一种通用的做法是对参数进行正则化。即对源任务的模型参数和目标任务的模型参数使用一些专门的正则项进行对齐。
4.2 Embedding Learning
Embedding学习将每个样本嵌入到一个低纬的空间中,让相似样本更接近,不相似样本更容易区分。在低纬的空间中可以构造较小的假设空间,这样只需要少量的训练样本。嵌入函数主要从先验知识中获取,同时可以加入少样本的task-specific信息。
Embedding学习的核心组件:
- 将测试样本 x t e s t ∈ D t e s t x_{\rm test} \in D_{\mathbf{test}} xtest∈Dtest嵌入到 z \mathcal{{\LARGE z} } z中的函数 f f f;
- 将训练样本 x t r a i n ∈ D t r a i n x_{\rm train} \in D_{\mathbf{train}} xtrain∈Dtrain嵌入到 z \mathcal{{\LARGE z} } z中的函数 g g g;
- 测量上面两个函数的相似度的函数 s ( ⋅ , ⋅ ) s(·,·) s(⋅,⋅)。
使用两个独立的嵌入函数可以获得更好的准确性。现有的embedding学习方法如下所示:
根据嵌入函数
f
f
f和
g
g
g的参数是否因任务而异,可以将FSL方法分为:
- 任务特定的Embedding模型;
- 任务不变的embedding模型(通用模型);
- 混合嵌入模型。
4.2.1 Task-Specific Embedding Model
仅用来自该任务的信息学习特定任务的嵌入函数。例如用小样本数据集训练时,每次挑选两个样本作为一对来训练embedding(通常用排序损失函数,因此通常是成对训练),可以显式增加训练数量。
4.2.2 Task-Invariant Embedding Model
任务不变的嵌入方法从大规模数据集中学习通用嵌入函数,然后直接用于新的少样本而无需重新训练。第一个FSL嵌入模型使用内核嵌入样本,最近更加复杂的嵌入通过卷积孪生网络学习得到。
尽管这种方法不使用少样本数据更新嵌入模型的参数,但是许多方法在训练embedding模型时模拟了小样本场景。假设数据集有N个类别,U个类别用于训练,训练的目标函数是尽可能优化剩下N-U个类别的模型表现,现在常用的方法有MatchNet,PrototypeNet等,主要思路都是围绕如何学习在训练样本和测试样本上的映射以及相似度函数,在测试集上寻找与训练集相关的样本进行预测。
4.2.3 Hybrid Embedding Model
虽然任务不变的embedding方法计算成本低,但是并没有利用当前任务的特定知识。Hybrid混合前两种方法,先用task-invariant方法训练包含先验知识的embedding,然后在具体任务上,将训练集作为输入进行训练,使得含有先验知识的模型可以学习到具体任务的信息,如图:
通俗来说,task-specific方法只是对小样本进行训练,Task-Invariant只对大规模数据训练出embedding直接用于小样本,第三种方法结合了二者的优点。
4.3 Learning with External Memory
该方法从训练集中提取知识,并将其存储在额外的空间,如下图所示:
每个新的样本
x
t
e
s
t
x_{\rm test}
xtest用从memory中提取的加权平均内容表示,这限制
x
t
e
s
t
x_{\rm test}
xtest只能用记忆中的内容表示,因此从根本上降低了假设空间的大小。键值对记忆通常用于FSL,记忆表示为
M
(
i
)
∈
R
m
M(i) \in \mathbb{R}^m
M(i)∈Rm,其包含键值对
M
(
i
)
=
(
M
k
e
y
(
i
)
,
M
v
a
l
u
e
(
i
)
)
M(i) = (M_{\rm key}(i),M_{\rm value}(i))
M(i)=(Mkey(i),Mvalue(i))。
x
t
e
s
t
x_{\rm test}
xtest首先用
f
f
f表示,测试阶段用一个相似度量函数
s
(
f
(
x
t
e
s
t
)
,
M
k
e
y
(
i
)
)
s(f(x_{\rm test}),M_{\rm key}(i))
s(f(xtest),Mkey(i))来寻找最相近的key预测对应的结果value。
M
M
M通常很小因为操作昂贵。下表是常用方法分类:
根据存储器的功能,这一类的FSL方法可以细分为两种类型。
4.3.1 Refining Representations
将训练集依次保存到记忆单元中,因此在测试阶段可以更好表示测试样本。相关方法包括MANN、Lifelong Memory等专注于如何设定策略替换先前的记忆信息。
4.3.2 Refining Parameters
用记忆单元存储参数。在训练集上训练映射函数 g g g时用记忆单元存储参数。然后在测试阶段,根据记忆信息对预测函数 f f f进行参数化表示。相关方法有MetaNet、MN-Net等。
5.4 Generative Modeling
生成模型方法借助先验知识,从观察到的
x
i
x_i
xi估计概率分布
p
(
x
)
p(x)
p(x),这类方法可以处理很多任务,如生成、识别、重构和图像翻转。在生成模型中,假定观察到的
x
x
x是从某些分布
p
(
x
;
θ
)
p(x;\theta)
p(x;θ)中提取出的,通常有一个潜在变量
z
∼
p
(
z
;
γ
)
z \sim p(z;\gamma )
z∼p(z;γ),因此
x
∼
∫
p
(
x
∣
z
;
γ
)
p
(
z
;
γ
)
d
z
x \sim \int p(x|z;\gamma)p(z;\gamma) dz
x∼∫p(x∣z;γ)p(z;γ)dz。
p
(
z
;
γ
)
p(z;\gamma )
p(z;γ)是先验分布,给FSL带来了重要的知识,将假设空间
H
\mathcal{H}
H约束到更小的假设空间
H
~
\tilde{\mathcal{H}}
H~。
根据潜在变量
z
z
z的表示,可以将FSL生成模型方法分为三种类别。
4.4.1 Decomposable Components
一些类的样本虽然很少,但是可能会共享一些更小的可分解组件,
比如对人脸的识别只用很少的几张图片,但是人脸可以分解为眼睛、耳朵、嘴巴等,通过大量的样本可以很容易学习到这些组件,然后只需要找到这些可分解组件的正确组合即可预测是哪一类,因此可以采用生成模型来捕捉这些组件的交互性。方法包括贝叶斯one-shot,贝叶斯程序学习(BPL)等。本质上该方法就是基于先验知识抽特征。
4.4.2 Groupwise Shared Prior
通常相似的任务有着相似的先验概率。
比如有三个类猫、豹、孟加拉虎,前两类数量很多,可以从这两类学习先验概率用于少数类孟加拉虎的先验概率。对于一个新的小样本类,首先找到其分组,然后根据组间共享先验概率进行建模。
4.4.3 Parameters of Inference Networks
该方法本质上是根据数据分布情况推断其最优参数。
为了得到最好的参数,必须最大化后验概率:
p
(
z
∣
x
;
θ
,
γ
)
=
p
(
x
,
z
;
θ
,
γ
)
p
(
x
;
γ
)
=
p
(
x
∣
z
;
θ
)
p
(
z
;
γ
)
∫
p
(
x
∣
z
;
θ
)
p
(
z
;
γ
)
d
z
p(z \mid x ; \theta, \gamma)=\frac{p(x, z ; \theta, \gamma)}{p(x ; \gamma)}=\frac{p(x \mid z ; \theta) p(z ; \gamma)}{\int p(x \mid z ; \theta) p(z ; \gamma) d z}
p(z∣x;θ,γ)=p(x;γ)p(x,z;θ,γ)=∫p(x∣z;θ)p(z;γ)dzp(x∣z;θ)p(z;γ)
由于分母中的积分造成求解上式困难,从数据中学习到的动态分布
q
(
z
;
δ
)
q(z;\delta)
q(z;δ)通常用于近似上式,最近
q
(
z
;
δ
)
q(z;\delta)
q(z;δ)通过推理网络近似。推理网络具有经过大规模数据训练得到的大量参数,典型的推理网络有VAE,自回归模型,GAN等。
4.5 Discussion and Summary
通过对模型改造引入先验知识,从而在语义层面降低搜索空间,通常有四种方法:
- 存在多个相似任务,使用多任务学习框架。以小样本任务作为优化目标,其他任务作为类似正则化作用对目标进行约束。
- 存在大规模数据,使用嵌入的方法,将样本映射到一个易于分离样本类别的空间,但是需要小样本任务与其他任务相关,此外如何混合任务的通用和特定信息是很有帮助的。
- 如果可以使用记忆单元,可以训练简单的分类器,将给定的测试样本输出最相似的类别,该方法缺点是需要大量额外空间以及如何防止记忆遗忘。
- 如果想基于FSL执行生成、重建等任务,可以使用生成模型。生成模型需要从其他数据集中学习先验知识,但是生成模型训练难度大,推理成本高。
5. ALGORITHM
算法的作用是在假设空间中搜索最优假设。在FSL中,算法使用先验知识来影响参数获取的方式:
- 提供良好的初始化参数;
- 直接学习优化器以输出搜索步骤。
根据先验知识如何影响搜索策略,可以将方法分为三类:
- 完善现有参数,即对在其他数据上训练好的参数再进行训练(类似于微调)。
- 完善元学习参数,对相似的任务得到的参数进行“微调”。
- 学习优化器(optimizer),如改变优化器修锁步骤或步长。
5.1 Refining Existing Parameters
该策略将从相关任务学习到的预训练模型参数作为初始化,并通过FSL数据集进行微调。这是基于预训练参数学习到大规模数据通用的结构实现的。
5.1.1 Fine-Tuning Existing Parameter by Regularization
该策略通过正则化为few-shot任务的预训练参数进行微调。简单通过sgd可能会导致过拟合,正则化可以防止过拟合,正则化方法如下:
- 提前停止。从训练集中分离一个验证集监控训练过程,一旦没有性能提升就停止。
- 选择性更新参数。只更新一部分参数防止过拟合。
- 同时更新参数的相关部分。对参数进行分组,然后对每一组用相同的信息进行更新。
- 使用模型回归网络。模型回归网络可以捕获与任务无关的变化,将小样本训练得到的参数映射到大量样本映射到的参数。
5.1.2 Aggregating a Set of Parameters
当有很多模型是从相关任务中学习得到时,可以将这些模型聚合到一个合适的模型中,然后直接输入训练集或者进行微调。第三节中,来自未标注的数据或者相似标签数据可以增强数据,同样的,来自这些数据集预训练的模型也可以使用,关键在于如何利用这些先验知识。
- 无标签数据集。从无标签数据预训练函数来更好地对数据进行分离(有点像预训练),然后网络使用这些预训练参数进行微调。
- 相似数据集。用新类别的特征代替相似类别的特征,分类器只为新类别调整分类阈值(其他参数不调整)。
5.1.3 Fine-Tuning Existing Parameter with New Parameters
使用新参数微调现有参数。预训练的参数不足以编码新的FSL任务,因此将模型参数扩展为
θ
=
{
θ
0
,
δ
}
\theta = \{\theta_0, \delta \}
θ={θ0,δ},在学习
δ
\delta
δ的同时微调
θ
0
\theta_0
θ0。可以理解为模型前几层进行微调,后几层重新学习。
5.2 Refining Meta-Learned Parameter
本节方法使用元学习来改进元学习参数,如下图所示。
参数通过元学习不断被更新,这和5.1中固定参数方式不同。
元学习参数通常通过梯度下降优化,一个代表方法是MAML,它通过一些有效的梯度下降进行微调以获得某些任务特定的参数
ϕ
s
\phi_s
ϕs,即
ϕ
s
=
θ
0
−
α
∇
θ
0
L
t
r
a
i
n
s
(
θ
0
)
\phi_s = \theta_0 - \alpha \nabla_{\theta_0}\mathcal{L} ^s_{\rm train}(\theta_0)
ϕs=θ0−α∇θ0Ltrains(θ0)。同时元学习参数由来自多个元训练任务的反馈进行更新,即:
θ
0
=
θ
0
−
β
∇
θ
0
∑
T
s
∼
P
(
T
)
L
t
e
s
t
s
(
θ
0
)
\theta_0 = \theta_0 - \beta\nabla_{\theta_0}\sum_{T_s \sim P(T)}\mathcal{L} ^s_{\rm test}(\theta_0)
θ0=θ0−β∇θ0∑Ts∼P(T)Ltests(θ0),这里的损失函数是测试样本的损失总和。通过不断使用少样本数据改进
θ
0
\theta_0
θ0,元学习器改进其参数以快速适应小样本数据集。
最近对MAML的改进如下:
- 合并特定任务的信息。MAML为所有的任务提供相同的初始化参数。这忽略了特定任务的信息,只在任务集非常相似时才适用。可以学习从新任务的良好初始化参数子集中选择参数。
- 对元学习参数不确定性建模。小样本毋庸置疑会带来更高的不确定性,衡量这种不确定性的能力为主动学习和进一步数据收集提供了线索。现有的工作考虑了元学习参数的不确定性,特定任务参数不确定性等。
- 改进微调程序。加入正则化方法提高模型的泛化性能。
5.3 Learning the Optimizer
和5.2直接使用梯度下降方法不同,而是学习一个优化器可以直接输出更新,如下图所示:
该方法无需调整学习率或搜索更新方向,学习算法会自动完成。该策略为新任务提供了一个优化器,在数据集上计算得到的损失函数作为误差信号反馈给下一次迭代的元学习者。在一个任务上学习好后,元学习者通过梯度下降对测试集上的损失进行改进。通过从一组任务中学习,元学习者改进了为FSL提供有效算法的方法。
5.4 Discussion and Summary
改进现有参数可以减少在假设空间的搜索工作量,同时只需要较低的计算成本就能获得良好的假设,但是由于是在其他任务上学习得到的参数,精度上会有所损失。
其它两种方法依赖元学习。元学习参数可以更接近特定任务的参数,在这之中,元学习者充当优化器的作用。如何跨粒度或者跨数据源进行元学习仍然是个方向。从这个角度看,元学习和多任务是相似的,因此还有一个关注点是如何避免负迁移。
6. FUTURE WORKS
本节进一步讨论了FSL发展的四个方向:
- 问题设置;
- 技术;
- 应用;
- 理论。
6.1 Problem Setups
现有FSL方法使用单一模态的先验知识,但是别的模态可能存在丰富的监督数据。来自多模态的先验数据可以为互补视图提供先验知识。比如零样本学习就频繁使用多模态数据。
最近有工作将零样本方法引入到FSL问题中,用小样本数据进行微调,但是容易过拟合。另一种方法强制通过多模态嵌入在共享空间对齐,但是由于不同模态结构不同需要谨慎处理。
6.2 Techniques
之前章节根据先验知识在FSL中数据、模型、算法上的应用,将FSL方法进行分类,这些组件都可以进行改进。
元学习在FSL中可以以很小的开销快速适用新的任务,然而这些任务通常来自单个任务分布,如果任务未知,直接从已知任务中学习会带来负迁移,此外,任务的分布也是在不断变化的,这也会带来灾难性遗忘问题。
不同方法各有利弊,并且由人工设计,因此,AutoML被提出,通过构建任务感知机器学习模型,已经在许多应用上达到了最先进的水平。可以将AutoML扩展到FSL中,让人们获得更好的算法设计。
6.3 Applications
FSL应用场景广泛,如计算机视觉、机器人技术、NLP等。
6.3.1 Computer Vision
最热门的应用包括字符识别和图像分类。这些已经达到很高的准确率,几乎没有提升空间。
6.3.2 Robotics
FSL在机器人技术中发挥重要作用,比如通过单一演示中模仿学习机器人手臂动作,以及通过与用户互动改善其行为。
6.3.3 Natural Language Processing
FSL在NLP也有大量应用,翻译,程序解析,情感分类等。
6.3.4 Acoustic Signal Processing
声学信号处理,最近流行方向是从用户的音频样本中克隆音频用于智能家居、导航等语音服务场景。
6.3.5 Others
最近在医学背景下的尝试是小样本药物发现。此外,FSL还被应用在曲线拟合和通过一系列逻辑推理执行计算。
6.4 Theories
FSL使用先验知识来弥补监督信息的不足,虽然样本数量决定使用什么规模的模型,但是引入先验知识可以降低所需样本的复杂性,即使样本数很少,也能驾驭较大的模型。这是基于FSL使用先验知识可以增加更多的样本、约束假设空间并改变搜索策略(增加找到最优假设空间的概率)。
此外,FSL领域适应(迁移)能力很强,通过微调前缀神经网络可以获得更好的风险边界。
最后,FSL算法的收敛并不能充分理解。特别是元学习方法是在一系列同分布的任务上优化的而不是单一任务。一种分析认为元学习器学习深度网络的较低层,而学习器学习最后一层。对元学习方法的收敛性进行更一般的分析将非常有用。
7. CONCLUSION
FSL旨在拉进AI和人类学习之间的差距,它可以通过结合先验知识来学习仅包含几个监督信息的新任务。
阅读总结
花了半个月利用碎片化时间总算看完了这篇FSL的综述,也让我对小样本学习有了更深入的认识,总的来说,小样本学习就是在监督数据不足的情况下,通过引入先验知识,来提升模型的性能。具体来说,就是在数据、模型、算法三个部分做文章。
数据部分,其实就是数据增强,有无监督数据利用其通用结构信息,有半监督数据通过预测来丰富监督数据,有相似数据直接迁移,数据是得到最优假设的基础;模型部分,可以考虑从多任务学习、嵌入学习、引入外部空间以及生成模型入手,利用通用知识(比如预训练好的embedding),同时学习领域特定知识(在小样本上微调),来减少假设空间;算法部分和模型部分思想上有所类似,如果有充分的模型参数,直接在上面做微调,如果是多个元学习任务,那么通过在这多个元学习任务上学习来优化模型,算法上还可以学习一个优化器,让优化器自己选择更新方向和大小。
未来展望上,多模态的知识对齐是一个很有意思的研究,但是由于不同模态结构不同,对齐肯定会有很大的难度,AutoML也是很有前景的方向,当前的模型都是人工构建,如果模型能够学会自己构建,可以很快速适应各种规模的数据,并且会极大程度上压缩假设空间。
虽然现在大模型在NLP领域掀起了血雨腥风,但是不代表普通NLP工作人员无法继续手上的工作,小样本场景还是有很多很多,比如教育场景,就可以利用大模型丰富的先验知识,来帮助教育场景构建知识图谱,或者完善教育知识图谱,这是我认为当前的NLP基层工作者可以考虑的方向。
在最后我还是想就AI和人类学习之间的差距展开一个讨论,为什么人类对于许多未接触过的事物,或者仅仅接触过一些类型的样本,就能够很好的做出判断和选择,而AI就不能呢?一开始我百思不得其解,后来室友朱哥的一句话点醒了我,人类不也是利用先验知识进化的吗?根据遗传学原理,祖先的很多先验知识会通过遗传留给后人,所以人类从出生下来就会本能吃母乳,本能学着爬,学着走路等等,所以人和AI是一样的,只不过我们一直没有注意祖先留给我们的宝物罢了。