精华内容
下载资源
问答
  • 小样本学习调研

    千次阅读 2019-03-11 16:27:07
    小样本学习介绍 小样本学习领域的研究进展 当小样本遇上机器学习 一:零碎纪录 1.最前沿:让神经网络学习比较来实现少样本学习 - Flood Sung的文章 - 知乎 https://zhuanlan.zhihu.com/p/35379027 论文链接 ...

    元学习小样本学习论文总结200篇 vieo.zhu@foxmail.com申请

     

    小样本机器学习算法的特性分析与应用

    小样本学习介绍

    小样本学习领域的研究进展

    当小样本遇上机器学习

    一:零碎纪录

    1.最前沿:让神经网络学习比较来实现少样本学习 - Flood Sung的文章 - 知乎 https://zhuanlan.zhihu.com/p/35379027

    2.几个博客

    小样本学习遇上机器学习--------随笔记录

     

    二:2018年小样本学习年度进展报告(付彦伟-复旦大学)

    1.有监督和无监督方法

    2.基于迁移学习的方法

    目前的实验结果显示:大部分已经发表的one-shot learning方法在miniImageNet数据集上的结果,比不过resnet-18的结果

    • Wang Yuxiong的文章Learning to Learn: Model Regression Networks for Easy Small Sample Learning,他们用原数据构建了很多模型库,然后目标数据直接回归这些模型库。具体就是在source class上训练一个regression network。对于大量样本我们可以得到一个比较好的分类器。对于少量样本我们可以得到一个没那么好的分类器。这个regression network的目的就是把没那么好的分类器映射成比较好的分类器。即,把一个分类器的权重映射到另一个分类器。
    • 640?wx_fmt=png
    • Matching Networks for One Shot Learning,这个文章很有意思,从标题中就能读出大概做了什么工作。对于一张图片,我们训练一个matching network来提取它的feature。然后用一个简单的数学公式来判断feature之间的距离。对于新的图片,根据它与已知图片的距离来进行分类。这篇文章精巧地设计了训练的过程,来使得这个过程与测试时的过程一致。
    • 640?wx_fmt=png
    • (model-agnostic meta-learning for fast adaptation of deep networks)MAML,是与模型无关的meta-learning的方法,它主要侧重于深度网络的快速适应。这篇文章的思想就是找到一个网络最好的初始位置,这个初始位置被定义为:经过几个小样本的调整后可以得到最好的表现。
    • 640?wx_fmt=png
    • Optimization as a model for few-shot learning,也是meta-learning的方法,将任务组织成一个最优化的问题。这篇文章将梯度下降的过程与LSTM的更新相对比,发现它们非常相似。所以可以用LSTM来学习梯度下降的过程,以此使用LSTM来做梯度下降的工作。
    • 640?wx_fmt=png
    • meta networks(ICML2017),也是meta-learning方法。其中利用了少量样本在基础网络中产生的梯度,来快速生成新的参数权重。
    • 640?wx_fmt=png
    • NIPS一篇prototypical network for fast shot learning,主要是在matching networks的基础上做了一些更改。它们给每一个类一个原型,样本与类的距离就是样本与原型的距离。然后选用欧氏距离替代了matching network的余弦距离。
    • 640?wx_fmt=png
    • CVPR的Learning to compare: Relation network for few-shot learning。简单来说就是用embedding module来提取feature。然后用relation module来输出两个feature之间的距离。一次来通过距离进行分类选择。
    • 640?wx_fmt=png
    • 更多论文
    • 640?wx_fmt=png

    3.数据增强的文章介绍 

    • semantic feature augmentation in few-shot learning,作者今年的提交到ECCV的一个工作,用左边的encoder-trinet把视觉特征映射到语义空间。因为语义空间上有更丰富的信息,可以在语义空间上做数据扩充(添加高斯噪声和寻找最近邻),再映射回视觉空间来得到更多的扩充样例。
    • 640?wx_fmt=png
    • ICCV2017这篇文章根据已有的图像去生成新的图像,然后做low-shot 视觉识别。具体来说,比如说你有三张图片:一张是鸟,一张是鸟站在树枝上,一张是猴子。那么你可以学习一个网络让它生成猴子站在树枝上的图片。本质上是,想把一个类的变化迁移到另一个类上,以此来做数据扩充。
    • 640?wx_fmt=png
    • 去年在CVPR上发表的文章AGA,主要针对3D数据,把图像投影到一个属性空间做数据增强。这是一个few-shot learning方法。具体就是,给定几张距离观测者不同距离的桌子的照片,以及一张凳子的照片,让机器学会如何去生成不同距离的凳子的照片,以此来做数据扩充。
    • 640?wx_fmt=png

    4.小样本学习灾难性遗忘的问题

    在 one-shot learning之上,我们还可能遇到一个问题,one-shot learning只关注目标类别上的分类问题,我们希望学习到的模型对源数据类别也适用,否则将带来一个问题,被称为灾难性遗忘。

    • 发表在PNAS的文章提出EWC 模型来解决这个问题。灾难性遗忘往往源于我们学习任务B的时候更新网络,使得任务A做的没那么好了。EWC提供了一种方法来计算权重对于任务A的重要性,把重要性引入到损失函数中,来避免更改会影响A效果的权重。
    • 640?wx_fmt=png
    • 还有learning without forgetting这篇文章,也是侧重于解决这个问题。简单来说就是拿到一个新任务后,我们会更新网络。我们希望在更新网络前后网络没有太大变化,所以我们添加一个loss来限制网络更新前后对于这个新的任务输出的特征不能有太大变化,也就是一个distill loss。
    • 640?wx_fmt=png

     

    小样本学习还有很多可以研究的东西。目前的成果主要还是基于把已知类别的一些信息迁移到新的类别上。可能未来可以尝试下更多的方向,比如利用无监督的信息或者是半监督的方法。

    论文集下载,提取码: ksny 

     

     

     

    展开全文
  • 滴滴作为一家网约车交易平台,乘客和司机的体验和安全是其核心壁垒之一。...1. 相关工作▍1.1 基本理论小样本学习技术主要研究如何利用少量有监督样本来解决机器学习任务。经常被提起的还有半监督学习,其主要区别在...

    滴滴作为一家网约车交易平台,乘客和司机的体验和安全是其核心壁垒之一。在体验和安全优化过程中,缺少准确而大量的标注样本,是制约模型效果、进而影响业务优化的重要技术难题。在滴滴,我们使用few shot的方法,在治理和安全场景做了大量的探索,形成了一套系统的解决方案。

    1. 相关工作

    v2-6e14b7885b38ee3ce6513298fb72174a_b.jpg

    ▍1.1 基本理论

    小样本学习技术主要研究如何利用少量有监督样本来解决机器学习任务。经常被提起的还有半监督学习,其主要区别在于,半监督学习是解决小样本学习问题的重要手段之一。

    小样本学习的综述很多,其中YAQING WANG等人【1】分类标准清晰且合理,故引用此种分类方式。其将小样本学习技术分为三类方式:

    • 数据:利用先验知识来做数据增强,构造更多样本。
    • 模型:利用先验知识来降低机器学习任务的假设空间,模型参数搜索空间减小,所需样本也相对减少;
    • 算法:利用先验知识,改善参数搜索策略。

    上述的三种方法,核心就是要解决样本少而模型假设空间大的矛盾,尤其在深度学习场景,模型的参数量巨大。在实际运用中,几种方法可同时使用。下面简要介绍三类方法中的一些常用的技术。

    ▍1.2 数据增强

    数据增强是小样本学习场景最常用的方式之一,其复杂度也相对较低,这里分享下两种方案,包括样本特征增强和弱监督学习。对于样本特征增强,经典案例包括图像识别领域对图像进行翻转、旋转和缩放等;文本增强领域也有类似的方法,如文本分类场景,会对样本进行同义替换、随机插入和随机交换和随机删除等,使用原来训练数据的50%结合文本增强的方法就到达了使用100%训练数据的准确率【2】。这种手动进行样本特征增强的方式,其优点在于构思简单,效果稳定,但其依赖于领域知识进行增强规则设计,且无法穷举所有的可能性,其效果上限较低。

    另外一种常用的样本增强方式是,弱监督学习,主要包括半监督学习和主动学习。半监督学习主要解决如何利用少量有标签样本以及大量无标签样本构建模型的问题,常见方法有自学习、协同训练和生成式学习等,篇幅受限,主要讲下常用的自学习,其基本原理是如下图所示:

    1)首先利用少量的有监督样本,训练一个初始模型

    2)利用初始模型对未打标的样本进行预测,如果模型得分比较低或者高,将其加入初始的训练集,其标签为模型预测标签

    3)利用新的训练集,进行模型迭代,重复以上流程,直至模型效果无提升

    v2-661d7db1fff31f592b5d21c59f1bb2e4_b.jpg


    图 1 自学习建模流程

    主动学习的核心技术点在于在标注资源有限的情况下,如何选择信息含量高的样本进行标注。但通过自学习引入样本的过程,也会有弊端,第一是无法避免引入噪音,因为模型预测的标是”伪标签“,第二,往训练集中加入的样本均为易分类的样本,导致真正难分类的样本的权重相对下降,继而出现测试集上效果较差的情况。因而,自学习会出现增加几轮样本后,效果不增反而下降的情况,所以选择合适的迭代轮次和每次加入的样本量尤为重要。

    ▍1.3 模型

    根据上文所述,模型部分主要通过降低模型参数的搜索空间来降低对样本的需求。多任务学习(Multi-task learning, MTL)是其中典型的技术方案,主要利用拥有大量数据的辅助任务进行参数学习与共享,降低主任务的参数搜索空间。下图是一种最为简单的硬参数共享【3】,如果想要较好的模型效果,其难点在于如何选择相似的辅助任务,第三部分会介绍下,如何结合业务逻辑,选择合理的辅助任务。

    v2-3b24cada8b35ae849f9071a1eb0c4f35_b.jpg

    图2 多任务学习硬共享机制

    ▍1.4 算法

    这里的算法特指参数优化算法,在样本有限的情况下,利用经验风险最小化进行参数搜索是不可靠的,故需要利用先验知识,获取相对可靠的参数,其中最常见的方法是利用其他相关的任务进参数初始化,并使用实际任务的数据对参数进行微调(Fine-tune),通常有选择的调整部分参数,来防止小样本学习导致的过度拟合的问题,这要是工业界常用的方式,例如NLP领域Bert+ 任务数据微调以及图像领域使用ImagetNet构建的VGG等模型 + 任务数据微调等方式。


    2. 业务场景应用

    v2-6e14b7885b38ee3ce6513298fb72174a_b.jpg

    ▍2.1 数据增强

    涉性骚扰订单识别中的数据增强应用在涉性骚扰订单识别中,我们通过case分析发现该类订单中,92%的比例都存在司机言语反抗(如图3所示),因此需要建立识别司机反抗模型。

    v2-592eb99e3e4fca35dfc3a29fa59e05cc_b.jpg

    图3 L3R订单分类

    因为发生数量较少,训练模型时需要解决正样本稀疏的问题。构建反抗言语识别模型所用的重要特征为行程中语音ASR文本(如图4所示),在分析相关文本时,发现司机反抗言语通常是突然出现的,与上下文没有联系,于是我们可以通过对负样本文本插入反抗关键短句的方式来对样本进行增强。

    v2-0caeddde6645f39a9db141a0f1b69984_b.jpg


    图4 语音转录文本示例展示


    首先从真实发生的订单中提取了852条反抗关键短句,如“你赶快下车”、“不要这样”。


    为模拟真实ASR文本环境,增强模型的泛化性,先对关键短句进行增强,以3:3:3:1的比例对短句进行如下操作:

    • 不变;
    • 加字:随机复制一个字,变为“你你别动手动脚”或“你别动动手动脚”;
    • 删字:对字数大于5的关键短句,随机删除一个字,变为“你动手动脚”或“你别动手脚”;
    • 拼接:对字数小于等于7的两个关键短句,进行拼接,如“你别动,坐好了”。

    最后抽取120万负样本的ASR文本作为训练样本,对其中40万个文本随机插入增强后的关键短句作为正样本(有0.1的概率随机插入两次关键短句)。得到训练所需的正负样本后,对文本特征进行噪音清洗、分词等流程,然后训练TextCNN模型。如表1所示,对比未使用数据增强、通过增加L4R订单作为正样本的扩充方案的模型,使用数据增强的模型效果更好。

    v2-b2f56c1d5c98fc60ccc620e5f90c0b61_b.jpg

    表1 不同数据处理方式效果对比

    半监督学习在费用投诉司乘判责中的应用

    业务特点:平台上每天都有少量乘客关于费用相关的投诉,包括但不限于:绕路导致费用增加、未乘车需要支付费用、下车后司机未结束计费导致费用增加等等,为了对这些投诉进行合理的处理,平台建立了司乘判责体系,使用判责结果对犯错的司机加以管控,对体验受损的乘客给予补偿。为了使司乘判责体系更加智能化,机器判责在其中占据最重要的位置,而机器判责能力的建设,与专家标注样本息息相关。一般情况下,司乘判责模型的单次迭代需要5k-1w的专家标注样本,这些样本的获取是昂贵且长周期的。

    技术选型:为了在有限专家标注样本的基础上使得模型效果最大化,我们在实际应用中引入了self-training方法。self-training是半监督学习中最常用的方法之一,以其简单易实现且效果好的特点被广泛应用于实际业务场景中,其执行流程2.2节中已有介绍,此处不再赘述。

    效果对比:下图5是self-traning迭代3轮后,在费用投诉司机判责模型中的相对于原始样本训练Xgboost模型时logloss的变化对比,可以看到,使用self-training方法扩充后的样本集训练出的模型在测试集上的logloss比使用原始样本直接训练模型在测试集上的logloss低20%+,验证了使用self-training扩充样本能够对模型效果带来提升。

    v2-f5000393ec4960e606b67967cd420c98_b.jpg

    图5 不同数据集模型Loss对比

    ▍2.2 模型

    下面以绕路拦截中的多任务学习为例,介绍我们在该方向的探索业务特点:拦截指的是当出现费用异常问题时,希望能够在乘客投诉前,尽快识别费用异常行为(如绕路、未坐车多收附加费、未及时结束计费等),平台主动干预提升乘客体验。因此,就需要我们的策略模型,能够准确地识别出投诉&有责的订单,并及时作出有效的拦截。然而,在拦截场景中,我们的样本空间正负样本比极度不均衡。如图6所示,拦截的生效空间是大盘订单,拦截的目标是投诉中的司机有责订单,虽然我们能获得大量的投诉样本,但投诉占大盘比例小,从而导致投诉&有责的正样本量极少(以绕路拦截为例,投诉中有责比例1/5,而投诉占大盘比例1/2500)。若以大盘订单为建模空间,以投诉&有责为正样本(以下简称事实任务),由于正样本量稀少,该任务的建模效果差;而以投诉订单为建模空间,以投诉&有责为正样本(以下简称判责任务),以此建模在大盘上生效又会导致样本偏差,难以识别非投诉样本。

    v2-d09e914dfb6ba131b1ac2a82f6505723_b.jpg

    图 6 拦截场景漏斗

    技术选型:结合拦截实际的业务特点,可以通过多任务学习的方式,解决正样本量小的问题。由于投诉样本无需标注、正样本量级大,以大盘订单为建模空间,以投诉为正样本的任务(以下简称投诉任务)与事实任务有着强相关性,因此可以通过投诉任务来辅助事实任务的学习,如图7所示。分别学习投诉任务与事实任务,2个任务共享embedding层和部分隐藏层,同时2个任务分别保留各自独立的隐层,最终分别输出结果。投诉任务有大量的正负样本,能够辅助事实任务学习到一些知识,降低事实任务的模型参数搜索空间,从而保证事实任务能够得到更好的学习,也就解决了事实任务正样本少和样本偏差的问题。

    v2-6c2e757ea3046f47b3cdce17dad1ccb0_b.jpg

    图7 绕路拦截多任务模型结构

    效果对比:根据上述方法,在绕路拦截场景上,采用esmm的多任务模型结构,利用辅助任务模型建模。如图8和图9的实验结果可知,在roc曲线中,MTL模型roc-auc明显优于线上xgb模型;在pr曲线中,2个模型的prc-auc基本持平,但在策略生效点处,MTL模型的准召相较于XGB模型也有较大的提升。多任务学习的方式能够有效地学习到投诉任务的特点,更好地辅助事实任务学习,最终该方案的模型已在绕路场景上使用。同时,拦截上许多场景存在相似的情况,因此多任务学习的方案也可以在许多场景上复用。

    v2-b38a5253e3fc5e1b9e7da8238e7655ea_b.jpg

    图8 Baseline与MTL模型的ROC曲线

    v2-b65596e5386f399c0f4863fc50527d65_b.jpg

    图9 Baseline与MTL模型的PR曲线

    结论:对于样本量小引起的模型效果不佳问题,我们也能从业务、数据的角度去看问题,通过业务理解和有效地数据分析,发现任务之间的相关性,选择适当的任务来辅助主任务的学习,利用其他的知识来帮助主任务学习地更充分,解决小样本问题,提升模型的性能。

    ▍2.3 算法

    下面以交通事故早发现fine-tune优化为例,介绍我们在该方向的探索业务特点:在安全领域中,滴滴的标注样本是非常稀疏且昂贵的,举个例子,一个涉性正样本,背后就是一起性骚扰,一次重伤交通事故样本,背后有可能就是一条人命。一方面,滴滴在安全领域已构建了相应的订单风险识别策略,一旦检测到订单出现险情,会有安全专家及时介入提供帮助,为司乘的出行保驾护航,而另一方面,在如此昂贵且规模很小的数据集的情况下,如何构建更加精准的识别策略,是一项重要而又艰巨的挑战。与此同时,滴滴的数据里有数量庞大、信息丰富的弱样本(言语骚扰/轻微人伤事故),以交通事故为例,轻微人伤事故在轨迹声音等各种异常表现上和重伤事故具有一定的相似性,但直接加入模型训练对应的业务效果是下降的,因此,如何高效地利用这些样本,使得这些样本的价值最大程度地体现在策略效果中,成为此类策略设计的关键环节之一。

    对比业内的各种弱样本应用方法,我们发现这个场景恰好与 使用海量源领域数据对网络底层参数进行预训练,学习源领域和目标领域通用的信息,然后用目标领域的样本对接近具体任务层的网络参数进行fine-tune 的场景非常类似,于是我们将对应的数据以两种方式进行了迁移应用,并对比了两种方式带来的效果提升。

    效果对比:

    实验1: DNN模型

    Baseline:全部人伤事故作为正样本,无事故订单作为负样本,

    fine-tune:重伤事故作为正样本,无事故订单作为负样本,在基础模型的网络参数基础上更新最后两层的网络参数。安全策略的评估指标为一定影响面下的召回率。

    v2-a063a96e8ba75529d8dc0112e2423ccf_b.jpg

    图10 基础DNN模型和fine-tune后模型影响面-召回率曲线

    从整体auc上来看,使用人伤样本做预训练,重伤样本微调,对模型评估集上的auc有一定的提效果,尤其是在影响面较小的情况下。实验2:XGBoost模型

    XGBoost的迁移主要是增量学习

    Baseline:全部人伤事故作为正样本,训练基础的XGBoost树模型,

    fine-tune:在baseline模型的基础上,使用重伤事故作为正样本,微调叶子节点权重。

    v2-7c55e6650bca2b9ac97ed4d573d0fda8_b.jpg

    图11 基础xgboost模型和fine-tune后模型影响面-召回率曲线

    从图中可以看出,迁移之后可以显著改善头部case的排序性能。结论:在影响面较小的情况下,Fine-tune能够有效改善头部Case的召回率,正好符合业务的诉求,即在较低的影响面情况下,召回重伤Case,故我们将该方法推广开来,在多个安全场景和基本的识别元能力建设上均落地应用,并取得一定收益。


    3. 总结

    v2-6e14b7885b38ee3ce6513298fb72174a_b.jpg

    在滴滴复杂的治理业务场景中,对样本的需求量极大,标注的成本很高。通过对现有的小样本学习方法的探索,我们在自己的业务场景上试验并落地了多种算法,在支撑我们拿到了一定的业务收益的同时,也降低了一部分标注的成本,希望能给同样遇到样本匮乏问题的读者一些借鉴。

    滴滴开源自建Kafka云管控平台,Github 2.2K+Star!!!点击下方链接Star关注一下啦!感谢!

    z.didi.cn/4mhF4

    免费体验地址:117.51.150.133:8080 账号/密码:admin/admin 若有打扰,深感抱歉!

    展开全文
  • 小样本学习综述

    2020-06-15 10:26:24
    小样本学习综述摘要1.前言本次调查的贡献总结如下:1.1 综述组织结构1.2 符号和术语2.概述 A Survey on Few-Shot Learning. 摘要 机器学习在数据密集型应用中取得了巨大的成功,但当数据集很小时,机器学习往往会...


    A Survey on Few-Shot Learning.
    思维导图

    摘要

    机器学习在数据密集型应用中取得了巨大的成功,但当数据集很小时,机器学习往往会受到阻碍。近年来,很少有人提出用小样本学习(FSL)来解决这一问题。利用先验知识,FSL可以快速地推广到只包含少量有监督信息样本的新任务。在本文中,我们进行了一个彻底的调查,以充分了解FSL。从FSL的形式化定义出发,我们将FSL与一些相关的机器学习问题区分开来。然后我们指出,金融服务业的核心问题是经验风险最小化是不可靠的。基于如何利用先验知识来处理这一核心问题,我们从三个角度对FSL方法进行了分类:(i)数据,它使用先验知识来增加监督经验;(ii)模型,它使用先验知识来减小假设空间的大小;以及(iii)算法,它使用先验知识来改变搜索给定假设空间中的最佳假设。使用这种分类法,我们将回顾并讨论每种分类法的优缺点。在FSL问题设置、技术、应用和理论方面,也提出了一些有希望的方向,以期为今后的研究提供见解。

    CCS概念:•计算方法学→人工智能;机器学习;学习范式。
    附加关键词和短语:少镜头学习、单镜头学习、低镜头学习、小样本学习、元学习、先验知识

    1.前言

    “机器能思考吗?“这是1950年艾伦·图灵(Alan Turing)发表的题为《计算机械与智能》(Computing Machinery and Intelligence)的开创性论文[134]中提出的问题。他说“数字背后的想法计算机可以解释为,这些机器旨在执行任何可以由人类计算机完成的操作”。换句话说,机器的最终目标是和人类一样聪明。近年来,由于出现了强大的计算设备(如GPU和分布式平台)、大型数据集(如1000类图像网络数据[30])、高级模型和算法(如卷积神经网络(CNN)[73]和长短期存储器(LSTM)[58]),人工智能加快了它的步伐,使它像人类一样,并在许多领域击败了人类。举几个例子,AlphaGo[120]在古老的围棋游戏中击败了人类冠军;而ResNet(ResNet)[55]在ImageNet上获得了比人类更好的分类性能。人工智能还支持在日常生活的许多方面开发智能工具,如语音助手、搜索引擎、自动驾驶汽车和工业机器人。

    尽管人工智能很繁荣,但目前的人工智能技术还不能从几个例子中迅速概括出来。上述成功的人工智能应用依赖于从大规模数据中学习。相反,人类能够通过利用过去所学的知识快速地学习新的任务。例如,一个学习加法的孩子可以通过几个例子(例如,2×3=2+2+22×3=2+2+21×3=1+1+11×3=1+1+1)快速地把知识转移到乘法学习上。另一个例子是,给一个陌生人的几张照片,一个孩子可以很容易地从大量的照片中辨认出同一个人。

    为了弥补人工智能和人类之间的鸿沟是一个重要的方向。它可以通过机器学习来解决,机器学习关注的是如何构造能够随着经验自动改进的计算机程序的问题[92,94]。为了从有限数量的有监督信息的例子中学习,提出了一种新的机器学习范式,称为小样本学习(FSL)[35,36]。一个典型的例子是字符生成[76],在这个例子中,计算机程序被要求解析并生成新的手写字符。要处理此任务,可以将字符分解为可跨字符传输的较小部分,然后将这些较小的组件聚合为新字符。这是一种像人一样的学习方式[77]。当然,FSL也可以推进机器人技术[26],它开发出可以复制人类行为的机器。例子包括单发模拟[147]、多臂机器手臂[33]、视觉导航[37]和连续控制[156]。

    另一个典型的FSL场景是,由于隐私、安全或道德问题,很难或不可能获取受监督信息的示例。一个典型的例子是药物发现,它试图发现新分子的特性,以便将有用的分子识别为新药[4]。由于可能的毒性、低活性和低溶解度,新分子在临床候选者中没有很多真实的生物学记录。因此,从少量的样本中有效地学习是很重要的。目标任务没有很多示例的类似示例包括FSL翻译[65]和冷启动项建议[137]。通过FSL,学习适合这些罕见情况的模型成为可能。

    FSL还可以帮助减轻收集大规模监控数据的负担。例如,尽管ResNet[55]在ImageNet上优于人类,但每个类都需要有足够的标记图像,而这些图像可能很难收集。FSL可以减少数据密集型应用程序的数据收集工作。示例包括图像分类[138]、图像检索[130]、对象跟踪[14]、手势识别[102]、图像字幕、视觉问答[31]、视频事件检测[151]、语言建模[138]和神经架构搜索[19]。

    在人工智能接近人类的学术目标和廉价学习的工业需求的推动下,FSL近年来引起了广泛的关注,并成为一个热门话题。许多相关的机器学习方法被提出,如元学习[37,106,114]、嵌入学习[14,126,138]和生成建模[34,35,113]。然而,目前还没有工作提供一个有组织的分类法来连接这些FSL方法,解释为什么有些方法工作而另一些方法失败,也没有讨论不同方法的利弊。因此,在本文中,我们对FSL问题进行了调查。相比之下,文献[118]中的调查只关注小样本的概念学习和经验学习。

    本次调查的贡献总结如下:

    ①本文给出了FSL的形式化定义,它自然地与文献[92,94]中的经典机器学习定义相联系。这个定义不仅足够笼统地包含现有的FSL工作,而且足够具体地阐明FSL的目标是什么以及我们如何解决它。这一定义有助于确定未来FSL领域的研究目标。
    ②本文列举了与FSL相关的学习问题,并举例说明它们与FSL的关系和区别。这些讨论有助于在各种学习问题中更好地辨别和定位FSL。
    ③本文指出FSL监督学习问题的核心问题是不可靠的经验风险最小化问题,并基于机器学习中的误差分解[17]对其进行了分析。这为以更有组织和系统的方式改进FSL方法提供了见解。
    ④我们进行了广泛的文献回顾,并从数据、模型和算法的角度对它们进行了统一的分类。我们还总结了见解,并讨论了每一类的利弊。这有助于更好地理解FSL方法。
    ⑤我们从问题设置、技术、应用和理论等方面提出了FSL未来的发展方向。这些见解是基于当前FSL发展的弱点,以及未来可能的改进。

    1.1 综述组织结构

    本次综述的其余部分安排如下。第2节概述了FSL,包括它的形式化定义、相关的学习问题、核心问题以及现有工作在数据、模型和算法方面的分类。第3节是关于增加数据以解决FSL问题的方法。第四节是关于减小假设空间大小以使FSL可行的方法。第5节是改变算法搜索策略以处理FSL问题的方法。在第六部分中,我们从问题设置、技术、应用和理论等方面提出了FSL的未来发展方向。最后,综述在第7节结束。

    1.2 符号和术语

    考虑学习任务,FSL处理数据集,由训练集D={Dtrain,Dtest}D=\left\{ D _{train},D_{test}\right \}II是小的,以及测试集Dtest={xtest}D_{test}=\left \{x ^{test}\right \}。令pxy)p(x,y)是输入xx和输出yy的地面真值联合概率分布,h^\hat{h}xxyy的最优假设,FSL通过拟合DtrainD_{train}DtestD_{test}测试来学习发现h^\hat{h}。为了近似h^\hat{h},FSL模型确定了假设h(;θ)h\left ( \cdot ; \theta \right )的假设空间H\mathit{H},其中θθ表示hh使用的所有参数。这里使用参数hh,因为非参数模型通常需要大量数据集,因此不适合FSL。FSL算法是一种优化策略,它搜索H\mathit{H},以找到参数化最佳hHh^{*}\in Hθθ。FSL性能是通过在预测y^=h(x;θ)\hat{y}=h(x; \theta )和观测输出上定义的损失函数 L(y^,y)L(\hat{y},y)来衡量的。

    2.概述

    在本节中,我们首先在第2.1节中提供了FSL问题的形式化定义,并给出了具体的例子。为了区分FSL问题和相关的机器学习问题,我们在第2.2节讨论了它们之间的联系和区别。在第2.3节中,我们讨论了使FSL困难的核心问题。然后,第2.4节根据现有作品如何处理核心问题,提出了一个统一的分类法。

    2.1问题定义

    由于FSL是机器学习的一个子领域,在给出FSL的定义之前,让我们回顾一下文献中是如何定义机器学习的。

    定义2.1(机器学习[92,94])。如果一个计算机程序的性能可以提高,而用PP来衡量,则它可以从一些类别的任务TT和性能度量PP的经验E中学习。
    例如,考虑到图像分类任务(T),机器学习程序可以通过对大量标记图像(例如ImageNet数据集[73])进行训练而获得的E来提高其分类精度(P)。另一个例子是最近的计算机程序AlphaGo[120],它在玩古老的围棋(T)游戏时击败了人类冠军。它通过在一个数据库(E)上训练大约3000万个人类专家记录的动作,以及反复与自己比赛,提高了对对手的胜率(P)。表1总结了这些情况。

    在这里插入图片描述

    典型的机器学习应用,如上面提到的例子,需要很多有监督信息的例子。然而,如导言所述,这可能是困难的,甚至是不可能的。FSL是机器学习的一个特殊情况,其目标是获得给定的训练集DtrainD_{train}中提供的有限监督信息的良好学习性能,其包括输入的例子xix_{i}以及其相应的输出项yiy_{i}[15 ]。正式地,我们在定义2.2中定义了FSL。

    定义2.2。小样本学习(FSL)是一类机器学习问题(由E、T和P指定),其中E只包含有限数量的例子,其中包含目标的监督信息。

    现有的FSL问题主要是监督学习问题。具体地说,小样本分类学习分类器,只给出每个类的几个标记示例。示例应用包括图像分类[138]、来自短文本的情感分类[157]和对象识别[35]。形式上,使用来自第1.2节的符号,小样本学习分类器hh,预测每个输入的标签。通常,我们考虑N-way-K-shot分类[37138],其中DtrainD_{train} I=KNI=KN个例子来自N个类,每个类都有K个例子。小样本回归[37156]估计回归函数hh,只给出从该函数抽样的几个输入-输出示例对,其中输出yiy_{i}是因变量y的观测值,yiy_{i}是记录自变量x的观测值的输入。除了小样本监督学习外,FSL的另一个实例是小样本强化学习[3,33],它的目标是找到一个策略,只给出几个由状态-动作对组成的轨迹。

    本文现在展示三种典型的FSL场景(表2):
    ①像人类一样充当学习的试验台。为了向人类智能迈进,计算机程序解决FSL问题至关重要。一个流行的任务(T)是生成一个新字符的样本,只给出几个例子[76]。受人类学习方式的启发,从几个例子中概括:一个关于小样本学习的调查1:5计算机程序学习与E既包括有监督的信息和预先训练的概念,如部分和关系作为先验知识的例子。通过视觉图灵测试(P)的通过率对生成的字符进行评价,判断图像是由人生成的还是由机器生成的。有了这些先验知识,计算机程序像人类一样还可以学习分类、解析和生成新的手写字符。
    ②罕见的学习案例。当获得足够的有监督信息的例子是困难的或不可能的时候,FSL可以学习少数情况下的模型。例如,考虑一个药物发现任务(T),它试图预测一个新分子是否具有毒性作用[4]。通过新分子的有限分析和许多类似分子的分析作为先验知识,得到的E提高了正确分配为有毒或无毒(P)的分子的百分比。
    ③减少数据收集工作和计算成本。FSL有助于减轻用监督信息收集大量示例的负担。考虑少镜头图像分类任务(T)[35]。通过对每一类目标图像进行少量标记,并从其他类别(如原始图像到协同训练)中提取先验知识,提高了图像分类精度(P)。成功完成此任务的方法通常具有较高的通用性。因此,它们可以很容易地应用于许多样本的任务。
    在这里插入图片描述
    与表1相比,表2在“经验E”下增加了一列,标记为“先前知识”。由于E中只包含了一些与监督信息直接相关的例子,因此通常的监督学习方法在FSL问题上往往是失败的。因此,FSL方法通过将E中可用的监督信息与一些先验知识相结合,即“学习者在看到示例之前关于未知功能的任何信息”,使目标T的学习成为可行的[86]。一种典型的FSL方法是贝叶斯学习[35,76]。它结合了所提供的训练集DtrainD_{train}和一些先验概率分布,这些先验概率分布在给出训练集DtrainD_{train}之前是可用的[15]。

    备注1。当在E中只有一个例子具有监督信息i时,FSL被称为小样本学习[14,35,138]。当E不包含针对目标T的有监督信息的任何示例时,FSL变为无样本学习问题(ZSL)[78]。由于目标类不包含有监督信息的示例,ZSL要求E包含来自其他模式(如属性、WordNet和用于稀有对象识别任务的单词嵌入)的信息,以便传递一些监督信息并使学习成为可能。

    2.2 相关学习问题

    在本节中,我们将讨论一些相关的机器学习问题。阐明了与FSL的关系和区别。
    ①弱监督学习[163]从仅包含弱监督(例如不完整、不精确、不准确或有噪声的监督信息)的经验E学习。FSL最相关的问题是不完全监督下的弱监督学习,其中只有少量样本具有监督信息。根据甲骨文或人工干预是否起作用,可进一步分为以下几类:

    半监督学习[165],它从E中的少量标记样本和(通常是大量)未标记样本中学习。示例应用包括文本和网页分类。正无标记学习[81]是半监督学习的一个特例,它只给出正样本和未标记样本。例如,在社交网络中推荐朋友,我们只根据好友列表知道用户当前的好友,而他们与其他人的关系是未知的。

    主动学习[117],它选择信息性的未标记数据来查询oracle的输出yy。这通常用于注释标签昂贵的应用程序,例如行人检测。

    根据定义,监督不完全的弱监督学习只包括分类和回归,而FSL也包括强化学习问题。此外,不完全监督的弱监督学习主要使用未标记数据作为E中的附加信息,而FSL利用各种先验知识,如预先训练的模型、来自其他领域或模式的监督数据,并且不局限于使用未标记数据。因此,只有当先验知识是未标记的数据且任务是分类或回归时,FSL才成为弱监督学习问题。

    ②不平衡学习[54]从经验E中学习y的偏态分布,这种情况发生在很少取y的某些值时,如在欺诈检测和灾难预测应用中。它训练和测试在所有可能的y中进行选择。相比之下,FSL训练和测试仅举几个例子,而可能把其他的作为学习的先验知识。
    ③迁移学习[101]将知识从训练数据丰富的源域/任务转移到训练数据稀少的目标域/任务。它可以用于跨域推荐、跨时段WiFi定位、空间定位和移动设备定位等应用。领域适应[11]是一种迁移学习,其中源/目标任务相同,但源/目标领域不同。例如,在情绪分析中,源域数据包含对电影的客户评论,而目标域数据包含对日常用品的客户评论。转移学习方法在FSL中被广泛使用[7,82,85],其中先验知识从源任务转移到小样本任务。
    ④元学习[59]通过提供的数据集和元学习者跨任务提取的元知识,提高了新任务T的P。具体来说,元学习者在任务间逐渐学习一般信息(元知识),学习者使用任务特定信息将元学习者概括为新的任务T。它已经成功地应用于诸如学习优化器[5,80]、处理协作过滤中的冷启动问题[137]和用自然语言指导策略[25]等问题。元学习方法可以用来解决FSL问题。如第4节和第5节所示,元学习者被视为指导每个特定的FSL任务的先验知识。附录A中给出了元学习的正式定义以及它如何用于FSL问题。

    2.3核心问题

    在任何一个机器学习问题中,通常都会出现预测误差,无法得到完美的预测。在本节中,我们将说明在有监督机器学习中基于错误分解的FSL的核心问题。该分析适用于FSL监督学习,包括分类和回归,也可以为理解FSL强化学习提供见解。

    2.3.1经验风险最小化

    给出假设hh,我们希望最小化它的期望风险RR,即相对于p(xy)p(x,y)的损失。明确地,
    R(h)=L(h(x),y)dp(x,y)=Æ[L(h(x),y)]R(h)=\int L\left ( h(x),y\right )dp(x,y)=\text{\AE}\left [ L(h(x),y)\right ]
    p(x,y)p(x,y)未知时,经验风险(指样本损失在训练集II样本DtrainD_{train}中的平均值)
    RI(h)=1Ii=1IL(h(x),yi) R_{I}(h)=\frac{1}{I}\sum_{i=1}^{I}L\left ( h(x),y_{i}\right )

    通常被用作R(h)的代理,导致经验风险最小化[94136]。为了说明,让
    h^=argminhR(h)\hat{h}=argmin_{h}R(h)是最小化预期风险的函数;
    h=argminhHR(h)h^{*}=arg min_{h\in H}R(h)是H中最小化预期风险的函数;
    hI=argminhHRI(h)h_{I}=arg min_{h\in H}R_{I}(h)是H中最小化经验风险的函数。
    由于h^\hat{h}是未知的,必须用HH中的hh来近似。hh^{*}HHh^\hat{h}的最佳近似值,而hIh_{I}是通过经验风险最小化得到的HH中的最佳假设。我们假设h^\hat{h}hh^{*}hIh_{I}都是唯一的,总误差可以分解为[17,18]:

    Æ[R(hI)R(h^)]=Æ[R(h)R(h^)]+Æ[R(hI)R(h)]{\color{Blue}\text{\AE}[R(h_{I})-R(\hat{h})]=\text{\AE}[R(h^{*})-R(\hat{h})]+\text{\AE}[R(h_{I})-R(h^{*})]}(1)
    其中εapp(H)=Æ[R(h)R(h^)]\varepsilon _{app}(H)=\text{\AE}[R(h^{*})-R(\hat{h})],εest(H,t)=Æ[R(hI)R(h)]\varepsilon _{est}(H,t)=\text{\AE}[R(h_{I})-R(h^{*})],这里的期望是关于DtrainD_{train}的随机选择.近似误差εapp(H)\varepsilon _{app}(H)度量HH中的函数如何接近最优假设h^\hat{h},估计误差εest(H,t)\varepsilon _{est}(H,t)度量HH中最小化经验风险RI(h)R_{I}(h)而不是预期风险R(h)R(h)的效果。
    如图所示,总误差受HH(假设空间)和IIDtrainD_{train}中的示例数)的影响。换言之,可以尝试从(i)提供DtrainD_{train}的数据;(ii)确定H的模型;以及(iii)搜索适合DtrainD_{train}的最优hIHh_{I}∈H的算法的角度来学习减少总误差。

    2.3.2.不可靠的经验风险最小化。

    一般来说,εest(H,t)\varepsilon _{est}(H,t)可以通过具有更多示例来减少[17、18、41]。因此,当有足够的有监督信息的训练数据(即,II很大)时,经验风险最小化hIh_{I}HH中的h的最佳可能R(h)R(h^{*})提供了一个很好的近似R(hI)R(h_{I})值。
    然而,在FSL中,可用的示例数量很少。然后,经验风险RI(h)R_{I}(h)可能远远不是预期风险R(h)R(h)的良好近似,以及由此产生的经验风险最小化hIh_{I}过拟合。事实上,这是FSL监督学习的核心问题,即经验风险最小化hih_{i}不再可靠。因此,FSL要困难得多。图1显示了学习与足够和少量训练样本的比较。
    在这里插入图片描述

    2.4 分类

    为了解决FSL监督学习中经验风险最小化不可靠的问题,必须使用先验知识。基于使用先验知识增强哪个方面,现有的FSL工作可以分为以下几个方面(图2)。

    在这里插入图片描述

    数据这些方法利用先验知识来增加DtrainD_{train},并将样本数从II增加到I~\tilde{I},并且I~I\tilde{I}\gg I,其中I可以对增加的数据使用标准的机器学习模型和算法,从而获得更精确的经验风险最小化hI~h_{\tilde{I}}(图2(a))。

    模型这些方法使用先验知识来约束HH的复杂性,这会导致假设空间H~\tilde{H}小得多。如图2(b)所示,根据先验知识,灰色区域不太可能包含最优hh^{*},因此不考虑进行优化。对于这个较小的H~\tilde{H}DtrainD_{train}足以学习可靠的hIh_{I}[43,86,99]。

    算法这些方法使用先验知识搜索在HH中最佳假设hh^{*}的参数θθ。先验知识通过提供良好的初始化(图2(c)中的灰色三角形)或指导搜索步骤(图2(b)中的灰色虚线)来改变搜索策略。对于后者,得到的搜索步骤既受先验知识的影响,也受经验风险最小化的影响。
    因此,现有的作品可以被分类为一个统一的分类法,如图3所示。我们将在下面的章节中详细介绍每一个类别。
    在这里插入图片描述

    3 数据

    本节中的FSL方法利用先验知识来增加数据量,从而丰富E中的监督信息。通过增加样本集,数据足以获得可靠的hIh_{I}(图4)。

    在FSL方法中,通常使用手工规则进行数据扩充作为预处理。它们可以引入不同类型的不变性以供模型捕获。例如,在图像上,可以使用平移[12、76、114、119]、翻转[103、119]、剪切[119]、缩放[76、160]、反射[34、72]、剪切[103160]和旋转[114138]。然而,设计这些规则在很大程度上依赖于领域知识,并且需要昂贵的人工成本。此外,扩充规则可以是数据集特有的,这使得它们很难应用到其他数据集上。而且,人类不可能列举出所有可能的不变性。因此,人工数据扩充不能完全解决FSL问题[12,34,72,76,114,119]。

    除了这些手工编制的规则之外,我们还将在以下更高级的数据扩充方法中进行回顾。根据转换和添加到DtrainD_{train}的样本,我们对这些方法进行分类,如表3所示。

    在这里插入图片描述
    在这里插入图片描述

    3.1 从DtrainD_{train}中转换样本

    该策略通过变换每一个在DtrainD_{train}训练集中的(xi,yi)(x_{i},y_{i})来扩充数据集DtrainD_{train}
    转换过程作为先验知识包含在经验E中,以便生成额外的样本。早期的FSL论文[90]通过迭代地将每个样本与其他样本对齐,从类似的类中学习一组几何变换。所学的变换被应用到每个(xi,yi)(x_{i},y_{i})形成一个大的数据集,然后可以通过标准的机器学习方法学习。类似地,从[116]中的类似类学习一组自动编码器,每个编码器表示一个类内可变性。通过添加学习到的变化xix_{i}生成新样本。在[53 ]中,假设所有类别在样本之间共享一些可变换的可变性,学习单个变换函数以将从其他类学习到的样本对之间的差异转移到(xi,yi)(x_{i},y_{i})。在[74]中,它没有枚举成对中的变量,而是使用从大量场景图像中学习的一组独立属性强度回归器将每个xix_{i}转换为多个样本,并将原始xix_{i}的标签分配给这些新样本。在[74]的基础上改进,在[82]中使用一个连续的属性子空间来向xx添加属性变化。

    3.2从弱标记或未标记的数据集中转换样本

    该策略通过从弱标记或未标记的大数据集中选择目标标记的样本来增强数据训练DtrainD_{train}。例如,在监控摄像头拍摄的照片中,有人、有车、有路,但没有一个被贴上标签。另一个例子是长演示的视频。这包含了一系列说话人的手势,但没有一个是明确注释的。因此,一个数据集包含了大量的样本变化,将它们增加到数据训练有助于描述更清晰的pxyp(x,y)。此外,收集这样的数据集更容易,因为不需要人为地进行标记。然而,尽管采集成本较低,但一个主要问题是如何选择目标标签为DtrainD_{train}的样本。在[102]中,对DtrainD_{train}中的每个目标标签学习一个样本支持向量机,然后用它来预测弱标签数据集中样本的标签。然后将具有目标标签的样本添加到DtrainD_{train}中。在[32]中,标签传播不是学习分类器,而是直接用于标记未标记的数据集。在[148]中,使用渐进策略来选择信息性的未标记样本。然后,选定的样本被分配伪标签并用于更新CNN。

    3.3转换来自相似数据集的样本

    此策略通过聚合和调整来自相似但较大数据集的输入-输出对来增强数据训练DtrainD_{train}。聚集权重通常基于样本之间的某种相似性度量。在[133]中,它从辅助文本语料库中提取聚集权重[133]。由于这些样本可能不是来自目标FSL类,因此直接将聚合样本增加到DtrainD_{train}可能会产生误导。因此,生成性对抗网络(GAN)[46]被设计用于生成从多个样本的数据集中聚合而来的不可区分的合成∮x。它有两个生成器,一个将少数镜头类的样本映射到大规模类,另一个将大规模类的样本映射到少数镜头类(以补偿GAN训练中样本的缺乏)。

    3.4讨论和总结

    使用哪种增强策略取决于应用程序。有时,目标任务(或类)存在大量弱监督或未标记的样本,但由于收集注释数据的高成本和/或计算成本(与第2.1节中介绍的第三种场景相对应),很少使用镜头学习。在这种情况下,可以通过转换弱标记或未标记数据集的样本来执行增强。当一个大规模的未标记数据集很难收集,但少数shot类有一些相似的类时,可以从这些相似的类转换样本。如果只有一些已学习的变压器而不是原始样本可用,则可以通过转换来自DtrainD_{train}的原始样本来进行增强。
    一般来说,通过增加训练来解决FSL问题是简单易懂的。利用目标任务的先验信息来扩充数据。另一方面,通过数据扩充来解决FSL问题的弱点在于,扩充策略通常是以一种临时的方式为每个数据集量身定制的,并且不能很容易地用于其他数据集(尤其是来自其他域的数据集)。最近,AutoAugment[27]被提出用来解决这个问题,它自动学习用于深度网络训练的增强策略。除此之外,现有的方法主要是针对图像而设计的,因为生成的图像很容易被人类视觉评估。相比之下,文本和音频涉及语法和结构,并且很难生成。在[144]中报告了最近对文本使用数据增强的尝试。

    4.模型

    为了逼近基本真值假设h^\hat{h},模型必须确定一个包含一系列假设h的假设空间HH,使得最优hHh_{*}∈Hh^\hat{h}之间的距离很小。
    给定小样本学习的数据训练DtrainD_{train},可以选择只有简单模型的小HH(例如线性分类器)[92,94]。然而,现实世界的问题通常是复杂的,不能很好地用小h的假设hh来表示(这可能导致(1)中的大εapp(H)\varepsilon _{app}(H))[45]。因此,一个足够大的HH在FSL中是首选的,这使得标准的机器学习模型不可行。本节中的FSL方法通过将HH限制在一个较小的假设空间内(通过E中的先验知识)来学习(图2(b))。因此,经验风险最小化法更为可靠,并降低了过度拟合的风险。

    在这里插入图片描述

    4.1多任务学习

    在存在多个相关任务的情况下,多任务学习[23,161]通过利用任务通用信息和任务特定信息来同时学习这些任务。因此,它们可以自然地用于FSL。在这里,我们给出了在FSL中使用多任务学习的一些实例。
    我们有C相关的任务T1....TcT_{1}....T_{c},其中一些具有很少的样本,而另一些具有更多的样本。每个tasktc都有一个数据集Dc=DtraincDtestcD_{c}={D_{train}^{c},D_{test}^{c}},其中DtraintcD_{traint}^{c}是训练集,Dc测试测试集。在这些任务中,我们将少数射击任务视为目标任务,其余任务视为源任务。多任务学习从DtraintcD_{traint}^{c}学习得到θcθ_cTcT_{c}。由于这些任务是联合学习的,因此tasktc的参数θcθ_{c}hch_{c}受其他任务的约束。根据任务TcT_{c}参数的约束方式,将该策略中的方法分为(i)参数共享;和(ii)参数绑定[45].

    4.1.1 参数共享

    这种策略直接在任务之间共享一些参数(图5)。在[160]中,两个任务网络共享一般信息的前几层,并学习不同的最终层以处理不同的输出。文[61]将法律文本的两个自然语言处理任务:费用预测和法律属性预测结合起来解决。使用单一的嵌入函数对刑事案件描述进行编码,然后将其输入到特定任务的嵌入函数和分类器中。在[95]中,变分自动编码器首先从源任务进行预训练,然后克隆到目标任务。两个变分自动编码器中的一些层是共享的,以便捕获一般信息,同时允许两个任务都有一些特定于任务的层。目标任务只能更新其特定于任务的层,而源任务可以同时更新共享层和特定于任务的层。在[12]中,原始样本和生成的样本都是第一个通过学习源任务和目标任务的独立嵌入函数映射到特定于任务的空间,然后由共享的变分自动编码器嵌入。

    在这里插入图片描述

    4.1.2参数绑定

    这种策略鼓励不同任务的参数(θc\theta _{c})相似(图6)[45]。一种流行的方法是正则化θc。在[151]中,θc的所有成对差分都被惩罚。在[85]中,有一个CNN用于源任务,另一个CNN用于目标任务。这两个cnn的层使用一些特殊设计的正则化项对齐。

    在这里插入图片描述

    4.2 嵌入学习

    嵌入学习[63,122]将每个样本xiXRdx_{i}\in X\subseteq \mathbb{R}^{d}嵌入到一个低维ziZRmz_{i}\in Z\subseteq \mathbb{R}^{m}中,使得相似的样本紧密相连,而不同的样本更容易区分。在这个低维ZZ中,可以构造一个较小的假设空间HH,随后需要较少的训练样本。该嵌入函数主要从先验知识中学习,还可以利用DtrainD_{train}中的特定任务信息。

    嵌入学习有以下关键部分:(i)嵌入测试样本$x_{test}\in D_{test} 的函数fii,(ii)嵌入训练样本席席x_{i}\in D_{train} iii的函数,(iii)度量函数f(x_{test})g(x_{i})中的相似性的相似函数S(,)ZFXTestin使其嵌入席席在Z中与F(XTestin)最相似,虽然可以使用X_{i}$和 XtestX_{test}的公共嵌入函数,但是使用两个独立的嵌入函数可以获得更好的精度[14, 138 ]。现有嵌入学习方法的总结如表5所示。

    根据嵌入函数ffgg的参数是否随任务的不同而变化,我们将这些FSL方法分为(i)任务特定嵌入模型;(ii)任务不变量(即一般)嵌入模型;(iii)混合嵌入模型,该模型对任务特定信息和任务不变量信息进行编码。

    在这里插入图片描述

    4.2.1任务特定嵌入模型

    特定于任务的嵌入方法通过仅使用来自该任务的信息来学习为每个任务定制的嵌入函数。例如,使用任务TcT_{c}的小样本学习数据DtraincD_{train}^{c}DtraincD_{train}^{c}中所有样本的成对排名在[130]中被枚举为样本对。这样就增加了训练样本的数量,并且即使只使用特定于任务的信息,也可以学习嵌入函数。

    4.2.2任务不变嵌入模型

    任务不变嵌入方法从包含足够样本和各种输出的大规模数据集中学习一般的嵌入函数,然后直接在新的少量数据训练中使用,而无需重新训练(图7)。第一个FSL嵌入模型[36]使用内核嵌入样本。最近,通过卷积连体网络[20]学习到了更复杂的嵌入[70150]。

    在这里插入图片描述
    尽管任务不变嵌入不会使用少量镜头数据串更新嵌入模型参数,但这类方法中的许多方法[121、126、138]在训练嵌入模型时模拟小样本学习数据DtrainD_{train}。假设我们有训练集{DcD_{c}},每个训练集有N个类。在每个DcD_{c}中,NN个类中只有UU个用于训练。嵌入模型通过最大化剩余N-U类的性能来优化。因此,所学习的模型对少量射击任务具有很好的泛化能力。早期的尝试[127]从{DcD_{c}}学习线性嵌入。最近,通过元学习2方法学习了更复杂的任务不变量嵌入模型:

    (1)Matching Nets [138]及其变体[4、8、24]:Matching Nets [138]元学习训练样本xix_{i}和测试样本xtestx_{test}的不同嵌入函数(ffgg)。剩余LSTM(resLSTM)[4]为ffgg提出了更好的设计。 MatchingNets [8]的一种主动学习变体增加了样本选择步骤,该步骤标记了最有益的未标记样本,并使用它来增强Dtrain。 Matching Nets也扩展到Set-to-Set匹配[24],这在标记多个部分样本时很有用。

    (2)原型网络(ProtoNet)[121]及其变体[100,108,141]:而不是将fxtestf(x_{test})与每个gxig(x_{i})进行比较,而xiDtrainx_{i}∈D_{train},ProtoNet [121]仅将fxtestf(x_{test})DtrainD_{train}中的类原型进行比较。对于n分类,其原型cn=1Ki=1Kg(xi)c_{n}=\frac{1}{K}\sum_{i=1}^{K}g(x_{i}),其中KK来自n类根据经验,这导致了更稳定的结果并降低了计算成本。 原型匹配的思想被引入到匹配网中[141]。原型监督的ProtoNet变体在学习过程中通过软件分配分配了标记的样本存储应变[108]。
    (3)其他方法。示例包括注意递归比较器(ARC)[119],该比较器使用带有注意的LSTM[9]将xtestx_{test}拥有 原型cnc_{n}的不同区域进行比较,然后将比较结果作为中间嵌入。此外,它使用双向LSTM(biLSTM)嵌入所有比较作为最终嵌入。关系网[126]使用CNN嵌入xtestx_{test}和$ x_{i}Z$,然后将其连接为嵌入,然后将其馈送给另一CNN以输出相似性得分。图神经网络(GNN)是在[84,115]中用于利用本地社区的信息。在少数镜头强化学习应用中(如在连续控制和视觉导航中),时间信息很重要。简单的神经注意学习者(SNAIL)[91]是一个嵌入网络,具有交错的时间卷积层和注意层。时间卷积层聚集来自过去时间步的信息,而注意层选择性地关注与当前输入相关的特定时间步。

    4.2.3混合嵌入模型。

    尽管任务不变量嵌入方法可以以较低的计算成本应用于新任务,但它们没有利用当前任务的特定知识。当任务特殊性是DtrainD_{train}只有少数例子的原因(例如少数情况下的学习)时,简单地应用任务不变量嵌入函数可能不合适。为了解决这一问题,混合嵌入模型采用了由DtrainD_{train}中的任务特定信息从先验知识中学习到的通用任务不变嵌入模型这是通过学习一个函数来完成的,该函数接受从DtrainD_{train}中提取的信息作为输入,并返回一个作为ff(·)参数的嵌入(图8)。

    在这里插入图片描述

    Learnet[14]通过结合DtrainD_train的特定信息改进了任务不变卷积连体网[70]。它从多个元训练集中学习一个元学习者,并将每个训练实例xiDtrainx_{i}∈D_{train}映射到学习者的参数(卷积连体网络)。这样,ff(·)的参数随给定的席函数变化,从而产生了混合嵌入。在Learnet的基础上改进了文[13]中用岭回归代替学习者的分类层,从而有效地得到封闭形式的参数。下面两个工作[100162]将DtrainD_{train}作为一个整体输出ff(·)的任务特定参数。任务相关自适应度量(TADAM)[100]将类原型平均到任务嵌入中,并使用元学习函数将其映射到ProtoNet参数。动态条件卷积网络(DCCN)[162]使用一组固定的滤波器,并使用DtrainD_{train}学习组合系数。

    4.3外部记忆学习

    使用外部存储器学习[49、89、124、145]从DtrainD_{train}中提取知识,并将其存储在外部存储器中(图9)。然后,每个新样本xtestx_{test}由从存储器中提取的内容的加权平均值表示。这就限制了xtestx_{test}由内存中的内容表示,从而从本质上减小了HH的大小。

    FSL通常使用键值存储器[89]。设存储器为MRb×mM\in\mathbb{R}^{b\times m},其bb个存储器槽M(i)RmM(i)\in\mathbb{R}^{ m}由一个键值对M(i)=(Mkey(i),Mvalue(i))M(i)=(M_{key}(i),M_{value}(i))组成。测试样本xtestx_{test}首先被嵌入函数ff嵌入。但是,与嵌入方法不同,fxtestf(x_{test})不能直接用作xtestx_{test}的表示。相反,它只用于查询基于fxtestf(x_{test})和每个密钥MkeyiM_{key}(i)之间的相似性sfxtestMkeyis(f(x_{test}),M_{key}(i))的大多数相似内存插槽。提取并组合最相似内存插槽(KaTeX parse error: Expected '}', got 'EOF' at end of input: M_{value}(i))的值,以形成xtestx_{test}的表示。然后将其用作一个简单分类器(如softmax函数)的输入进行预测。由于操作M很昂贵,所以M通常具有较小的尺寸。当M未满时,可以将新样本写入空内存插槽。当M已满时,必须决定要替换哪些内存插槽。表6介绍了使用外部存储器的方法的特性。

    在这里插入图片描述
    在这里插入图片描述
    由于每个xtestx_{test}都表示为从内存中提取的值的加权平均值,因此内存中键值对的质量非常重要。根据内存的功能,这类FSL方法可以细分为两种类型。

    4.3.1细化表述。

    下面的方法小心地将DtrainD_{train}放入内存中,这样存储的键值对可以准确地表示xtestx_{test}。记忆增强神经网络(MANN)[114]元学习嵌入ff,并将同一类的样本映射到相同的值。然后,同一类的样本一起在内存中优化它们的类表示。在ProtoNet[121]中,这个类表示可以看作是一个改进的类原型。基于惊奇的存储器模块[104]仅当不能表示xix_{i}时才更新M。因此,使用此xim更新M可以使M更具表现力,并降低计算成本。抽象存储器[149]使用两个存储器。一种是从包含大规模机器注释数据集的固定内存中提取相关的键值对,另一种是对提取的键值进行细化,提取出最有用的信息,用于少镜头(图像)分类。这种思想在[164]中扩展到了少镜头视频分类。
    沿着这条路线,一些方法特别注意保护内存中的少数shot类。注意,很少的镜头类是小的,所以在M中保存的几率较低。M中的每个镜头样本也可以很容易地被来自更丰富类的样本替换。为了缓解这个问题,提出了终身记忆[65]。与以往的记忆[104、114、149、164]不同,以前的记忆会在任务之间擦除内存内容,而当内存满时,终身内存会擦除“最旧”的内存值。然后,所有内存插槽的年龄都重置为零。对于新示例,当返回的MvalueiM_{value}(i)值与其基本真值输出匹配时,它将与当前MkeyiM_{key}(i)合并,而不是写入新的内存插槽。因此,更有可能所有类占用相同数量的内存槽,并且少数类受到保护。最近,这种终身记忆被用来学习[125]中的单词表示法。
    然而,即使使用终身记忆,稀有的样本仍然可以被遗忘。在每次更新之后,终身存储器将所选MiM(i)的年龄重置为零,并将其他非空存储器槽的年龄增加一个。当内存已满且返回值错误时,将替换最旧的内存插槽。由于稀有的类样本很少更新它们的MiM(i),因此它们被删除的几率更高

    4.3.2精炼参数。

    回想一下Learnet[14]及其变体(第4.2.3节)映射来自DtrainD_{train}的信息,以参数化新xtestx_{test}的嵌入函数。此参数可以使用内存进行优化。Meta Networks(MetaNet)[96]使用从多个数据集中元学习的“慢”权重和任务特定的KaTeX parse error: Expected '}', got 'EOF' at end of input: D_{{train}嵌入的“快”权重来参数化分类模型。如[97]所示,元网的计算成本可以通过学习修改每个神经元而不是整个参数来降低。MN Net[22]使用内存优化匹配网络中的嵌入学习,其输出用于参数化CNN,如Learnet中所示。

    4.4生成模型

    生成建模方法利用先验知识(见图10)从所观察到的席西估计概率分布pxp(x)pxp(x)的估计通常包括pxyp(x | y)pyp(y)的估计。这个类中的方法可以处理许多任务,例如生成[34,76,107,109]、识别[34,35,47,76,113,129,159]、重建[47]和图像翻转[107]。

    在这里插入图片描述
    在生成模型中,假设观测到的xx是从θθ参数化的分布pxθp(x;θ)中提取的。通常存在一个潜在变量zpzγz∼p(z;γ),因此xp(xz;θ)p(z;y)dzx\sim \int p(x|z; \theta )p(z;y)dz先验分布pzγp(z;γ)是从其他数据集中学习到的,它引入了对FSL至关重要的先验知识。通过将所提供的训练集DtrainD_{train}pzγp(z;γ)相结合,得到的后验概率分布受到约束。换言之,H被限制在一个更小的HH。根据潜在变量zz的表示,我们将这些FSL生成建模方法分为三类。

    4.4.1可分解的成分。

    虽然具有监督信息的样本在FSL问题中是稀缺的,但它们可能与来自其他任务的样本共享一些较小的可分解成分。例如,考虑只使用提供的几张脸部照片来识别一个人。虽然很难找到相似的脸,但人们很容易找到眼睛、鼻子或嘴巴相似的照片。通过大量的样本,可以很容易地学习这些可分解组件的模型。然后只需要找到这些可分解组件的正确组合,并确定此组合属于哪个目标类。由于可分解的组件是由人类选择的,所以这种策略更具解释性。Bayesian One Shot[35]使用生成模型来捕获可分解组件(即对象的形状和外观)和目标类(即要识别的对象)之间的交互。贝叶斯程序学习(Bayesian Program Learning,BPL)[76]通过将字符分为类型、标记和进一步的模板、部分、原语来建模字符。要生成新字符,需要搜索包含这些组件的大组合空间。在[76]中,仅考虑最可能的组合就降低了推理成本。在自然语言处理中,最近的一项工作[64]建立了跨域模型,而不是完整的解析树,并通过训练跨域的单个分类器,在语法上较远的域之间调整解析器。

    4.4.2分组共享优先级。

    通常,相似的任务具有相似的先验概率,这可以在FSL中使用。例如,考虑“橙猫”、“豹”和“孟加拉虎”三个类别的分类。这三种动物是相似的,但孟加拉虎濒临灭绝,而橙色的猫和豹数量丰富。因此,我们可以从“橙色猫”和“豹子”中学习先验概率,并将其用作少数射击类“孟加拉虎”的先验概率。
    在[113]中,一组数据集Dc{D_{c}}通过无监督学习被分组到一个层次结构中。每组的数据集一起学习类的先验概率。对于一个新的少数镜头类,首先找到这个新类所属的组,然后根据从组共享先验概率中提取的类先验对其进行建模。在[129]中,[113]中的特征学习步骤随着深Boltzmann机器的使用而进一步改进[112]。

    4.4.3推理网络参数

    为了找到最好的θθ,我们必须最大化后验

    在这里插入图片描述
    由于分母中的积分,很难求解(2)。从数据中学习到的变分分布qzδq(z;δ)通常用于近似p(zx;θ,γ)p(z|x; \theta , \gamma )。最近,这个qzδq(z;δ)是用推理网络通过分期变分推理来逼近的[158]。虽然z不再具有语义意义,但是这些深层模型所学习到的强大表示可以带来更好的性能。推理网络一经学习,就可以直接应用到新的任务中,效率更高,所需的人工知识更少。由于推理网络具有大量的参数,通常使用一些辅助的大规模数据集对其进行训练。许多经典的推理网络都适用于FSL问题。例如,变分自动编码器(V-AE)[68]用于[34,57,109],自回归模型[135]用于[107],生成性对抗网络(GAN)[46]用于[159],V-AE和GAN的组合在[47]中提出。

    4.5讨论和总结

    当存在相似任务或辅助任务时,多任务学习可以用来约束少量任务的H。但是,请注意,需要对所有任务进行联合培训。因此,当一个新的少量任务到达时,整个多任务模型必须重新训练,这可能是昂贵和缓慢的。而且,D和DcD_{c}的大小是不可比较的,否则,少量的shot任务可能会被大量样本的任务所淹没。

    当存在一个包含足够多类样本的大规模数据集时,可以使用嵌入学习方法。这些方法将样本映射到一个很好的嵌入空间,在这个嵌入空间中,不同类别的样本可以很好地分离,因此需要更小的H^\hat{H}。但是,当少数镜头任务与其他任务没有密切关系时,它们可能无法很好地工作。此外,进一步探讨如何将任务的不变信息与特定任务的信息相结合,也会有一定的帮助。

    当内存网络可用时,通过在内存上训练一个简单的模型(例如,分类器),它可以很容易地用于FSL。通过使用精心设计的更新规则,可以有选择地保护内存插槽。这种策略的缺点是它会带来额外的空间和计算成本,这些成本会随着内存大小的增加而增加。因此,当前外部存储器的大小是有限的。

    最后,当人们想在FSL之外执行生成和重构等任务时,可以使用生成模型。他们从其他数据集中学习先验概率PzγP(z;γ),从而将H降到更小的H~\tilde{H}。然而,生成性建模方法具有较高的推理成本,比确定性模型更难推导。

    5 .算法

    该算法是在假设空间HH中搜索最佳假设HH^{*}的参数θθ的策略[17,18]。在tth迭代中,θt=θt1+Δθt1\theta _{t}= \theta_{t-1} + \Delta \theta _{t-1},其中Δθt1\Delta \theta _{t-1}是更新。例如,对于流行的随机梯度下降(SGD)及其变体[17,18],θθ更新为
    θt=θt1atθt1L(h(xt;θt1),yt) \theta _{t}= \theta_{t-1} - a_{t} \bigtriangledown _{ \theta _{t-1}}L(h(x_{t}; \theta_{t-1} ),y_{t})

    其中αtα_{t}是步长。当θθ初始化为θ0θ_{0}时,θtθ_{t}可以写成

    θt=θ0+t=1tΔθi1\theta _{t}=\theta _{0} +\sum_{t=1}^{t} \Delta \theta _{i-1}

    当监督信息丰富时,有足够的训练样本更新θθ,并通过交叉验证找到合适的步长αα。然而,在有限状态下,所提供的少量数据量不够大,所得到的经验风险最小值是不可靠的。

    本节中的方法使用先验知识来影响θθ的获取,方法是(i)提供良好的初始化参数θ0θ_{0},或(ii)直接学习优化器以输出搜索步骤。根据搜索策略如何受到先验知识的影响,我们将本节中的方法分为三组(表7):

    (1)优化现有参数。从其他任务中学习的初始θ0θ_{0},然后使用DtrainD_{train}进行优化。
    (2)优化元学习参数。初始θ0θ_{0}是从一组任务中元学习得到的,这些任务来自于与少数镜头任务相同的任务分布,然后由学习者使用DtrainD_{train}进一步细化。

    (3)学习优化器。该策略学习一个元学习者作为优化器,直接为每个学习者输出搜索步骤,例如改变搜索方向或步长。

    在这里插入图片描述

    5.1完善现有参数

    该策略以从相关任务中学习到的预训练模型的θ0θ_{0}作为良好的初始化,并通过DtrainD_{train}对其进行自适应。假设θ0θ_{0}捕捉了大尺度数据的一些一般结构。因此,它可以通过一些迭代来适应DD

    5.1.1通过正则化对现有参数进行微调。

    此策略通过正则化微调少数镜头任务的预训练θ0θ_{0}(图11),并在实践中广泛使用。在[21]中,在ImageNet上预先训练用于图像分类的CNN使用用于前景分割的大数据集进行调谐,然后使用分割对象的单个镜头进一步进行微调以进行对象分割。考虑到很少的射程,简单地通过梯度下降微调θ0θ_{0}可能会导致过度拟合。因此,如何在不过度拟合的情况下适应θ0θ_{0}是一个关键的设计问题。

    在这里插入图片描述
    在本节中,方法通过正则化微调θ0θ_{0}以防止过度拟合。它们可以按如下方式分组:

    (1)早停。它需要将验证集与DtrainD_{train}分离,以监视培训过程。当验证集没有性能改进时,学习将停止[6]。

    (2)有选择地更新θ0θ_{0}。为了避免过度拟合,只更新θ0θ_{0}的一部分。例如,在[67]中,给定一组预先训练的滤波器,它只学习与滤波器相乘的强度参数。

    (3)同时更新θ0θ_{0}的相关部分。一个人可以将θ0θ_{0}的元素(如深层神经网络中的神经元)分组,并用相同的更新信息联合更新每个组。在[155]中,预先训练的CNN的滤波器根据一些辅助信息聚在一起,然后使用DtrainD_{train}通过分组反向传播进行微调。
    (4)使用模型回归网络

    模型回归网络[143]捕获了任务不可知的转换,该转换映射了通过几个例子的训练获得的参数值对大量样本进行训练得到的参数值。类似地,在[72]中,学习了将xix_{i}的嵌入映射到分类决策边界的变换函数。

    5.1.2集合一组参数。

    有时,我们没有合适的θ0θ_{0}来开始。相反,我们有许多从相关任务中学习的模型。例如,在人脸识别中,我们可能已经有了眼睛、鼻子和耳朵的识别模型。因此,可以将这些模型参数聚合到一个合适的模型中,然后直接使用该模型或由DtrainD_{train}进行优化(图12)。

    在这里插入图片描述
    如第3节所述,来自未标记数据集(第3.2节)和类似标记数据集(第3.3节)的样本可用于增加小样本的数据量。以下方法不是直接使用样本,而是使用从这些数据集中预先训练的模型(参数θ0θ_{0})。问题是如何使用DtrainD_{train}有效地使它们适应新的任务。
    (1)未标记的数据集。
    虽然没有监督信息,但类似的样本可以分组在一起。因此,可以对未标记数据的函数进行预训练,很好地对样本进行聚类和分离。然后,使用一个神经网络,用少量的DtrainD_{train}使它们适应新的任务[142,143]。
    (2)相似的数据集
    在[10]中,小样本学习对象分类是通过利用来自相似类的样本和分类器来执行的。首先,它用新类的特性替换这些相似类的样本的特性。然后重用所学习的分类器,并且只为新类调整分类阈值。在[44,157]中,他们学习使用DtrainD_{train}组合从类似数据集中学习到的现有参数。

    5.1.3用新参数微调现有参数。

    预先训练的θ0θ_{0}可能不足以完全编码新的FSL任务。因此,使用附加参数δδ来考虑DTrainD_{Train}的特性(图13)。具体来说,该策略在学习δ的同时,将模型参数扩展为θ=θ0δθ={θ_{0},δ},并对θ0θ_{0}进行微调。在[60]中,它使用预先训练的CNN的下层进行特征嵌入,并使用DtrainD_{train}学习嵌入特征的线性分类器。在字体样式传输[7]中,首先对网络进行预训练,以捕获灰色图像中的字体。为了产生时尚的彩色字体,这是与一个额外的网络训练一起微调。
    在这里插入图片描述

    5.2精炼元学习参数

    本节中的方法使用元学习优化元学习参数θ0θ_{0}(图14)。元学习者根据学习者的表现不断优化θ0θ_{0}。这与第5.1节中θ0θ_{0}是固定的不同。
    在这里插入图片描述

    元学习θ0θ_{0}通常通过梯度下降来细化。典型的方法是模型不可知元学习(MAML)[37]。它学习θ0θ_{0},然后通过几个有效的梯度下降步骤,对其进行调整,以获得一些TsPTT_{s}∼P(T)的良好任务特定参数,如:ϕs=θ0αθ0Ltrains(θ0)\phi _{s} = \theta _{0}- \alpha \bigtriangledown_{ \theta_{0} } L_{train}^{s}( \theta_{0} )序列(θ0θ_{0})。这里Ltrains(θ0)L_ {train}^{s}( \theta_{0} )DtrainD_{train}中训练样本的损失之和,αα是步长。注意,对样本的排列而言,ϕs\phi _{s}是不变的。元学习参数θ0θ_{0}由多个元训练任务的反馈更新为θ0<-θ0-β∇θ0˝Ts∼P(T)Ls test(θ0),其中Ltests(θ0)L_ {test}^{s}( \theta_{0} )DtestD_{test}中测试样本的损失之和,β是另一个步长。元学习者利用DtrainD_{train}中的少量镜头样本,通过不断地改进θ0θ_{0},使其快速适应小样本训练集。

    近年来,针对MAML提出了许多改进措施,主要有以下三个方面:
    (1)包含特定于任务的信息.
    MAML为所有任务提供相同的初始化。但是,这会忽略特定于任务的信息,并且仅当任务集非常相似时才适用。为了解决这个问题,在[79]中,它学习从新任务的良好初始化参数的子集中选择{θ0θ_{0}}。
    (2)使用元学习θ0θ_{0}的不确定性建模。举几个例子学习必然会产生一个不确定性更高的模型[39]。因此,所学习的模型可能无法对新任务进行高置信度的预测。测量这种不确定性的能力为主动学习和进一步的数据收集提供了提示[39]。有些工作考虑了元学习θ0θ_{0}的不确定性[39,156]、特定任务的不确定性ϕs\phi _{s}[48,105]和n类特定参数的不确定性ϕs,n\phi _{s,n}[111]。
    (3)改进精炼工艺。通过几个梯度下降步骤进行细化可能不可靠。正则化可以用来修正下降方向。在[50]中,模型回归网络[143]用于将任务TsT_{s}ϕs\phi _{s}正则化,使之接近用大规模样本训练的模型。

    5.3 学习优化器

    在第5.2节中,元学习者θ0用数据D充当良好的初始化TPTT∼P(T),并通过几个有效的梯度下降步骤将其调整为特定于任务的参数。相反,本节中的方法没有使用梯度下降,而是学习一个优化器,它可以直接输出更新i=1tΔθi1\sum_{i=1}^{t} \Delta \theta ^{i-1}in(4))(图15)。因此,无需调整步长αα或查找搜索方向,因为学习算法会自动调整步长αα或查找搜索方向。
    在这里插入图片描述

    tt 次迭代中,这一行[5,106]学习一个元学习者,该元学习者接受在t1(t-1)第次迭代中计算出的错误信号,并直接输出更新Δϕt1\Delta \phi_{t-1},以更新学习者的特定任务参数Δϕt1\Delta \phi_{t-1},即ϕt=ϕt1+Δϕt1\phi_{t}=\phi_{t-1}+\Delta \phi_{t-1}。因此,与第5.1节和第5.2节中提到的策略相反,该策略为新任务提供了一个优化器(而新任务又由学习者优化)。然后,使用第t个样本xt0ytDtrain(x_{t}0,y_{t})∈D_{train},该样本充当错误信号,在下一次迭代中输入元学习者,用该样本计算损失量Ψt(üt)=。学习任务后,元学习者在测试集D_{test}的损失上通过梯度下降得到改善。通过从P(T)抽取的一组TsT_{s}中学习,元学习者改进了对FSL的有效算法的提出。最近,[106]通过在LSTM中的单元状态更新来实例化(3)来获得ϕt\phi_{t}(其中ϕ\phi被设置为LSTM的单元状态)。

    5.4 讨论与总结

    对已有参数进行优化可以减少H中的搜索工作量,利用已有的θ0θ_{0}作为初始值,这些方法通常需要较低的计算代价来获得一个好的假设hHh∈H。然而,由于θ0θ_{0}是从不同于当前任务的任务中学习的,因此该策略可能会牺牲速度的精度。

    另外两种策略依赖于元学习。通过从一组相关任务中学习,对于新的任务TsT_{s},元学习θ0θ_{0}更接近于任务特定参数ɕtf。元学习者的学习搜索步骤可以直接指导学习算法。换句话说,元学习者充当优化器。然而,如何跨不同粒度(如动物的粗粒度分类与犬类的细粒度分类)或不同数据源(如图像与文本)进行元学习等重要问题仍有待解决[131]。从这个角度来看,元学习和多任务是相似的,因此也有人担心如何避免负迁移[28]

    6.未来的工作

    在这一部分中,我们讨论了进一步发展FSL的四个关键方向,即(i)问题设置,(ii)技术,(iii)应用和(iv)理论。

    6.1问题设置

    现有的FSL方法通常使用单一模态(如图像、文本或视频)的先验知识。然而,尽管DtrainD_{train}对于当前使用的模态有一些示例,但是可能存在另一种模态,其中监督样本丰富。一个例子是对灭绝动物的研究。虽然这种动物可能只有有限数量的视觉例子,但在文本领域(如教科书或网页)可能会有很多关于它的信息,因为人们往往特别关注这门稀有的课程。因此,来自多种模式的先验知识可以为互补观点提供先验知识。在零炮学习(ZSL)中,多模态数据被频繁使用。示例先验信息包括属性[2,62]、WordNet[2,62]、单词嵌入[133,139]、共现统计[88]和知识图[140]。
    最近,有人努力将技术从ZSL方法借用到FSL问题。例如,可以使用少量的数据训练来微调由ZSL方法学习的参数[2,62]。但是,使用少量样本进行微调可能会导致过度拟合。另一种可能性是强迫多个模式学习到的嵌入在共享空间中匹配[133139]。最近的一项工作[110]利用标签之间的结构化关系,并利用GNN来对齐FSL的嵌入。由于不同的模式可能包含不同的结构,因此应谨慎处理。例如,文本需要服从句法结构,而图像则不需要。未来一个有希望的方向是在设计FSL方法时考虑多模态信息的使用。

    6.2 技术

    在前面的章节中,我们根据如何使用FSL中的先验知识,从数据(第3节)、模型(第4节)和算法(第5节)的角度对FSL方法进行分类。每个组件都可以改进。例如,使用最新的ResNet[55]作为嵌入函数可以比使用VGG[123]更好。
    基于元学习的FSL方法,如第4节和第5节所述,特别有趣。通过跨任务学习,元学习能够以较小的推理代价快速适应新任务。然而,元学习中考虑的任务通常被认为是从一个任务分布p(T)。在实践中,我们可以有大量的任务,这些任务的任务关联性是未知的或很难确定的。在这种情况下,直接从所有这些任务中学习会导致负迁移[28]。此外,目前的FSL方法通常考虑静态和固定P(T)[37106]。然而,在流媒体应用中,p(T)是动态的[38],新的任务不断到来。因此,这也应纳入p(T)。一个重要的问题是如何在动态环境中避免灾难性遗忘[69],这意味着关于旧任务的信息不应该被遗忘。
    如前几节所述,不同的FSL方法各有利弊,并且在所有设置中都没有绝对赢家。此外,假设空间H和H中的搜索策略通常都依赖于人的设计。Automated machine learning(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和minimagenet)上已经获得了非常高的精度,留给进一步改进的空间很小[131]。最近,在文献[131]中提出了一个由多个图像数据源构成的大型、多样的基准数据集。除了字符识别和图像分类之外,还考虑了其他图像应用。其中包括目标识别[35,36,82]、字体传输[7]、词组接地[162]、图像检索[130]、目标跟踪[14]、图像中的特定对象计数[162]、场景位置识别[74]、手势识别[102]、部件标记[24]、图像生成[34,76,107,109]、跨域图像翻译[12]、形状视图三维物体重建[47],图像字幕和视觉问答[31]。

    FSL还成功地应用于视频应用中,包括运动预测[50]、视频分类[164]、动作定位[152]、人的重新识别[148]、事件检测[151]和对象分割[21]。

    6.3.2机器人

    为了让机器人表现得更像人类,他们应该能够从一些演示中概括出来。因此,FSL在机器人领域发挥了重要作用。例如,学习机器人手臂的运动,使用模仿学习从一个单一的示范[147],并学习操作行动从几个示范与帮助教师纠正错误的行动[1]。
    除了模仿用户之外,机器人还可以通过与用户的互动来改善他们的行为。最近,辅助策略是通过FSL强化学习从一些互动中学到的[51]。机器人学中的FSL的其他例子包括多臂强盗[33]、视觉导航[33,37],以及持续控制[3791156]。最近,这些应用进一步扩展到动态环境[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方法只需训练一次supernet就可以找到好的体系结构。FSL也被用于曲线拟合[39,48,114,156]和通过逻辑推理理解数字类比来执行计算[104]。

    6.4理论

    FSL利用先验知识来弥补监督信息的不足。这与样本复杂度的理论研究有关,样本复杂度是指获得具有高概率小经验风险RIhR_{I}(h)的模型所需的训练样本数[92,94]。H需要不那么复杂,以使我提供的样本足够多。回想一下,FSL方法使用先验知识来增加更多的样本(即,增加i),约束H(即,降低H的复杂性)和改变搜索策略(即,增加找到一个好H的概率)。这表明FSL方法可以利用先验知识降低所需的样本复杂度。对这方面的详细分析将是有益的。
    此外,回想一下,FSL与领域适应相关[85,95,102],现有的领域适应的理论界可能是鼓舞人心的[11,16]。例如,最近的分析表明,通过微调前馈神经网络可以获得更好的风险界[87]。通过考虑一种特定的元学习方法,在[29]中研究了将一个任务训练的模型转移到另一个任务的风险。然而,到目前为止,研究的方法还很少。还有很多理论问题需要探讨。

    最后,对FSL算法的收敛性还没有完全了解。特别是,元学习方法优化θ在任务分布上,而不是在单个任务上。文献[40]中的最新分析为元学习方法的收敛性提供了充分的条件。元学习者学习深层网络的底层,而学习者学习最后一层,都使用梯度下降。对元学习方法的收敛性进行更全面的分析将是非常有用的。

    7.结论

    小样本学习(FSL)的目标是缩小人工智能和人类学习之间的差距。通过融合先验知识,它可以学习到只包含少量监督信息的新任务。FSL作为人工智能的试验台,使得学习罕见案例成为可能,或者有助于减轻在工业应用中收集大规模监督数据的负担。在这项调查中,我们提供了一个全面和系统的检讨。本文首先对FSL进行了形式化定义,讨论了FSL与弱监督学习、不平衡学习、迁移学习和元学习等相关学习问题的联系和区别。然后我们指出,金融服务业的核心问题是不可靠的经验风险最小化,这使得金融服务业很难学习。了解核心问题有助于根据不同作品如何利用先验知识解决核心问题,将其分类为数据、模型和算法:数据增加了FSL的监督体验,模型约束了FSL的假设空间更小,算法在给定的假设空间中改变搜索策略以获得最佳假设。在每一类中,我们都会深入讨论其利弊,并给出一些总结和见解。为了启发未来的研究,我们也提供了可能的方向,在问题设置,技术,应用和理论探索。

    附录:元学习

    元学习[59]通过提供的数据集和元学习者跨任务提取的元知识提高了新任务TT的P(图16)。令pTp(T)是任务T的分布。在量表训练中,它学习一组任务TspTT_{s}∼p(T)。每个taskts操作N个类的数据集DsD_{s} ,其中Ds=DtrainsDtestsD_{s}={D_{train}^ {s},D_{test}^ {s}}由一个训练集DtrainsD_{train}^ {s}和一个测试集DtestsD_{test}^ {s}组成。每个学习者从DsD_{s}训练中学习,并在DsD_{s}测试中测量测试错误。元学习者的参数θ0θ_{0}被优化以最小化所有学习者的错误,如:

    在这里插入图片描述

    在元测试中,另一组不相交的任务TtpTT_{t}∼p(T)被用来测试元学习者的泛化能力。N’类的数据集DtD_{t}上的每个TtT_{t}work,其中Dt=DtraintDtesttD_{t}={{D_{train}^ {t},D_{test}^ {t}}}。学习者从训练集DtraintD_{train}^ {t}学习,并在测试集DtesttD_{test}^ {t}上进行评估。将损失平均值TtT_{t}作为元学习测试误差。

    在这里插入图片描述

    展开全文
  • 支持向量回归机为基础,提出了小样本数据的迁移学习支持向量回归机算法。本文算法以加权ε支持向量回 归机为Bagging 算法的基学习器,使用与目标任务相关联的源域数据,通过自助采样生成多个子回归模型, 采用简单...
  • 小样本学习与元学习--学习随笔1小样本学习(Few-shot learning)解决方法1---数据增强解决方法2---正则化解决方法3---元学习(Meta-learning)1、学习微调 (Learning to Fine-Tune)2、基于 RNN 的记忆 (RNN Memory ...

    小样本学习(Few-shot learning)

    深度学习已经广泛应用于各个领域,解决各类问题,传统的深度学习需要大量的数据来训练出一个好的模型。然而,在我们生活中,有些问题要获取大量样本是不现实的,获取的成本也非常大,比如在医疗领域、安全领域等。那么我们是否能像人类一样,只需学习很少的样本,就能准确的识别出新的样本?这就是小样本学习问题(Few-shot learning)

    解决方法1—数据增强

    最常见的例子:对数据集预处理,将图片旋转 90 、180 、270 度,这样就可以使样本数量变为原来的 4 倍。

    解决方法2—正则化

    在训练的时候加入一个正则项,例如“Few-shot Classification on Graphs with Structural Regularized GCNs”中,作者在训练的时候给损失函数加了一个正则项。作者将 feature 到 embedding 的过程看成编码器 encoder,然后额外加了几层网络作为 decoder,将 embedding 重构为 feature ,然后重构误差作为正则项,准确率从 40% 提升了大约 10 个百分点。

    解决方法3—元学习(Meta-learning)

    定义:通过大量的数据,现在的AI系统能从0开始学习一个复杂的技能。我们希望AI系统能获得多种技能并能适应各种环境,但针对每种技能都从0开始训练是无法承受的。因此,我们希望它能够从之前的经验快速地学习新的技能,而不是把新的任务孤立地考虑。这个方法,我们称为元学习(learning to learn,或meta learning)
    简单地说就是:先学习一个先验知识(prior),在这个先验知识的基础上,解决新的问题。
    meta-learning 需要一些类来构建 meta-training task。由于 meta-testing 的类别要和 meta-training 完全不同,因此如果我们只有 MNIST 数据集,没法使用 meat-learning 来解决 MNIST 上的 10-way few-shot learning 问题,但是方法 2.1 可以。不过我们可以使用 meta-learning 解决 MNIST 上的 N-way (N < 6) 的 few-shot learning 问题。那么如果我们非要解决 MNIST 上的 10-way few-shot learning 问题怎么办呢,可以在另外一个数据集,例如 Omniglot ,上面进行 meta-training,然后学到的先验知识用来解决这个问题。

    Meta-learning 中 task 的概念是和 meta-learning 的本质有关的。Meta-learning 其实还有一个名字叫做“学会学习” (Learn to learn),这来自于对人类智能的基本认知:我们人类学习一个东西的时候不是从头开始学的,都是基于之前学习的知识来进行学习的。但是我们的深度学习模型呢,学习新的东西(可以看成新的类,新的 task)需要从头开始学习( 当然需要大量的样本 ),即使你之前学过特别类似的东西。因此 Meta-learning 就像让深度学习学会学习,利用之前学过的知识在面对新的问题可以学习得又快又好

    元学习的方法分为三类:
    (参考文章《Learning to Compare: Relation Network for Few-Shot Learning》)

    1、学习微调 (Learning to Fine-Tune)

    MAML(《Model-Agnostic Meta-Learning for Fast Adaptation of Deep Networks》) 是这类方法的范例之一。MAML 的思想是学习一个 初始化参数 (initialization parameter),这个初始化参数在遇到新的问题时,只需要使用少量的样本 (few-shot learning) 进行几步梯度下降就可以取得很好地效果( 参见后续博客 )。另一个典型是《Optimization as a Model for Few-Shot Learning》,他不仅关注于初始化,还训练了一个基于 LSTM 的优化器 (optimizer) 来帮助微调。

    2、基于 RNN 的记忆 (RNN Memory Based)

    最直观的方法,使用基于 RNN 的技术记忆先前 task 中的表示等,这种表示将有助于学习新的 task。
    参考论文:《Meta networks》和 《Meta-learning with memory-augmented neural networks.》

    3、度量学习 (Metric Learning)

    学习一个 embedding 函数,将输入空间(例如图片)映射到一个新的嵌入空间,在嵌入空间中有一个相似性度量来区分不同类。我们的先验知识就是这个 embedding 函数,在遇到新的 task 的时候,只将需要分类的样本点用这个 embedding 函数映射到嵌入空间里面,使用相似性度量比较进行分类。
    参考论文:《Learning a Similarity Metric Discriminatively, with Application to Face Verification.》,《Siamese neural networks for one-shot image recognition》,《Siamese neural networks for one-shot image recognition》,《Matching networks for one shot learning》,《Prototypical Networks for Few-shot Learning》,《Learning to Compare: Relation Network for Few-Shot Learning》。

    未完待续。。。

    展开全文
  • 小样本学习介绍

    2019-10-02 20:33:37
    在大多数时候,你是没有足够的图像来训练深度神经网络的,这时你需要从小样本数据快速学习你的模型。 Few-shot Learning 是 Meta Learning 在监督学习领域的应用。Meta Learning,又称为 learning to learn,在 meta...
  • 图像分类的应用场景非常广泛, 很多场景下难以收集到足够多的数据来训练模型, 利用小样本学习进行图像分类可解决训练数据量小的问题. 本文对近年来的小样本图像分类算法进行了详细综述.
  • 示例Java应用 我在学习课程时正在构建的简单小样本应用程序
  • 本文为智源论坛第 5 期机器学习系列报告会的要点回顾第二弹。7 月 10 日,清华大学自动化系教授张长水在智源论坛上同大家分享了其“关于小样本学习的一些思路”。作为国内机器学习领域的...
  • 小样本学习的思考

    2021-03-11 17:27:58
    事实上小样本学习应用可以是很广泛的, 其中的研究思路也可以对其他领域产生启发。这两个方面展开说可以写很多。 随便举几个例子,很多相关的问题都可以看做小样本学习,比如图像检索,人脸识别验证,行人重识别.
  • 2018年还剩不到10天,回顾一下今年CV(Computer ...似乎每家公司都在为这个看得见的“赛点”争分夺秒地发掘新应用场景。 不过,还是有很多新技术的进步值得我们专门用一篇文章来说一说,比如今天要讲的Zero-Shot L...
  • 在机器学习应用领域,小样本学习(Few-shot Learning)(在刚刚描述的情况下称为单样本学习(one-shot learning))是一个热门话题,它能够基于少量的训练样本去预测。本文将讨论以下几个方面: 目录 1. 什么是小样本...
  • 小样本学习旨在通过少量样本学习到解决问题的模型.近年来在大数据训练模型的趋势下,机器学习和深度学习在许多领域中取得了成功.但是在现实世界中的很多应用场景中,样本量很少或者标注样本很少,而对大量无标签样本...
  • 1 小样本简介 2 MAML模型 3 MAML的问题及优化 4 MAML的深入分析 5 MAML的解析解 6 其他问题 6 MAML在推荐系统的应用 7 总结 参考文献 1 小样本简介 2 MAML模型 3 MAML的问题及优化 算法里的...
  •  目前有效的文本分类方法都是建立在具有大量的标签数据下的有监督学习,例如常见的textcnn,textrnn等,但是在很多场景下的文本分类是无法提供这么多训练数据的,比如对话场景下的意图识别,这个时候如果我们还以...
  • Few-Shot Learning泛指从少量标注数据中学习的方法和场景,是Meta Learning在监督学习领域的应用。 C-way K-shot问题:在训练阶段,在训练集中随机抽取C个类别,每个类别K个样本,总共CK个数据,构建一个meta-...
  • A survey on Few-shot Learning (小样本学习)   机器学习已经成功地在数据密集型任务上得以应用,但通常却不能够处理数据很少的情况。最近,小样本学习(Few-shot Learning,FSL)被提出用于解决这个问题。在...
  • 人类非常擅长通过极少量的样本识别一个新物体,比如孩子只需要书中的一些图片就可以认识什么是“斑马”,什么是“犀牛”。... 这里的少样本学习的研究领域与迁移学习有一大部分交集部分,即在源域有足够...
  • 论文分享:2020小样本学习综述

    千次阅读 2020-06-03 17:48:45
    应用2.2 相关机器学习问题2.3 FSL核心问题2.4 FSL方法分类2.5 FSL方法研究现状S3 数据3.1 数据扩充方法3.2 数据扩充方法的GAPS4 模型4.1 模型选择方法4.2 模型选择方法的GAPS5 算法5.1 优化算法方法5.2 优化算法方法...
  • 学习报告:基于原型网络的小样本学习《Prototypical Networks for Few-shot Learning》,该论文的主要贡献有两点:(1)对图像领域的Few-Shot/Zero-Shot(小样本/零样本)任务,应用设计简单的原型网络方法(见第二...
  • 在过去的几年里,基于深度...然而,真实字计算机视觉应用程序通常需要模型能够(a)通过很少的注释例子学习,(b)不断适应新的数据而不忘记之前的知识。不幸的是,经典的监督深度学习方法在设计时并没有考虑到这些需求。
  • 为了解决这一问题,近年来提出了小样本学习(FSL)。利用先验知识,FSL可以快速地泛化到只包含少量有监督信息的样本的新任务中。在这篇论文中,我们进行了一个彻底的调研,以充分了解FSL。从FSL的正式定义出发,我们将...
  • 本文转载自maofeng大神写的很...深度学习(deep learning)已经广泛应用于各个领域,解决各类问题,例如在图像分类问题上,如图1,区分这10类目标的准确率目前可以轻松做到94%。然而,deep learning是一种data hungry...
  • 小样本遇上机器学习 fewshot learning

    万次阅读 多人点赞 2017-12-30 22:21:10
    引言 深度学习(deep learning)已经广泛应用于各个领域,解决各类问题,例如在图像分类问题下,如图1,区分这10类目标的准确率目前可以轻松做到94%。然而,deep learning是一种data hungry的技术,需要大量的标注...
  • 针对该问题,提出了一种基于迁移学习小样本机载激光雷达点云分类方法。该方法首先对机载激光雷达点云进行光谱信息的补充,通过提取点云数据的归一化高度、强度值和植被指数特征构建三通道点云特征图;通过设置不同的...
  • FSL问题的扩展主题,应用以及未来研究方向
  • 应用场景:小样本学习中图像扩充。 #include #include #include #include using namespace cv; using namespace std; Mat addSaltNoise(const Mat srcImage, int n); Mat rotateImage

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,178
精华内容 471
关键字:

小样本学习应用