本文经AI新媒体量子位(公众号ID:QbitAI)授权转载,转载请联系出处。机器学习在数据密集型应用中取得了优异的效果,但在数据集较小的场景中,大多数机器学习算法的效果将受到严重限制[1]。在计算机视觉、自然语言处理等领域,从最初在深度学习中大放异彩的图像分类和文本分类,到进一步的图像生成和文本关系预测,机器学习算法的大部分成果都是基于大量数据驱动的训练。在算法之上。然而,大多数领域都难以获得高质量的标注数据,这限制了很多机器学习算法在相应场景中的应用能力。 在此背景下,小样本学习(FSL)的提出将解决数据集规模严重受限条件下的机器学习应用问题。小样本学习方法可以在利用先验知识的前提下只使用极少量的监督样本,使模型通过极少的更新步骤快速提高泛化性能,从而应用于新的相关任务[1].近年来,小样本学习在计算机视觉、自然语言处理、人机交互、知识图谱甚至生物计算等领域得到了广泛应用。 小样本学习研究者在编码实践过程中通常面临原型实现和方法复现的问题[2]。为了方便Paddle开发者和研究者使用Paddle,方便进行以下操作:将经典的小样本学习方法应用到深度学习模型中,或者使用经典的小样本数据集测试模型和方法,设计新的小样本学习方法,或者构造一个新的小样本数据集来比较各种小样本学习方法在多个数据集上的效果 我们开发了PaddleFSL(PaddletoolkitforFewShotLearning):Paddle-basedsmallsamplelearningtoolkit,旨在减少小样本学习研究和应用的设计和时间成本。PaddleFSL提供底层工具函数和接口,供用户设计新的小样本学习方法或构建新的小样本学习数据集。示例数据集。 项目链接: https://github.com/tata1661/FSL-Mate/tree/master/PaddleFSL 框架概述 PaddleFSL完整项目包括以下部分: 示例示例: 项目 包体(paddlefsl)中高阶小样本算法接口使用示例: python包paddlefsl.backbones的主体: MLP、卷积网络、ResNet等基准模型paddlefsl.datasets: 小样本数据集构建接口,以及众多经典小样本数据集的预处理实现paddlefsl。model_zoo: 高级经典小样本方法实现paddlefsl.task_sampler: 任务集划分:将训练和测试数据划分为N路,K个镜头和Q个查询点paddlefsl.utils: 和环境,输入输出或模型参数相关的工具函数 数据文件(raw_data): 存放原始数据文件的目录,有各经典小样本数据集的介绍和下载地址 test(测试): 包体中各个函数和类的单元测试,也是一个示例文件,供大家使用。另外,在包体的每个对外接口处,我们都提供了详细的注释,包括模块的功能、参数的作用以及使用示例。例子。 在接下来的几章中,我们将从数据集加载到训练完成,逐项介绍PaddleFSL的功能和使用方法。 安装与测试 本项目依赖FlyingPaddle开源框架v2.0或更新版本,需要提前在FlyingPaddle官网安装。 本项目在github上开源,可以直接clonegithub项目,配置环境变量直接使用:本项目同时发布在pypi上,可以通过安装包体(paddlefsl)比较方便的pip,但是这个方法不包含示例示例(examples)、数据文件(raw_data)和测试文件(test): 安装完成后,可以通过使用快速测试是否安装成功以下命令:数据集 我们的项目提供了计算机视觉数据集(CVDataset)和关系分类数据集(RCDataset)两个模板数据集接口,以及继承自CVDataset的六个图像分类数据集(Omniglot[3]、Mini-ImageNet[4]、Tiered-ImageNet[5]],CIFAR-FS[6],FC100[7],CU-Birds[8])和继承自RCDataset(FewRel1.0[9])的关系分类数据集。此外,我们还提供了中文自然语言处理领域的小样本评估基准数据集FewCLUE[15]。 以Mini-ImageNet为例,如果要使用这个数据集,只需要从项目提供的地址下载原始数据文件(mini-imagenet.tar.gz),并将其放在raw_data目录,包的主要代码数据文件会自动解压处理:用户也可以将原始数据文件放在任意授权目录下,通过root参数将该目录传递给dataset。 在小样本学习的框架下,数据集往往分为N路(一个待分类任务中有N类样本)、K张(K个标注样本用于模型更新)和Q查询点(Q标记样本用于模型评估或进一步更新),因此本项目在数据集类中预设了随机任务集划分:而在关系分类数据集(RCDataset)中,返回值的类型有两种选择:文本(文本)和numpy(numpy数组)。如果选择numpy,则需要为数据集传入一个初始化器:另外,用户可以通过继承CVDataset和RCDataset直接构建自己的数据集:根据用户自己的原始数据文件格式新建数据集类,实现了在新数据集类中获取元素、数据集长度、划分随机任务集三个接口,即可构建新的小样本数据集。用户也可以直接模仿本项目提供的原始数据格式,调整新数据的数据格式,将根参数直接传给已有的数据集,从而更方便地构建新的数据集。 经典小样本方法的高级界面 我们的项目在paddlefsl.model_zoo中提供了五种经典的小样本方法(MAML、ANIL、ProtoNet、RelationNet、Siamese)的高级接口,以及三种小样本NLP方法(PET[16]、P-调谐[17]、EFL[18])。 MAML(Model-AgnosticMeta-Learning)是一种经典的小样本学习方法,可以应用于任何使用梯度下降训练的模型,可以应用于包括分类、回归和强化学习在内的各种任务。MAML不引入新的模块,只是利用先验知识调整目标模型的参数,使其具有优异的泛化性能,经过非常有限的几步梯度下降后可以快速学习适应新任务[10]. ANIL(AlmostNoInnerLoop)是对MAML算法的分析和改进。MAML算法在外循环和内循环都调整了目标模型的参数,而ANIL在内循环固定了模型主体部分的参数,只对最后一层进行微调(fine-tune).该方法以较少的计算开销达到了与MAML相同的效果,同时证明了MAML方法可以使模型达到特征重用(featurereuse)的效果[11]。 ProtoNet(PrototypicalNetworks)是一种比较经典、简单有效的小样本方法。它使用极少的标记样本,让模型学习参数空间的另一个原型特征(prototype),然后比较待分类样本的原型特征与已知类别的原型特征的距离,做出分类决策.该方法思想简单,计算复杂度低,在分类问题上有很好的表现,可以推广到零样本学习[12]。 RelationNet(关系网络)是在ProtoNet基础上的改进。该方法在使用目标模型学习另一个参数空间的原型特征后,加入关系网络专门学习比较待分类样本原型特征与已知类别原型特征的相似度,无需重新调整已知网络[13]。 Siamese(SiameseNetworks)是一种早期的小样本学习方法。该方法设计了一个Siamese结构,自然地学习如何更好地衡量输入内容的相似性,从而获得使用极少标记样本预测新样本的能力[14]。 我们在paddlefsl.model_zoo中实现了上述五种算法的完整训练和测试逻辑。以MAML为例,用户只需传入待测数据集和相关算法超参数及训练配置,即可直接开始训练或测试,并自动保存训练后得到的模型参数:另外,我们还提供了示例(examples)提供了PET[16]、P-Tuning[17]和EFL[18]在FewCLUE任务上的实现。FewCLUE的任务会额外依赖paddlenlp包,在实现过程中使用百度中文NLP预训练模型ERNIE1.0,并报告三种算法的效果。 我们使用本项目实现的经典算法的高层接口,在所有数据集上测试效果,并与原论文或其他论文的复现效果进行对比。结果表明,我们的实现已经达到了原始论文方法使用其他机器学习框架报告的结果,并且在大多数任务上提高了原始效果。具体结果数据在例子中给出(https://github.com/tata1661/FSL-Mate/tree/master/PaddleFSL/examples) 底层常用工具函数 本项目除了完整的训练和测试实现接口外,还提供了丰富的底层工具函数来实现常见的小样本学习基本操作,如原型特征(prototype)计算、模型克隆(clone)、修复-步长梯度下降等。原型特征的计算和比较是由ProtoNet提出的(如上图),所以这个函数封装在paddlefsl.model_zoo.protonet中,并提供接口get_prototype()。该函数传入所有带标签样本的特征及其对应的标签,返回按标签顺序排列的各类别对应的原型特征。以RelationNet为例:模型克隆和一步梯度下降是MAML及其变体ANIL所依赖的操作。该方法不引入其他模块,仅通过梯度对目标模型进行调整。目标模型的参数会通过外循环和内循环进行两次调整。在内循环中,模型的调整不能直接影响原目标模型的所有参数,而是需要累加多个任务的梯度,最终调整原模型,这就需要保留模型的梯度,和微调的顶层,主要部分的参数在累加后进行调整(如上图)。 因此,我们引入模型克隆(clone)的功能:与机器学习框架中张量的克隆一样,克隆出来的新模型不与原模型共享内存,从而实现独立调整,但是同时与原始模型共享计算图,实现梯度的关联和累加。该函数作为接口clone_model()封装在paddlefsl.utils中:同样在基于梯度的MAML和ANIL方法中,由于模型积累后主体参数梯度的调整与微调的矛盾顶层的,无法微调内层循环直接使用模型的优化器进行梯度下降,而是手动设置梯度下降的固定步长(inner_loop_learning_rate)而不干扰优化器。该功能封装在paddlefsl.utils中,提供了接口gradient_descent():paddlefsl除了提供例如三个底层操作接口外,还提供了更丰富的工具功能。用户可以在源码或示例中查看和体验(https://github.com/tata1661/FSL-Mate/tree/master/PaddleFSL/paddlefsl/utils) 小样本学习资源库PaddleFSL代码集成在小样本学习评论和前沿论文追踪项目FSL-Mate联合开源发布。FSL-Mate项目是一个旨在整合小样本学习研究成果和最新研究进展的资源库。该项目基于王亚庆博士2020年6月发表在ACMComputingSurveys(CSUR)上的评论文章Generalizingfromsmallsamplelearning。几个例子:Asurveyonfew-shotlearningextended。CSUR是计算机领域的权威顶级期刊,JCR1区,核心A*,这篇小样本学习综述是CSUR2019-2021被引用次数最多的论文,也是ESI2021被引用次数最多的论文。我们会继续更新和维护这个仓库,与对小样本学习感兴趣的开发者和研究者携手,共同推动小样本学习的发展。请关注和下载体验! 欢迎点击Github链接学习源码或获取工具包! 项目链接: https://github.com/tata1661/FSL-Mate/tree/master/PaddleFSL (另外链接附上高质量领域理解手册【小样本学习总结】ESI2021高被引论文/CSUR2019-2021高被引论文) 项目作者: 王亚庆,PaddleFSL负责人,Paddle高级开发技术专家(SeniorPPDE)。2019年博士毕业。来自香港科技大学计算机科学与工程系。通过百度爱都计划加入百度研究院商业智能实验室,现任高级研发工程师、研究员。研究方向为机器学习,主要关注小样本学习、稀疏低秩学习、生物计算等方向。目前多篇论文发表在ICML、NeurIPS、WWW、EMNLP、TIP等顶级期刊。参考文献: [1]WangY,YaoQ,KwokJT,NiLM.从几个例子中归纳:对小样本学习的调查[J]。ACM计算调查(CSUR),2020,53(3):1-34. [2]ArnoldSMR、MahajanP、DattaD等。learn2learn:一个用于元学习研究的库[J]。arXivpreprintarXiv:2008.12284,2020. [3]LakeBM,SalakhutdinovR,TenenbaumJB.通过概率程序归纳进行人类水平的概念学习[J].科学,2015,350(6266):1332-1338. [4]VinyalsO,BlundellC,LillicrapT,etal.一次性学习的匹配网络[J].神经信息处理系统进展,2016,29:3630-3638. [5]RenM,TriantafillouE,RaviS,etal.用于半监督少镜头分类的元学习[J]。arXiv预印本arXiv:1803.00676,2018. [6]BertinettoL,HenriquesJF,TorrPHS,etal.具有可微分封闭形式求解器的元学习[J]。arXiv预印本arXiv:1805.08136,2018. [7]OreshkinBN,RodriguezP,LacosteA.Tadam:用于改进少样本学习的任务依赖自适应度量[J]。arXiv预印本arXiv:1805.10123,2018. [8]WahC、BransonS、WelinderP等人。caltech-ucsdbirds-200-2011数据集[J].2011. [9]韩旭,朱红,于鹏,等.Fewrel:具有最先进评估的大规模监督少镜头关系分类数据集[J]。arXivpreprintarXiv:1810.10147,2018. [10]FinnC,AbbeelP,LevineS.Model-agnosticmeta-learningforfastadaptationofdeepnetworks[C]//国际机器学习会议。PMLR,2017:1126-1135. [11]RaghuA,RaghuM,BengioS,etal.快速学习还是特征重用?了解maml的有效性[J].arXivpreprintarXiv:1909.09157,2019. [12]SnellJ,SwerskyK,ZemelRS.小样本学习的原型网络[J].arXiv预印本arXiv:1703.05175,2017. [13]SungF,YangY,ZhangL,etal.Learningtocompare:Relationnetworkforfew-shotlearning[C]//IEEE计算机视觉和模式识别会议论文集。2018:1199-1208. [14]KochG,ZemelR,SalakhutdinovR.Siameseneuralnetworksforone-shotimagerecognition[C]//ICML深度学习研讨会。2015,2. [15]李毅,赵毅,胡斌,等.GlyphCRM:汉字及其字形的双向编码器表示[J]。arXivpreprintarXiv:2107.00395,2021. [16]Liu,Xiao,郑延安,杜正晓,丁明,钱玉杰,杨志林,唐杰。“GPT也能理解。”ArXiv:2103.10385[Cs],March18,2021. [17]Wang,Sinong,HanFang,MadianKhabsa,HanziMao,andHaoMa.“应有尽有的学习者。”ArXiv:2104.14690[Cs],April29,2021. [18]Wang,S.,Fang,H.,Khabsa,M.,Mao,H.,andMa,H.,“EntailmentasFew-Shot学习者”,ArXiv:2001.07676[Cs],2021.
