发布时间:2020
机器学习在数据密集型应用中取得了成功,但在数据集很少时,常常受到阻碍。
符号和术语
考虑学习任务 T ,FSL 处理数据集 D = {Dtrain,Dtest},其中包含训练集 Dtrain = {(xi,yi )} I i=1(其中 I 很小)和测试集 Dtest = {xtest }。令 p(x,y) 为输入 x 和输出 y 的真实联合概率分布,并且 ˆ h 为从 x 到 y 的最优假设。 FSL 通过拟合 Dtrain 并在 Dtest 上进行测试来学习发现 ˆ h。为了近似 ˆ h,FSL 模型确定假设 h(·; θ ) 的假设空间 H,其中 θ 表示 h 使用的所有参数。这里使用参数 h,因为非参数模型通常需要大量数据集,因此不适合 FSL。 FSL 算法是一种优化策略,它搜索 H 以找到参数化最佳 h* ∈ H 的 θ。FSL 性能通过在预测 yˆ = h(x; θ ) 上定义的损失函数 (yˆ,y) 来衡量,并且观察到的输出 y。
定义 2.1(机器学习 [92, 94])。如果计算机程序的性能可以通过 P 测量的 T 上的 E 来提高,则可以说计算机程序可以从某些类别的任务 T 和性能测量 P 的经验 E 中学习。
任务 T 经验 E 性能测量 P
定义 2.2。少样本学习 (FSL) 是一种机器学习问题(由 E、T 和 P 指定),其中 E 仅包含有限数量的示例,其中包含目标 T 的监督信息。
现有的FSL问题主要是监督学习问题。具体来说,小样本分类仅在每个类别的几个标记示例的情况下学习分类器。示例应用包括图像分类[138]、短文本情感分类[157]和对象识别[35]。形式上,使用 1.2 节中的符号,few-shot 分类学习一个分类器 h,它预测每个输入 xi 的标签 yi 。通常,人们会考虑 N-way-K-shot 分类 [37, 138],其中 Dtrain 包含来自 N 个类别的 I = KN 个示例,每个类别有 K 个示例。 Fewshot 回归 [37, 156] 只给出从该函数采样的几个输入-输出示例对来估计回归函数 h,其中输出 yi 是因变量的观测值y,xi是记录自变量x的观测值的输入。除了少样本监督学习之外,FSL 的另一个实例是少样本强化学习 [3, 33],其目标是在仅给定由状态-动作对组成的少数轨迹的情况下找到策略。
我们现在展示 FSL 的三个典型场景(表 2):
• 充当像人类一样学习的测试平台。为了迈向人类智能,计算机程序能够解决 FSL 问题至关重要。一个流行的任务(T)是仅给出几个例子就生成新角色的样本[76]。受人类学习方式的启发,计算机程序使用 E 进行学习,E 包括给定的带有监督信息的示例和预先训练的概念(例如零件和关系)作为先验知识。生成的字符通过视觉图灵测试(P)的通过率进行评估,区分图像是由人类还是机器生成。有了这些先验知识,计算机程序还可以像人类一样通过一些例子来学习分类、解析和生成新的手写字符。
• 学习罕见案例。当很难或不可能获得足够的有监督信息的例子时,FSL 可以学习罕见情况的模型。例如,考虑一个药物发现任务 (T ),它试图预测新分子是否具有毒性作用 [4]。
正确指定为有毒或无毒 (P) 的分子百分比随着新分子的有限测定和许多类似分子的先验知识测定获得的 E 的提高而提高。
• 减少数据收集工作和计算成本。 FSL 可以帮助减轻收集大量带有监督信息的示例的负担。考虑少样本图像分类任务(T)[35]。图像分类精度(P)随着目标T每个类别的一些标记图像获得的E以及从其他类别提取的先验知识(例如原始图像到协同训练)而提高。成功完成这项任务的方法通常具有更高的通用性。因此,它们可以很容易地应用于许多样本的任务。
与表1相比,表2在“经验E”下多了一栏,标记为“先验知识”。由于 E 仅包含与 T 直接相关的监督信息的少数示例,因此常见的监督学习方法通常在 FSL 问题上失败是很自然的。
因此,FSL方法通过将E中可用的监督信息与一些先验知识相结合,使目标T的学习变得可行,先验知识是“学习者在看到示例之前拥有的关于未知函数的任何信息”[86]。 FSL 方法的一种典型类型是贝叶斯学习 [35, 76]。它将提供的训练集 Dtrain 与一些先验概率分布相结合,这些先验概率分布在给出 Dtrain 之前可用[15]。
备注 1. 当 E 中只有一个带有监督信息的样本时,FSL 称为单次学习 [14, 35, 138]。当 E 不包含任何具有 targetT 监督信息的示例时,FSL 成为零样本学习问题(ZSL)[78]。由于目标类不包含具有监督信息的示例,因此 ZSL 要求 E 包含来自其他类的信息模态(例如属性、WordNet 和罕见对象识别任务中使用的词嵌入),以传输一些监督信息并使学习成为可能。
2.2 相关学习问题
在本节中,我们讨论一些相关的机器学习问题。澄清了与 FSL 的相关性和差异。
• 弱监督学习[163]从仅包含弱监督(例如不完整、不精确、不准确或有噪声的监督信息)的经验E 中学习。与 FSL 最相关的问题是弱监督学习,监督不完全,只有少量样本具有监督信息。根据是利用预言机还是人工干预,可以进一步分为以下几种: ——半监督学习[165],从 E 中的少量标记样本和(通常是大量)未标记样本中学习. 示例应用程序是文本和网页分类。正向无标记学习[81]是半监督学习的一种特例,其中仅给出正向且未标记的样本。例如,在社交网络中推荐好友,我们只能根据好友列表了解用户当前的好友,而他们与其他人的关系是未知的。
—主动学习[117],选择信息丰富的未标记数据来查询预言机以获得输出 y。这通常用于注释标签成本高昂的应用,例如行人检测。
根据定义,不完全监督的弱监督学习仅包括分类和回归,而FSL还包括强化学习问题。此外,不完全监督的弱监督学习主要使用未标记数据作为E中的附加信息,而FSL利用各种先验知识,例如预训练模型、来自其他领域或模态的监督数据,并且不限于使用未标记数据。因此,只有当先验知识是无标签数据并且任务是分类或回归时,FSL才成为弱监督学习问题。
• 不平衡学习[54]从经验E 中学习y 的偏态分布。当很少采用 y 的某些值时,就会发生这种情况,例如在欺诈检测和灾难预测应用中。它通过训练和测试在所有可能的 y 中进行选择。相比之下,FSL 通过一些示例来训练和测试 y,同时可能将其他 y 作为学习的先验知识。
• 迁移学习[101]将知识从训练数据丰富的源域/任务迁移到训练数据稀缺的目标域/任务。可用于跨域推荐、跨时间段、跨空间、跨移动设备的WiFi定位等应用。域适应[11]是一种迁移学习,其中源/目标任务相同,但源/目标域不同。例如,在情感分析中,源域数据包含客户对电影的评论,而目标域数据包含客户对日常商品的评论。迁移学习方法广泛用于 FSL [7,82,85],其中先验知识从源任务迁移到少样本任务。
•元学习[59]通过提供的数据集和元学习器跨任务提取的元知识来改进新任务T的P。具体来说,元学习器逐渐学习跨任务的通用信息(元知识),并且学习器使用特定于任务的信息将元学习器概括为新任务 T。它已成功应用于学习优化器[5, 80]、处理协同过滤中的冷启动问题[137]以及自然语言指导策略[25]等问题。元学习方法可以用来处理 FSL 问题。正如第 4 节和第 5 节所示,元学习器被视为先验知识来指导每个特定的 FSL 任务。附录 A 提供了元学习的正式定义以及如何将其用于 FSL 问题。
2.3 核心问题
在任何机器学习问题中,通常都会存在预测错误,并且无法获得完美的预测。在本节中,我们将阐述监督机器学习中基于错误分解的 FSL 的核心问题[17, 18]。该分析适用于 FSL 监督学习,包括分类和回归,还可以为理解 FSL 强化学习提供见解。
2.3.1 经验风险最小化。给定假设 h,我们希望最小化其预期风险 R,这是相对于 p(x,y) 测量的损失。具体来说,
由于 p(x,y) 未知,经验风险(即 I 个样本的训练集 Dtrain 上样本损失的平均值),
通常用作 R(h) 的代理,导致经验风险最小化 [94, 136](可能需要一些正则化项)。为了便于说明,令
• ˆ h = arg minh R(h) 为最小化预期风险的函数;
• h* = arg minh∈H R(h) 是 H 中最小化预期风险的函数;
• hI = arg minh∈H RI (h) 是H 中最小化经验风险的函数。
由于 ˆ h 未知,因此必须用部分 h ∈ H 来近似。h* 是 H 中 ˆ h 的最佳近似,而 hI 是通过经验风险最小化获得的 H 中的最佳假设。为简单起见,我们假设 ^ h、h* 和 hI 是唯一的。总误差可以分解为 [17, 18]
其中期望是关于 Dtrain 的随机选择。逼近误差 Eapp (H ) 衡量 H 中的函数逼近最优假设 ˆ h 的程度,估计误差 Eest(H, I) 衡量最小化经验风险 RI (h) 而不是预期风险 R 的效果(h) 在H内。
如上所示,总误差受 H(假设空间)和 I(Dtrain 中的示例数量)影响。换句话说,学习减少总误差可以从以下角度尝试:(i)数据,提供Dtrain; (ii) 模型,确定 H; (iii) 算法,搜索适合 Dtrain 的最佳 hI ∈ H。
2.3.2 不可靠的经验风险最小化器。
一般来说,Eest(H, I) 可以通过使用更多的示例来减少 [17,18,41]。因此,当有足够的带有监督信息的训练数据时(即 I 很大),经验风险最小化 hI 可以为 H 中的 h 的最佳可能 R(h*) 提供良好的近似值 R(hI )。
然而,在 FSL 中,可用示例的数量很少。经验风险 RI (h) 可能远不能很好地近似预期风险 R(h),并且由此产生的经验风险最小化 hI 过拟合。事实上,这是FSL监督学习的核心问题,即经验风险最小化器hI不再可靠。因此,FSL要困难得多。图 1 显示了足够和少量训练样本的学习比较。
2.4 分类
为了缓解 FSL 监督学习中经验风险最小化 hI 不可靠的问题,必须使用先验知识。根据使用先验知识增强哪个方面,现有的 FSL 工作可以分为以下几个方面(图 2):
• 数据。这些方法使用先验知识来增强 Dtrain,并将样本数量从 I 增加到 ∼ I,其中 ∼ I ∉ I。然后可以在增强的数据上使用标准机器学习模型和算法,可以得到更准确的经验风险最小化器 h 〜I(图2(a))。
• 模型。这些方法使用先验知识来约束 H 的复杂性,从而导致假设空间 ∼ H 更小。如图 2(b) 所示,灰色区域不被考虑进行优化,因为根据到先验知识已知它们不太可能包含最优 h* 。对于这个较小的 ∼ H,Dtrain 足以学习可靠的 hI [43,86,99]。
• 算法。这些方法使用先验知识来搜索 θ,它参数化了 H 中的最佳假设 h*。先验知识通过提供良好的初始化(图 2(c) 中的灰色三角形)或指导搜索步骤(图2(b)中的灰色虚线)。对于后者,最终的搜索步骤受到先验知识和经验风险最小化的影响。
因此,现有的作品可以归类为统一的分类法,如图 3 所示。
我们将在以下部分详细介绍每个类别。
3 DATA
本节中的 FSL方法使用先验知识来增强数据Dtrain,从而丰富E中的监督信息。通过增强样本集,数据足以获得可靠的 hI(图 4)。
通过手工制定的规则进行数据增强通常用作 FSL 方法中的预处理。
他们可以引入不同类型的不变性供模型捕获。例如,在图像上,可以使用平移 [12, 76, 114, 119]、翻转 [103, 119]、剪切 [119]、缩放 [76, 160]、反射 [34, 72]、裁剪 [103, 160] 和旋转 [114, 138]。然而,设计这些规则想很大程度上依赖于领域知识,并且需要昂贵的劳动力成本。此外,增强规则可能特定于数据集,这使得它们很难应用于其他数据集。
而且,人类不可能枚举出所有可能的不变性。因此,手动数据增强不能完全解决FSL问题[12,34,72,76,114,119]。
除了这些手工制定的规则之外,我们还回顾了以下更高级的数据增强方法。根据转换并添加到 Dtrain 的样本,我们对这些方法进行分类,如表 3 所示。
3.1 从 Dtrain 转换样本
该策略通过将每个 (xi,yi ) ∈ Dtrain 转换为多个具有变化的样本来增强 Dtrain。转换过程作为先验知识包含在经验 E 中,以生成额外的样本。早期的 FSL 论文 [90] 通过迭代地将每个样本与其他样本对齐来从相似的类中学习一组几何变换。将学习到的变换应用于每个 (xi,yi ) 以形成一个大数据集,然后可以通过标准机器学习方法进行学习。类似地,从参考文献[116]中的类似类中学习一组自动编码器,每个自动编码器代表一个类内变异性。通过将学习到的变化添加到 xi 来生成新样本。在参考文献[53]中,通过假设所有类别在样本之间共享一些可变换的变异性,学习单个变换函数将从其他类学习到的样本对之间的变异转移到(xi,yi)。在参考文献[74]中,它没有枚举对内的变异性,而是使用从大量场景图像中学习到的一组独立属性强度回归器将每个 xi 转换为多个样本,并分配这些新样本的原始 xi 标签。在[74]的基础上进行改进,参考文献[82]中使用连续属性子空间向x添加属性变体。
3.2 从弱标记或未标记数据集中转换样本
该策略通过从弱标记或未标记的大数据集中选择具有目标标签的样本来增强 Dtrain。例如,监控摄像头拍摄的照片中,有人、有车、有路,但都没有标注。另一个例子是长演示的视频。这包含说话者的一系列手势,但没有一个被明确注释。由于这样的数据集包含大量样本变化,将它们增强到 Dtrain 有助于描绘更清晰的 p(x,y)。此外,收集这样的数据集更容易,因为不需要人工进行标记。然而,尽管收集成本较低,但一个主要问题是如何选择具有目标标签的样本来增强到Dtrain。在参考文献[102]中,为 Dtrain 中的每个目标标签学习了一个示例 SVM,然后使用它来预测弱标记数据集中样本的标签。然后将具有目标标签的样本添加到 Dtrain。在参考文献[32]中,没有学习分类器,而是直接使用标签传播来标记未标记的数据集。在参考文献[148]中,使用渐进策略来选择信息丰富的未标记样本。然后为所选样本分配伪标签并用于更新 CNN。
3.3 转换来自相似数据集的样本
该策略通过聚合和调整来自相似但更大的数据集的输入输出对来增强 Dtrain。聚合权重通常基于样本之间的某种相似性度量。在参考文献[133]中,它从辅助文本语料库中提取聚合权重[133]。
由于这些样本可能不是来自目标 FSL 类,因此直接将聚合样本增强到 Dtrain 可能会产生误导。因此,生成对抗网络(GAN)[46]被设计为从许多样本的数据集中生成不可区分的合成x~[42]。它有两个生成器,一个将few-shot类的样本映射到大规模类,另一个将大规模类的样本映射到few-shot类(以弥补GAN训练中样本的不足) 。
3.4 讨论和总结
使用哪种增强策略的选择取决于应用程序。有时,目标任务(或类)存在大量弱监督或未标记的样本,但由于收集带注释数据和/或计算成本的成本很高(对应于引入的第三种情况),因此首选少样本学习第 2.1 节)。在这种情况下,可以通过转换弱标记或未标记数据集的样本来执行增强。当大规模的无标签数据集很难收集,但少样本类有一些相似的类时,可以对这些相似类的样本进行变换。如果只有一些学习的转换器而不是原始样本可用,则可以通过转换 Dtrain 中的原始样本来完成增强。
一般来说,通过增强 Dtrain 来解决 FSL 问题非常简单且易于理解。通过利用目标任务的先验信息来扩充数据。
然而,通过数据增强解决FSL问题的弱点在于,增强策略通常是以特定方式为每个数据集量身定制的,并且不能轻松地用于其他数据集(特别是来自其他领域的数据集)。最近,提出了自动学习深度网络训练的增强策略的AutoAugment [27]来解决这个问题。除此之外,现有的方法主要是针对图像设计的,因为生成的图像可以很容易地被人类视觉评估。相比之下,文本和音频涉及语法和结构更难生成。参考文献[144]报告了最近对文本使用数据增强的尝试。
4 模型
为了逼近真实假设 ˆ h,模型必须确定一个包含一系列假设 h 的假设空间 H,使得最优 h* ∈ H 和 ˆ h 之间的距离很小。
考虑到样本有限的小样本 Dtrain,我们可以选择仅具有简单模型(例如线性分类器)的小 H [92, 94]。然而,现实世界的问题通常很复杂,并且不能用小 H 的假设 h 来很好地表示(这可能导致等式(1)中的大 Eapp (H ))[45]。因此,FSL 中首选足够大的 H,这使得标准机器学习模型不可行。本节中的 FSL 方法通过 E 中的先验知识将 H 约束到较小的假设空间 ∼ H 来进行学习(图 2(b))。经验风险最小化器更加可靠,并且降低了过度拟合的风险。
根据使用的先验知识,属于此类的方法可以进一步分为四种类型(表4)。
4.1 多任务学习
在存在多个相关任务的情况下,多任务学习[23, 161]通过利用任务通用和任务特定信息同时学习这些任务。因此,它们自然可以用于 FSL。在这里,我们展示了在 FSL 中使用多任务学习的一些实例。
我们给出了与 C 语言相关的任务 T1,...,TC,其中一些任务的样本数量很少,而另一些任务的样本数量较多。每个任务Tc都有一个数据集Dc = {Dc train,Dc test},其中Dc train为训练集,Dc test为测试集。在这些C任务中,我们将few-shot任务视为目标任务,其余的视为源任务。多任务学习从 DC 列车中学习以获得每个 Tc 的 θc 。由于这些任务是联合学习的,为 taskTc 学习的 hc 参数 θc 受到其他任务的约束。根据任务参数的约束方式,我们将该策略中的方法分为(i)参数共享; (ii) 参数绑定[45]。
4.1.1 参数共享。该策略直接在任务之间共享一些参数(图 5)。
在参考文献[160]中,两个任务网络共享通用信息的前几层,并学习不同的最终层来处理不同的输出。在参考文献[61]中,一起解决了法律文本的两个自然语言处理任务:指控预测和法律属性预测。
使用单个嵌入函数对刑事案件描述进行编码,然后将其馈送到特定于任务的嵌入函数和分类器。在参考文献[95]中,首先从源任务中预训练变分自动编码器,然后克隆到目标任务。两个变分自动编码器中的一些层被共享以捕获通用信息,同时允许两个任务具有一些特定于任务的层。目标任务只能更新其特定于任务的层,而源任务可以更新共享层和特定于任务的层。在参考文献[12]中,原始样本和生成样本首先通过学习源任务和目标任务的单独嵌入函数来映射到特定于任务的空间,然后由共享变分自动编码器嵌入。
4.1.2 参数绑定。
该策略鼓励不同任务的参数(θc)相似(图6)[45]。一种流行的方法是对 θc 进行正则化。在参考文献[151]中,θc 的所有成对差异都受到惩罚。在参考文献[85]中,有一个用于源任务的 CNN,另一个用于目标任务的 CNN。这两个 CNN 的层使用一些专门设计的正则化项进行对齐。
4.2 嵌入学习
嵌入学习[63, 122]将每个样本 xi ∈X⊆ Rd 嵌入到一个低维的 zi ∈Z⊆ Rm 中,使得相似样本靠得很近,而不相似样本可以更容易区分。在这个较低维的 Z 中,我们可以构造一个更小的假设空间 ~ H,从而需要更少的训练样本。嵌入函数主要是从先验知识中学习的,并且还可以使用来自 Dtrain 的特定于任务的信息。
嵌入学习具有以下关键组成部分:(i) 函数 f ,将测试样本 xtest ∈ Dtest 嵌入到 Z,(ii) 函数 g,将训练样本 xi ∈ Dtrain 嵌入到 Z,以及 (iii) 相似度函数 s (·,·),衡量 Z 中 f (xtest) 和 g(xi ) 之间的相似度。测试样本 xtest 被分配到 xi 类,其嵌入 g(xi ) 与 f (xtest) 最相似Z 根据 s。尽管可以对 xi 和 xtest 使用通用的嵌入函数,但使用两个单独的嵌入函数可能会获得更好的精度 [14, 138]。现有嵌入学习方法的总结如表 5 所示。
根据嵌入函数 f 和 g 的参数是否因任务而异,我们将这些 FSL 方法分类为使用 (i) 特定于任务的嵌入模型; (ii) 任务不变(即一般)嵌入模型; (iii)混合嵌入模型,它编码特定于任务的信息和任务不变的信息。
4.2.1 特定任务的嵌入模型。
特定于任务的嵌入方法仅使用来自该任务的信息来学习为每个任务量身定制的嵌入函数。例如,使用任务 Tc 的少样本数据 Dc 序列,Dc 序列中样本之间的所有成对排名都被枚举为参考文献[130]中的样本对。因此增加了训练样本的数量,即使仅使用特定于任务的信息也可以学习嵌入函数
4.2.2 任务不变嵌入模型。
任务不变嵌入方法从包含具有各种输出的足够样本的大规模数据集中学习通用嵌入函数,然后直接在新的少样本 Dtrain 上使用它,而无需重新训练(图 7)。第一个 FSL 嵌入模型 [36] 使用内核嵌入样本。最近,通过卷积孪生网络 [20] 学习了更复杂的嵌入 [70, 150]。
尽管任务不变嵌入不会使用少样本 Dtrain 更新嵌入模型参数,但此类中的许多方法 [121,126,138] 在训练嵌入模型时模拟少样本场景。假设我们有训练集 {Dc },每个训练集有 N 个类别。
在每个 Dc 中,仅使用来自其 N 个类别中的 U 个的样本进行训练。通过最大化剩余 N − U 类的性能来优化嵌入模型。因此,学习到的模型将对小样本任务具有良好的泛化性。早期的尝试 [127] 从 {Dc } 学习线性嵌入。最近,通过元学习2方法学习了更复杂的任务不变嵌入模型:
(1)匹配网络[138]及其变体[4,8,24]:匹配网络[138]元学习不同的嵌入函数(f和g) 为训练样本 xi 和测试样本 xtest。残差 LSTM (resLSTM) [4] 提出了更好的 f 和 ä 设计。匹配网络 [8] 的主动学习变体添加了样本选择步骤,该步骤标记最有益的未标记样本并使用它来增强 Dtrain。匹配网络还扩展到集合到集合的匹配[24],这对于标记样本的多个部分非常有用。
(2) 原型网络 (ProtoNet) [121] 及其变体 [100, 108, 141]:ProtoNet [121] 只比较 f (xtest),而不是将 f (xtest) 与每个 g(xi ) 进行比较,其中 xi ∈ Dtrain与 Dtrain 中的类原型。对于 n 类,其原型就是 cn = 1 K K i=1 g(xi ),其中 Kxi 来自 n 类。根据经验,这会带来更稳定的结果并降低计算成本。参考文献[141]中的匹配网络引入了使用原型的想法。 ProtoNet 的半监督变体在学习期间通过软分配分配未标记的样本以增强 Dtrain [108]。
(三)其他方法。例子包括注意力循环比较器(ARC)[119],它使用带有注意力的 LSTM [9] 将 xtest 的不同区域与原型 cn 进行比较,然后将比较结果作为中间嵌入进行嵌入。此外,它使用双向 LSTM (biLSTM) 来嵌入所有比较作为最终嵌入。
关系网络[126]使用CNN将xtest和xi嵌入到Z中,然后将它们连接起来作为嵌入,该嵌入被馈送到另一个CNN以输出相似性分数。图表参考文献 [84, 115] 使用神经网络(GNN)来利用来自当地社区的信息。在少样本强化学习应用中(如连续控制和视觉导航),时间信息很重要。简单神经注意力学习器(SNAIL)[91]是一个具有交错时间卷积层和注意力层的嵌入网络。时间卷积层聚合来自过去时间步骤的信息,而注意力层则选择性地关注与当前输入相关的特定时间步骤。
4.2.3 混合嵌入模型。
尽管任务不变嵌入方法可以以较低的计算成本应用于新任务,但它们并没有利用当前任务的特定知识。当任务特殊性导致 Dtrain 只有少数示例(例如学习罕见情况)时,简单地应用任务不变嵌入函数可能并不合适。为了缓解这个问题,混合嵌入模型通过 Dtrain 中的任务特定信息来适应从先验知识中学习到的通用任务不变嵌入模型。这是通过学习一个函数来完成的,该函数将从 Dtrain 中提取的信息作为输入并返回一个嵌入,该嵌入充当 f (·) 的参数(图 8)。
Learnet [14]通过结合Dtrain的特定信息改进了任务不变的卷积孪生网络[70]。它从多个元训练集中学习元学习器,并将每个训练示例 xi ∈ Dtrain 映射到学习器的参数(卷积孪生网络)。
这样,f(·)的参数随着给定的xi而变化,从而产生混合嵌入。
在Learnet的基础上进行改进,参考文献[13]中将学习器的分类层替换为岭回归,从而可以以封闭形式高效地获取参数。以下两个工作[100, 162]将Dtrain作为一个整体来输出f(·)的任务特定参数。任务相关自适应度量(TADAM)[100]将类原型平均到任务嵌入中,并使用元学习函数将其映射到 ProtoNet 参数。动态条件卷积网络(DCCN)[162]使用一组固定的滤波器,并使用 Dtrain 学习组合系数。
4.3 使用外部存储器学习
使用外部存储器学习[49,89,124,145]从Dtrain中提取知识并将其存储在外部存储器中(图9)。然后,每个新样本 xtest 都由从内存中提取的内容的加权平均值表示。这限制了xtest只能用内存中的内容来表示,从而从本质上减少了H的大小。
FSL 中通常使用键值存储器[89]。设内存为 M ∈ Rb×m,其中每个 b 个内存槽 M(i) ∈ Rm 均由键值对 M(i) = (Mkey (i), Mvalue (i)) 组成。测试样本 xtest 首先由嵌入函数 f 嵌入。然而,与嵌入方法不同,f(xtest)并不直接用作xtest的表示。相反,它仅用于查询最多的相似的内存槽,基于 f (xtest) 和每个密钥 Mkey (i) 之间的相似性 s(f (xtest), Mkey (i))。提取并组合最相似的内存槽的值(Mvalue (i)’s)以形成 xtest 的表示。然后将其用作简单分类器(例如 softmax 函数)的输入以进行预测。由于操纵 M 的成本很高,因此 M 通常具有较小的尺寸。当M未满时,新的样本可以写入到空闲的内存槽中。当M已满时,必须决定更换哪些内存插槽。表 6 介绍了使用外部存储器的方法的特性。
由于每个 xtest 都表示为从内存中提取的值的加权平均值,因此内存中键值对的质量非常重要。根据存储器的功能,此类FSL方法可以细分为两种类型。
4.3.1 细化表示。下面的方法小心地将Dtrain放入内存中,使得存储的键值对能够更准确地表示xtest。记忆增强神经网络(MANN)[114]元学习嵌入 f ,并将同一类的样本映射到相同的值。然后,同一类的样本一起完善它们在内存中的类表示。这种类表示可以被视为 ProtoNet [121] 中的精炼类原型。
基于惊喜的内存模块[104]仅在 M 不能很好地表示 xi 时更新 M。
因此,使用这个 xi 更新 M 使 M 更具表现力,并且还减少了计算量成本。抽象存储器[149]使用两个存储器。一种是从包含大规模机器注释数据集的固定存储器中提取相关的键值对,另一种是细化提取的值并抽象出对少样本(图像)分类最有用的信息。
这个想法在参考文献[164]中被扩展到少镜头视频分类。
沿着这条线,一些方法特别注意保护内存中的小样本类。请注意,few-shot 类别很小,因此保留在 M 中的机会较低。
M 中的每个小样本样本也可以轻松地用来自更丰富类别的样本替换。
为了缓解这个问题,提出了终身记忆[65]。与之前的记忆[104、114、149、164]跨任务擦除记忆内容不同,终身记忆在记忆已满时会擦除“最旧的”记忆值。然后,所有内存插槽的寿命都重置为零。
对于新样本,当返回的 Mvalue (i) 值与其真实输出匹配时,它将与当前的 Mkey (i) 合并,而不是写入新的内存槽。因此,所有类更有可能占用相同数量的内存槽,并且稀有类受到保护。最近,这种终生记忆被用来学习参考文献[125]中的单词表示。
然而,即使使用终生记忆,罕见的样本仍然可能被遗忘。每次更新后,终身内存将所选 M(i) 的年龄重置为零,并将其他非空内存插槽的年龄增加 1。当内存已满且返回值错误时,将替换最旧的内存槽。由于稀有类样本很少更新其 M(i),因此它们被删除的机会较高。
4.3.2 细化参数。
回想一下 Learnet [14] 及其变体(第 4.2.3 节)映射来自 Dtrain 的信息,以参数化新 xtest 的嵌入函数 д(·)。可以使用存储器来细化该参数。元网络(MetaNet)[96]使用“慢”权重(从多个数据集元学习)和“快”权重(Dtrain 的特定于任务的嵌入)参数化分类模型。如参考文献[97]所示,通过学习修改每个神经元而不是整个参数,可以降低 MetaNet 的计算成本。 MN-Net [22] 使用内存来细化在匹配网络中学习到的嵌入,其输出用于参数化 CNN,如 Learnet 中一样。
4.4 生成建模
生成建模方法借助先验知识从观测到的 xi 估计概率分布 p(x)(图 10)。 p(x) 的估计通常涉及 p(x |y) 和 p(y) 的估计。此类中的方法可以处理许多任务,例如生成[34,76,107,109],识别[34,35,47,76,113,129,159],重建[47]和图像翻转[107] ]。
在生成建模中,假设观察到的 x 是从某个由 θ 参数化的分布 p(x; θ ) 中得出的。通常,存在潜变量 z ∼ p(z;γ ),因此 x ∼ p(x |z; θ )p(z;γ )dz。从其他数据集中学习到的先验分布 p(z;γ ) 带来了对 FSL 至关重要的先验知识。通过将提供的训练集 Dtrain 与该 p(z;γ ) 相结合,得到的后验概率分布受到约束。换句话说,H 被限制为一个小得多的 ∼ H。
根据潜在变量 z 所代表的内容,我们将这些 FSL 生成建模方法分为三种类型。
4.4.1 可分解组件。
尽管在 FSL 问题中具有监督信息的样本很少,但它们可能与其他任务的样本共享一些较小的可分解组件。例如,考虑仅使用提供的几张面部照片来识别一个人。虽然相似的面孔可能很难找到,但人们可以轻松找到具有相似眼睛、鼻子或嘴巴的照片。通过大量样本,可以轻松学习这些可分解组件的模型。然后,只需找到这些可分解组件的正确组合,并确定该组合属于哪个目标类。由于可分解成分是由人类选择的,因此该策略更具可解释性。贝叶斯一次性[35]使用生成模型来捕获可分解组件(即对象的形状和外观)和目标类(即要识别的对象)之间的交互。贝叶斯程序学习(BPL)[76]通过将字符分为类型、标记和进一步的模板、部分、原语来对字符进行建模。为了生成一个新的字符,需要搜索包含这些组件的大组合空间。在参考文献[76]中,通过仅考虑最可能的组合来降低推理成本。在自然语言处理中,最近的一项工作 [64] 对跨度而不是完整的解析树进行建模,并通过训练跨度的各个分类器来适应句法上相距较远的域之间的解析器。
4.4.2 分组共享先验。
通常,相似的任务具有相似的先验概率,这可以在 FSL 中利用。例如,考虑“橙猫”、“豹子”和“孟加拉虎”的三类分类。这三个物种很相似,但孟加拉虎濒临灭绝,而橙猫和豹子数量丰富。因此,我们可以从“橙猫”和“豹子”中学习先验概率,并将其用作小样本类别“孟加拉虎”的先验概率。在参考文献[113]中,一组数据集{Dc}通过无监督学习被分组为层次结构。
每组中的数据集一起学习类别的先验概率。对于新的少样本类,首先找到该新类所属的组,然后根据从分组共享先验概率中得出的先验类对其进行建模。在参考文献[129]中,参考文献[113]中的特征学习步骤通过使用深度玻尔兹曼机[112]得到了进一步改进。
4.4.3 推理网络参数。
为了找到最好的 θ,我们必须最大化后验概率
由于分母中存在积分,求解方程(2)很困难。从数据中学习的变分分布 q(z; δ ) 通常用于近似 p(z|x; θ,γ )。最近,这个 q(z; δ ) 通过推理网络的摊销变分推理来近似[158]。
尽管 z 不再具有语义意义,但这些深度模型学习到的强大表示可以带来更好的性能。一旦学习完毕,推理网络就可以直接应用于新任务,效率更高,需要的人类知识更少。由于推理网络参数较多,通常使用一些辅助的大规模数据集进行训练。许多经典推理网络都适用于 FSL 问题。例如,参考文献[34,57,109]中使用了变分自动编码器(VAE)[68],参考文献[107]中使用了自回归模型[135],参考文献[159]中使用了生成对抗网络(GAN)[46] ],参考文献[47]提出了VAE和GAN的结合。
4.5 讨论与总结
当存在相似任务或辅助任务时,可以使用多任务学习来约束少样本任务的H。但请注意,需要对所有任务进行联合训练。因此,当新的小样本任务到来时,必须重新训练整个多任务模型,这可能既昂贵又缓慢。此外,D和Dc的大小不应该具有可比性,否则,少样本任务可能会被多样本任务淹没。
当存在包含足够多类样本的大规模数据集时,可以使用嵌入学习方法。这些方法将样本映射到良好的嵌入空间,在该空间中来自不同类别的样本可以很好地分离,因此需要较小的 ∼ H。
然而,当小样本任务与其他任务不密切相关时,它们可能无法很好地工作。
此外,更多地探索如何混合任务的不变信息和特定于任务的信息是有帮助的。
当内存网络可用时,通过在内存之上训练一个简单的模型(例如分类器),它可以很容易地用于 FSL。通过使用精心设计的更新规则,可以选择性地保护内存插槽。这种策略的缺点是它会产生额外的空间和计算成本,并且随着内存大小的增加而增加。因此,目前的外部存储器的大小是有限的。
最后,当除了 FSL 之外还想执行生成和重建等任务时,可以使用生成模型。他们从其他数据集中学习先验概率 p(z;γ),从而将 H 降低到更小的 ∼ H。学习到的生成模型还可以用于生成用于数据增强的样本。然而,生成建模方法的推理成本较高,并且比确定性模型更难推导。
5 算法
该算法是在假设空间H中搜索最佳假设h*的参数θ的策略[17, 18]。在第 t 次迭代时,θt = θt−1 + Δθt−1,其中 Δθt−1 是更新值。例如,对于流行的随机梯度下降(SGD)及其变体 [17, 18],θ 更新为
其中 αt 是步长。当 θ 初始化为 θ0 时,θt 可以写为
当监督信息丰富时,有足够的训练样本来更新θ,并通过交叉验证找到合适的步长α。然而,在FSL中,提供的few-shot Dtrain不够大,并且获得的经验风险最小化器不可靠。
本节中的方法使用先验知识来影响 θ 的获取方式,方法是(i)提供良好的初始化参数 θ0,或(ii)直接学习优化器以输出搜索步骤。
根据先验知识如何影响搜索策略,我们将本节中的方法分为三组(表7):
(1)细化现有参数。从其他任务中学习到的初始 θ0,然后使用 Dtrain 进行细化。
(2)细化元学习参数。初始 θ0 是从一组任务中元学习的,这些任务是从与少样本任务相同的任务分布中得出的,然后由学习者使用 Dtrain 进一步细化。
(3)学习优化器。该策略学习元学习器作为优化器,直接输出每个学习器的搜索步骤,例如改变搜索方向或步长。
5.1 细化现有参数
该策略将从相关任务中学习到的预训练模型的 θ0 作为良好的初始化,并通过 Dtrain 将其适应于 θ。假设 θ0 捕获了大规模数据的一些一般结构。因此,可以通过几次迭代来适应D。
5.1.1 通过正则化微调现有参数。
该策略通过正则化对小样本任务的预训练 θ0 进行微调(图 11),并在实践中广泛使用。在参考文献[21]中,使用大数据集对用于图像分类的 ImageNet 进行预训练的 CNN 进行调整以进行前景分割,然后使用单镜头分割对象进行进一步微调以进行对象分割。给定少样本 Dtrain,简单地通过梯度下降微调 θ0 可能会导致过度拟合。因此,如何在不过度拟合 Dtrain 的情况下调整 θ0 是一个关键的设计问题。
在本节中,方法通过正则化微调 θ0 以防止过度拟合。它们可分为以下几类:
(1) 早停。它需要从 Dtrain 中分离出验证集来监控训练过程。当验证集[6]上没有性能改进时,学习就会停止。
(2)选择性更新θ0。仅更新 θ0 的一部分以避免过度拟合。例如,在参考文献[67]中,给定一组预先训练的滤波器,它仅学习与滤波器相乘的强度参数。
(3)一起更新θ0的相关部分。人们可以对 θ0 的元素(例如深度神经网络中的神经元)进行分组,并使用相同的更新信息联合更新每个组。
在参考文献[155]中,预训练的 CNN 的滤波器根据以下规则聚集在一起:
一些辅助信息,然后使用 Dtrain 通过分组反向传播进行微调。
(4)使用模型回归网络。模型回归网络[143]捕获任务无关的变换,它将通过少数示例训练获得的参数值映射到通过大量样本训练获得的参数值。
类似地,在参考文献[72]中,学习了将 xi 的嵌入映射到分类决策边界的变换函数。
5.1.2 聚合一组参数。
有时,我们没有合适的 θ0 来开始。
相反,我们有许多从相关任务中学习的模型。例如,在人脸识别中,我们可能已经有了眼睛、鼻子和耳朵的识别模型。因此,我们可以将这些模型参数聚合成一个合适的模型,然后直接使用该模型或由 Dtrain 对其进行细化(图 12)。
正如第 3 节中所讨论的,来自未标记数据集(第 3.2 节)和类似标记数据集(第 3.3 节)的样本可用于增强少样本 Dtrain。以下方法不是直接使用样本,而是使用从这些数据集预先训练的模型(带有参数 θ0)。接下来的问题是如何使用 Dtrain 让它们有效地适应新任务。
(1)未标记的数据集。尽管没有监督信息,但相似的样本可以分组在一起。因此,我们可以从未标记的数据中预训练函数,以很好地聚类和分离样本。然后使用神经网络通过少样本 Dtrain 使它们适应新任务 [142, 143]。
(2)相似的数据集。在参考文献[10]中,通过利用来自相似类的样本和分类器来执行少样本对象分类。首先,它用新类的特征替换这些相似类的样本特征。然后重新使用学习到的分类器,并且仅针对新类别调整分类阈值。在参考文献 [44, 157] 中,他们学习使用 Dtrain 组合从相似数据集中学到的现有参数。
5.1.3 使用新参数微调现有参数。
预训练的 θ0 可能不足以完全编码新的 FSL 任务。因此,使用附加参数 δ 来考虑 Dtrain 的特殊性(图 13)。具体来说,该策略将模型参数扩展为 θ = {θ0, δ },并在学习 δ 的同时微调 θ0。在参考文献[60]中,它使用预训练的 CNN 的较低层进行特征嵌入,并使用 Dtrain 在嵌入特征上学习线性分类器。在字体样式传输[7]中,首先对网络进行预训练以捕获灰色图像中的字体。为了生成时尚的彩色字体,需要与附加网络的训练一起进行微调。
5.2 细化元学习参数
本节中的方法使用元学习来细化元学习参数 θ0(图 14)。元学习器根据学习器的表现不断优化 θ0。这与 5.1 节中 θ0 是固定的不同。
元学习的 θ0 通常通过梯度下降来细化。一种代表性方法是模型不可知元学习(MAML)[37]。它对 θ0 进行元学习,然后通过一些有效的梯度下降步骤对 Ts ∼ P (T ) 进行调整以获得良好的特定于任务的参数 ϕs,如下所示: ϕs = θ0 − α∇θ0Ls train(θ0)。这里,Ls train(θ0) 是 Dtrain 中训练样本的损失之和,α 是步长。请注意, ϕs 对于样本的排列是不变的。元学习参数 θ0 由多个元训练任务的反馈更新为 θ0 ← θ0 − β∇θ0 Ts∼P (T ) Ls test(θ0),其中 Ls test(θ0) 是整个过程中损失的总和。 Dtest 中的测试样本和 β 是另一个步长。通过使用 Dtrain 中的少样本样本不断细化 θ0,元学习器改进其 θ0 以快速适应少样本训练集。
最近,针对MAML提出了很多改进,主要沿着以下三个方面:
(1) 纳入特定于任务的信息。 MAML 为所有任务提供相同的初始化。然而,这忽略了特定于任务的信息,并且仅当任务集都非常相似时才适用。为了解决这个问题,在参考文献[79]中,它学习从新任务的良好初始化参数的子集中选择 {θ0}。
(2) 使用元学习的 θ0 来建模不确定性。通过一些例子进行学习不可避免地会导致模型具有更高的不确定性[39]。因此,学习的模型可能无法以高置信度对新任务进行预测。测量这种不确定性的能力为主动学习和进一步的数据收集提供了线索[39]。
有些工作考虑了元学习的 θ0 [39, 156] 的不确定性、特定于任务的 ϕs [48, 105] 的不确定性以及 n 类的特定于类的参数 ϕs,n [111] 的不确定性。
(3)改进精炼工艺。通过几个梯度下降步骤进行细化可能并不可靠。正则化可用于纠正下降方向。在参考文献[50]中,模型回归网络[143]用于将任务Ts的ψs正则化,以接近使用大规模样本训练的模型。
5.3 学习优化器
在第 5.2 节中,元学习器 θ0 作为具有数据 D 的 T∼P (T ) 的良好初始化,并且通过一些有效的梯度下降步骤将其调整为特定于任务的参数 ϕ。相比之下,本节中的方法不使用梯度下降,而是学习优化器,它可以直接输出更新(等式(4)中的 t i=1 Δθi−1)(图 15)。这样就不需要调整步长 α 或找到搜索方向,因为学习算法会自动执行此操作。
在第 t 次迭代时,这一系列工作 [5, 106] 学习一个元学习器,它采用第 (t − 1) 次迭代计算的误差信号,并直接输出更新 Δψt−1 来更新任务特定参数学习器的 Φt−1 为 Φt = Φt−1 + ΔΦt−1。因此,与第 5.1 节和第 5.2 节中提到的策略相比,该策略为新任务提供了优化器(进而由学习器进行优化)。然后,使用第 t 个样本 (xt,yt ) ∈ Dtrain,将该 Φt 用于计算损失 t (Φt ) = (h(xt ;Φt ),yt ),该样本充当要馈送到元学习器中的误差信号在下一次迭代时。学习任务后,元学习器通过测试集 Dtest 上的损失的梯度下降得到改进。通过从 P (T ) 中提取的一组 T 进行学习,元学习器改进了提出有效的 FSL 算法。最近,参考文献[106]通过将方程(3)实例化为LSTM中的细胞状态更新来获得Φt(其中Φ被设置为LSTM的细胞状态)。
5.4 讨论和总结
细化现有参数可以减少 H 中的搜索工作。通过使用现有的 θ0 作为初始化,这些方法通常需要较低的计算成本来获得良好的假设 h ∈ H。
学习的重点是完善这些现有参数。然而,由于 θ0 是从与当前任务不同的任务中学习的,因此该策略可能会为了速度而牺牲精度。
另外两种策略依赖于元学习。通过从一组相关任务中学习,元学习的 θ0 可以更接近新任务 Tt 的任务特定参数 Φt 。元学习器的学习搜索步骤可以直接指导学习算法。换句话说,元学习器充当优化器。然而,诸如如何跨不同粒度(例如动物的粗粒度分类与狗物种的细粒度分类)或不同数据源(例如图像与文本)[131]进行元学习等重要问题仍然悬而未决。从这个角度来看,元学习和多任务是相似的,因此也需要关注如何避免负迁移[28]
6 FUTURE WORKS
在本节中,我们讨论 FSL 进一步发展的四个关键方向,即,(i) 问题设置,(ii) 技术,(iii) 应用,(iv) 理论。
6.1 问题设置
现有的 FSL 方法通常使用单一模态(例如图像、文本或视频)的先验知识。然而,尽管Dtrain有一些当前使用的模态示例,但可能存在另一种监督样本丰富的模态。一个例子是对灭绝动物的研究。虽然这种动物物种可能只有有限数量的视觉示例,但在文本领域(例如教科书或网页)中可能有很多关于它的信息,因为人们倾向于特别关注稀有类别。因此,来自多种模态的先验知识可以为互补观点提供先验知识。在零样本学习(ZSL)中,经常使用多模态数据。先验信息的示例包括属性 [2, 62]、WordNet [2, 62]、词嵌入 [133, 139]、共现统计 [88] 和知识图 [140]。
最近,有人尝试将 ZSL 方法的技术借用到 FSL 问题上。
例如,可以使用少样本 Dtrain 来微调 ZSL 方法学习的参数 [2, 62]。然而,使用少量样本进行微调可能会导致过度拟合。另一种可能性是强制通过多种模式学习的嵌入在共享空间中匹配[133, 139]。最近的一项工作 [110] 利用标签之间的结构化关系,并利用 GNN 来对齐 FSL 的嵌入。由于不同的模式可能包含不同的结构,因此应谨慎处理。例如,文本需要遵守句法结构,而图像则不需要。未来一个有希望的方向是在设计 FSL 方法时考虑使用多模态信息。
6.2 技术
在前面的章节中,根据如何使用FSL中的先验知识,我们从数据(第3节)、模型(第4节)和算法(第5节)的角度对FSL方法进行分类。
这些组件中的每一个都可以改进。例如,使用最先进的 ResNet [55] 作为嵌入函数可能比使用 VGG [123] 更好。
基于元学习的 FSL 方法(如第 4 节和第 5 节中所述)特别有趣。
通过跨任务学习,元学习可以以较小的推理成本快速适应新任务。然而,元学习中考虑的任务通常被假设是从单个任务分布 p(T ) 中得出的。在实践中,我们可以有大量任务,其任务相关性为未知或确定成本昂贵。在这种情况下,直接从所有这些任务中学习可能会导致负迁移[28]。此外,当前的 FSL 方法通常考虑静态且固定的 P (T ) [37, 106]。
然而,在流应用中,p(T)是动态的[38]并且新任务不断到达。
因此,这也应该合并到 p(T ) 中。一个重要的问题是如何在动态环境中避免灾难性遗忘[69],这意味着旧任务的信息不应该被遗忘。
正如前面几节所讨论的,不同的 FSL 方法各有利弊,并且在所有情况下都没有绝对的赢家。此外,假设空间H和H中的搜索策略往往依赖于人为设计。自动化机器学习(AutoML)[153]通过构建任务感知机器学习模型,在许多应用程序上取得了最先进的成果。最近,AutoML 已被用于数据增强[27]。另一个方向是将自动化特征工程[66]、模型选择[71]和神经架构搜索[166]的AutoML方法扩展到FSL。然后,我们可以获得更好的算法设计,其组件由 AutoML 以经济、高效和有效的方式学习。
6.3 应用
回想一下,由于样本稀有,需要 FSL,努力减少数据收集工作和计算成本,或者作为模仿类人学习的垫脚石。因此,许多现实世界的应用都涉及 FSL。计算机视觉是 FSL 算法的第一个测试平台之一。
FSL 最近在许多其他应用中也引起了广泛关注,例如机器人、自然语言处理和声学信号处理。总而言之,FSL 还有很多有趣的领域和应用值得探索。
6.3.1 计算机视觉。
大多数现有作品都针对计算机视觉中的 FSL 问题。两个最流行的应用是字符识别 [14, 36, 37, 65, 70, 96, 113, 114, 119, 121, 130, 138, 146] 和图像分类 [37, 70, 96, 106, 119, 121 、127、130、132、138、142、143、149]。
标准基准数据集(例如 Ominiglot 和 miniImageNet)已经获得了非常高的精度,几乎没有进一步改进的空间[131]。最近,参考文献[131]中提出了一个由多个图像数据源构建的大型且多样化的基准数据集。除了字符识别和图像分类之外,还考虑了其他图像应用。这些包括对象识别[35,36,82],字体样式转换[7],短语基础[162],图像检索[130],对象跟踪[14],图像中的特定对象计数[162],场景位置识别[74]、手势识别[102]、零件标记[24]、图像生成[34、76、107、109]、跨域图像翻译[12]、3D对象的形状视图重建[47]以及图像字幕和视觉问答[31]。
FSL也已成功应用于视频应用,包括运动预测[50]、视频分类[164]、动作定位[152]、行人重识别[148]、事件检测[151]和对象分割[21]。
6.3.2 机器人技术。
为了使机器人的行为更像人类,它们应该能够从一些演示中进行概括。因此,FSL在机器人技术中发挥了重要作用。例如,通过模仿单个演示的学习来学习机器人手臂的运动[147],以及在纠正错误动作的老师的帮助下从几个演示中学习操纵动作[1]。
除了模仿用户之外,机器人还可以通过与用户交互来改善其行为。
最近,通过 FSL 强化学习从一些交互中学习辅助策略[51]。 FSL 在机器人技术中的其他例子包括多臂老虎机 [33]、视觉导航 [33, 37] 和连续控制 [37, 91, 156]。最近,这些应用进一步扩展到动态环境[3, 98]。
6.3.3 自然语言处理。
最近,FSL 的使用在自然语言处理中引起了人们的关注。示例应用包括解析 [64]、翻译 [65]、句子完成(使用从提供的集合中选择的单词填充空白)[97, 138]、短评论的情感分类 [150, 157]、用户意图分类用于对话系统 [157]、刑事指控预测 [61]、nonce 定义等单词相似性任务 [56, 125] 和多标签文本分类 [110]。最近,发布了一个新的关系分类数据集FewRel [52]。
这弥补了自然语言处理中 FSL 任务基准数据集的缺乏。
6.3.4 声学信号处理。
除了早期使用 FSL 识别示例中的口语单词 [75] 之外,最近的努力还集中在语音合成上。一个流行的任务是从用户的一些音频样本中克隆语音 [6]。这对于在地图应用程序中生成个人语音导航,或者在智能家居工具包中模仿父母的声音给孩子们讲故事非常有用。最近,可以使用一次性语音或文本样本[128]甚至跨不同语言[93]执行从一个用户到另一个用户的语音转换。
6.3.5 其他。
例如,最近在医学应用领域的一项尝试是小样本药物发现[4]。为了学习深度网络,参考文献[19,83,154]中研究了一次性架构搜索(OAS)。与随机搜索和网格搜索需要多次运行才能找到最佳架构不同,OAS 方法可以通过训练一次超网来找到好的架构。
FSL 还被用于曲线拟合 [39,48,114,156] 以及通过逻辑推理理解数字类比来执行计算 [104]。
6.4 理论
FSL 使用先验知识来弥补监督信息的缺乏。这与样本复杂度的理论研究有关,即获得具有高概率的经验风险RI(h)小的模型所需的训练样本数量[92, 94]。 H 需要不太复杂才能使提供的 I 样本足够。回想一下,FSL 方法使用先验知识来增加更多样本(即增加 I)、约束 H(即降低 H 的复杂性)并改变搜索策略(即增加找到好的 h 的概率)。这表明 FSL 方法可以利用先验知识降低所需的样本复杂性。对这方面进行详细分析将会很有用。
此外,回想一下 FSL 与领域适应相关 [85, 95, 102],并且现有的领域适应理论界限可能是鼓舞人心的 [11, 16]。例如,最近的分析表明,通过微调前馈神经网络可以获得更好的风险界限[87]。通过考虑特定的元学习方法,参考文献[29]检查了将在一项任务上训练的模型转移到另一项任务的风险。然而,到目前为止,仅研究了少数方法。还有很多理论问题有待探讨。
最后,FSL 算法的收敛性尚未完全被理解。特别是,元学习方法在任务分布而不是单个任务上优化 θ。参考文献[40]中最近的分析为一种元学习方法的收敛提供了充分的条件。金属学习器学习深度网络的较低层,而学习器学习最后一层,所有这些都使用梯度下降。对元学习方法的收敛性进行更一般的分析将非常有用。
7 结论
小样本学习 (FSL) 的目标是缩小人工智能和人类学习之间的差距。它可以通过结合先验知识来学习仅包含几个带有监督信息的示例的新任务。 FSL充当人工智能的测试平台,使罕见案例的学习成为可能,或者有助于减轻工业应用中收集大规模监督数据的负担。在本次调查中,我们对 FSL 进行全面、系统的回顾。我们首先正式定义FSL,并讨论FSL与弱监督学习、不平衡学习、迁移学习和元学习等相关学习问题的关联和差异。然后我们指出 FSL 的核心问题是最小化不可靠的经验风险,这使得 FSL 难以学习。理解核心问题有助于根据不同的工作如何使用先验知识解决核心问题将其分类为数据、模型和算法:数据增强了 FSL 的监督经验,模型将 FSL 的假设空间限制得更小,算法改变了 FSL 的假设空间。在给定假设空间中寻找最佳假设的搜索策略。在每个类别中,都深入讨论了优点和缺点,并提出了一些总结和见解。为了激发 FSL 未来的研究,我们还提供了问题设置、技术、应用和理论的可能方向以供探索。
附录 A 元学习 元学习 [59] 通过提供的数据集和元学习器跨任务提取的元知识来改进新任务 T 的 P(图 16)。令 p(T ) 为 taskT 的分布。在元训练中,它从一组任务 Ts ∼ p(T ) 中学习。每个任务 Ts 都对 N 个类别的数据集 Ds 进行操作,其中 Ds = {Ds train,Ds test} 由训练集 Ds train 和测试集 Ds test 组成。每个学习者从 Ds 训练中学习并测量 Ds 测试上的测试误差。元学习器的参数 θ0 被优化以最小化所有学习器的误差,如下所示
在元测试中,使用另一组不相交的任务 Tt∼p(T ) 来测试元学习器的泛化能力。每个 Tt 都适用于 N ↑ 类的数据集 Dt,其中 Dt = {Dt train,Dt test}。学习器从训练集 Dt train 中学习,并在测试集 Dt test 上进行评估。 Tt 的平均损失被视为元学习测试误差。