北京白癜风专科医院 https://wapjbk.39.net/yiyuanzaixian/bjzkbdfyy/
机器之心转载作者:耿瑞莹、李永彬、黎槟华单位:阿里巴巴智能服务事业部小蜜北京团队分类非常常见,但如果每个类只有几个标注样本,怎么办呢?笔者所在的阿里巴巴小蜜北京团队就面临这个挑战。我们打造了一个智能对话开发平台——DialogStudio,以赋能第三方开发者来开发各自业务场景中的任务型对话,其中一个重要功能就是对意图进行分类。大量平台用户在创建一个新对话任务时,并没有大量标注数据,每个意图往往只有几个或十几个样本。面对这类问题,有一个专门的机器学习分支——Few-shotLearning来进行研究和解决。过去一年,我们对Few-shotLearning进行了系统的梳理和研究,将Few-shotLearning和CapsuleNetwork融合,提出了InductionNetwork,在文本分类上做到了新的state-of-the-art。创新总是基于对已有成果的梳理和思考,这篇综述算是一个小结,写出来和大家一起分享,一起讨论。本文先介绍Few-shotLearning定义;由于最近几年Few-shotLearning在图像领域的进展领先于在自然语言处理领域,所以第二部分结合其在图像处理领域的研究进展,详细介绍Few-shotLearning的三类典型方法及每种方法的代表性模型;接下来介绍在自然语言处理领域的研究进展以及我们对metric-based的方法进行系统总结后提出的few-shotlearningframework。问题定义人类非常擅长通过极少量的样本识别一个新物体,比如小孩子只需要书中的一些图片就可以认识什么是“斑马”,什么是“犀牛”。在人类的快速学习能力的启发下,研究人员希望机器学习模型在学习了一定类别的大量数据后,对于新的类别,只需要少量的样本就能快速学习,这就是Few-shotLearning要解决的问题。Few-shotLearning是MetaLearning在监督学习领域的应用。MetaLearning,又称为learningtolearn,在metatraining阶段将数据集分解为不同的metatask,去学习类别变化的情况下模型的泛化能力,在metatesting阶段,面对全新的类别,不需要变动已有的模型,就可以完成分类。形式化来说,few-shot的训练集中包含了很多的类别,每个类别中有多个样本。在训练阶段,会在训练集中随机抽取C个类别,每个类别K个样本(总共CK个数据),构建一个meta-task,作为模型的支撑集(supportset)输入;再从这C个类中剩余的数据中抽取一批(batch)样本作为模型的预测对象(batchset)。即要求模型从C*K个数据中学会如何区分这C个类别,这样的任务被称为C-wayK-shot问题。训练过程中,每次训练(episode)都会采样得到不同meta-task,所以总体来看,训练包含了不同的类别组合,这种机制使得模型学会不同meta-task中的共性部分,比如如何提取重要特征及比较样本相似等,忘掉meta-task中task相关部分。通过这种学习机制学到的模型,在面对新的未见过的meta-task时,也能较好地进行分类。图1展示的是一个2-way5-shot的示例,可以看到metatraining阶段构建了一系列meta-task来让模型学习如何根据supportset预测batchset中的样本的标签;metatesting阶段的输入数据的形式与训练阶段一致(2-way5-shot),但是会在全新的类别上构建supportset和batch。▲图1:Few-shotLearning示例在图像领域的研究现状早期的Few-shotLearning算法研究多集中在图像领域,如图2所示,Few-shotLearning模型大致可分为三类:ModeBased,MetricBased和OptimizationBased。▲图2:Few-shotLearning模型分类其中ModelBased方法旨在通过模型结构的设计快速在少量样本上更新参数,直接建立输入x和预测值P的映射函数;MetricBased方法通过度量batch集中的样本和support集中样本的距离,借助最近邻的思想完成分类;OptimizationBased方法认为普通的梯度下降方法难以在few-shot场景下拟合,因此通过调整优化方法来完成小样本分类的任务。ModelBased方法Santoro等人[3]提出使用记忆增强的方法来解决Few-shotLearning任务。基于记忆的神经网络方法早在年被证明可以用于meta-learning。他们通过权重更新来调节bias,并且通过学习将表达快速缓存到记忆中来调节输出。然而,利用循环神经网络的内部记忆单元无法扩展到需要对大量新信息进行编码的新任务上。因此,需要让存储在记忆中的表达既要稳定又要是元素粒度访问的,前者是说当需要时就能可靠地访问,后者是说可选择性地访问相关的信息;另外,参数数量不能被内存的大小束缚。神经图灵机(NTMs)和记忆网络就符合这种必要条件。文章基于神经网络图灵机(NTMs)的思想,因为NTMs能通过外部存储(externalmemory)进行短时记忆,并能通过缓慢权值更新来进行长时记忆,NTMs可以学习将表达存入记忆的策略,并如何用这些表达来进行预测。由此,文章方法可以快速准确地预测那些只出现过一次的数据。文章基于LSTM等RNN的模型,将数据看成序列来训练,在测试时输入新的类的样本进行分类。具体地,在t时刻,模型输入,也就是在当前时刻预测输入样本的类别,并在下一时刻给出真实的label,并且添加了externalmemory存储上一次的x输入,这使得下一次输入后进行反向传播时,可以让y(label)和x建立联系,使得之后的x能够通过外部记忆获取相关图像进行比对来实现更好的预测。▲图3:MemoryAugmentedModelMetaNetwork[12]的快速泛化能力源自其“快速权重”的机制,在训练过程中产生的梯度被用来作为快速权重的生成。模型包含一个metalearner和一个baselearner,metalearner用于学习metatask之间的泛化信息,并使用memory机制保存这种信息,baselearner用于快速适应新的task,并和metalearner交互产生预测输出。MetricBased方法如果在Few-shotLearning的任务中去训练普通的基于cross-entropy的神经网络分类器,那么几乎肯定是会过拟合,因为神经网络分类器中有数以万计的参数需要优化。相反,很多非参数化的方法(最近邻、K-近邻、Kmeans)是不需要优化参数的,因此可以在meta-learning的框架下构造一种可以端到端训练的few-shot分类器。该方法是对样本间距离分布进行建模,使得同类样本靠近,异类样本远离。下面介绍相关的方法。如图4所示,孪生网络(SiameseNetwork)[4]通过有监督的方式训练孪生网络来学习,然后重用网络所提取的特征进行one/few-shot学习。▲图4:SiameseNetwork具体的网络是一个双路的神经网络,训练时,通过组合的方式构造不同的成对样本,输入网络进行训练,在最上层通过样本对的距离判断他们是否属于同一个类,并产生对应的概率分布。在预测阶段,孪生网络处理测试样本和支撑集之间每一个样本对,最终预测结果为支撑集上概率最高的类别。相比孪生网络,匹配网络(MatchNetwork)[2]为支撑集和Batch集构建不同的编码器,最终分类器的输出是支撑集样本和query之间预测值的加权求和。如图5所示,该文章也是在不改变网络模型的前提下能对未知类别生成标签,其主要创新体现在建模过程和训练过程上。对于建模过程的创新,文章提出了基于memory和attention的matchingnets,使得可以快速学习。对于训练过程的创新,文章基于传统机器学习的一个原则,即训练和测试是要在同样条件下进行的,提出在训练的时候不断地让网络只看每一类的少量样本,这将和测试的过程是一致的。具体地,它显式的定义一个基于支撑集的分类器,对于一个新的数据,其分类概率由与支撑集S之间的距离度量得出:其中a是基于距离度量的attentionscore:进一步,支撑集样本embedding模型g能继续优化,并且支撑集样本应该可以用来修改测试样本的embedding模型f。这个可以通过如下两个方面来解决,即:1)基于双向LSTM学习训练集的embedding,使得每个支撑样本的embedding是其它训练样本的函数;2)基于attention-LSTM来对测试样本embedding,使得每个Query样本的embedding是支撑集embedding的函数。文章称其为FCE(fully-conditionalembedding)。▲图5:MatchNetwork原型网络(PrototypeNetwork)[5]基于这样的想法:每个类别都存在一个原型表达,该类的原型是supportset在embedding空间中的均值。然后,分类问题变成在embedding空间中的最近邻。如图6所示,c1、c2、c3分别是三个类别的均值中心(称Prototype),将测试样本x进行embedding后,与这3个中心进行距离计算,从而获得x的类别。▲图6:PrototypeNetwork文章采用在Bregman散度下的指数族分布的混合密度估计,文章在训练时采用相对测试时更多的类别数,即训练时每个episodes采用20个类(20way),而测试对在5个类(5way)中进行,其效果相对训练时也采用5way的提升了2.5个百分点。前面介绍的几个网络结构在最终的距离度量上都使用了固定的度量方式,如cosine,欧式距离等,这种模型结构下所有的学习过程都发生在样本的embedding阶段。而RelationNetwork[6]认为度量方式也是网络中非常重要的一环,需要对其进行建模,所以该网络不满足单一且固定的距离度量方式,而是训练一个网络来学习(例如CNN)距离的度量方式,在loss方面也有所改变,考虑到relationnetwork更多的


转载请注明地址:http://www.baixiniua.com/bxnzqzt/22600.html