业务数据全用上也喂不饱AI?试试这个小样本学习工具包( 二 )


安装完成后 , 可以通过以下的指令快速测试安装是否成功:
业务数据全用上也喂不饱AI?试试这个小样本学习工具包
文章图片
数据集
我们的项目提供了计算机视觉数据集(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目录下 , 包主体代码会自动解压并处理数据文件:
业务数据全用上也喂不饱AI?试试这个小样本学习工具包
文章图片
用户也可以将原始数据文件放置在任意一个有权限的目录下 , 并将该目录通过root参数传递给数据集 。
在小样本学习的框架下 , 数据集常被划分为Nways(一个任务中有N种类别的样本待分类)、Kshots(K个有标签的样本用于模型更新)和Qquerypoints(Q个有标签的样本用于模型效果的评估或进一步更新) , 因而本项目在数据集类中预置了随机任务集划分:
而在关系分类数据集(RCDataset)中 , 返回值的类型有text(文本)和numpy(numpy数组)两种可选项 , 若选择numpy则需要为数据集传入一种初始化器:
业务数据全用上也喂不饱AI?试试这个小样本学习工具包
文章图片
此外 , 用户可以直接通过继承CVDataset和RCDataset构建自己的数据集:根据用户自己的原始数据文件格式 , 在新的数据集类中实现获取元素、数据集长度、划分随机任务集三个接口 , 即可构建新的小样本数据集 。 用户也可以直接效仿本项目给出的原始数据格式 , 将新数据的数据格式调整后 , 直接通过传递root参数给已有的数据集 , 从而更便捷地构建新数据集 。
经典小样本方法的高层次接口
我们的项目在paddlefsl.model_zoo中提供了五种经典的小样本方法的高层次接口(MAML,ANIL,ProtoNet,RelationNet,Siamese) , 以及三种小样本NLP方法的直接实现(PET[16],P-Tuning[17],EFL[18]) 。
MAML(Model-AgnosticMeta-Learning)是一种经典的 , 可应用于任何使用梯度下降训练的模型 , 并可以适用于包括分类、回归、强化学习等多种任务的小样本学习方法 。 MAML不引入新的模块 , 仅使用先验知识调整目标模型的参数 , 使之具备出色的泛化性能 , 可以在很有限的几步梯度下降之后快速学习适应新任务[10] 。
ANIL(AlmostNoInnerLoop)是一种针对MAML算法的分析与改进 。 MAML算法对于目标模型的参数在外层循环(outerloop)与内层循环(innerloop)都进行了调整 , 而ANIL则在内层循环固定了模型的主体部分参数 , 仅对最后一层进行微调(fine-tune) 。 该方法使用更少的计算开销得到了与MAML同样好的效果 , 并同时证明了MAML的方法让模型取得了特征复用(featurereuse)的效果[11] 。
ProtoNet(PrototypicalNetworks)是一种更为经典的、简单有效的小样本方法 。 它利用极少的带标签样本 , 让模型学得另一个参数空间的原型特征(prototype) , 然后比对待分类样本的原型特征和已知类别原型特征的距离 , 从而做出分类决策 。 该方法思路简单 , 计算复杂度低 , 且在分类问题上有着非常不错的表现 , 并且可以延伸至零样本学习(zero-shotlearning)[12] 。
RelationNet(RelationNetwork)是一种在ProtoNet基础上的提升改进 。 在使用目标模型学习到另一个参数空间的原型特征后 , 该方法增加了一个关系网络(relationnetwork)用以专门学习比较待分类样本原型特征和已知类别原型特征的相似性 , 而不需要重新调整已知网络[13] 。