Auto Byte

专注未来出行及智能汽车科技

微信扫一扫获取更多资讯

Science AI

关注人工智能与其他前沿技术、基础学科的交叉研究与融合发展

微信扫一扫获取更多资讯

机器之心编辑部专栏

基于PyTorch,集合17种方法,南京大学等提出小样本算法库LibFewShot

近日,南京大学推理与学习研究组(Reasoning and Learning Research Group, R&L Group)联合澳大利亚伍伦贡大学、美国罗彻斯特大学开源了一个小样本学习算法库 LibFewShot。该库包含了 17 个 2017 年到 2020 年具有代表性的小样本学习算法,为小样本学习领域中算法对比采用统一框架、统一设置、实现公平对比等提供便利。关于 LibFewShot 的文章已经发布在 arXiv。


图片


  • 论文链接:https://arxiv.org/abs/2109.04898

  • Github 链接:https://github.com/RL-VIG/LibFewShot


近年来,小样本学习,特别是小样本图像分类问题引起了学界越来越多的关注。最近的一些研究表明,许多通用的技术或者技巧,如数据增强、预训练、知识蒸馏和自监督可能会极大地提高小样本学习方法的性能。此外,不同的算法可能由于使用不同的深度学习框架,不同的训练方式,不同的嵌入网络,甚至不同的输入图像大小,使得对这些算法进行公平对比变得困难,而且初学者也往往难以复现相关算法。

为了解决这些问题,我们提出了一个统一的小样本学习算法库 LibFewShot,该库基于 PyTorch 深度学习框架,统一重新实现了 17 种小样本学习方法。此外,基于 LibFewShot 提供了基于四层卷积、ResNet12、ResNet18 这三种 backbone 在 miniImageNet、tieredImageNet 两个数据集上的评估结果以及在 CUB-Birds、StanfordDog、StanfordCar 三个数据集上的跨域结果,用以综合评估不同算法的效果。

另外,鉴于一些最新工作开始重新思考 meta 或 episodic 训练机制的必要性,我们也在这个方向上,基于 LibFewshot 框架进行了一些探索和研究,并从实验结果中发现 meta 或 episodic 训练机制还是有效的,特别是在与预训练相结合时,这样的训练机制仍然能够显著提升模型的表现。我们希望 LibFewShot 不仅能够降低小样本学习的使用门槛,还能够消除一些常用深度学习技巧的影响,以促进小样本学习领域的发展。

小样本总览

小样本任务通常包含两部分数据,一部分是用来学习的有标签的支撑集(support set),另一部分是待分类的无标签的查询集(query set)。为了获得对每个任务快速学习的能力,通常还有一个大的辅助集(auxiliary set),通常支撑集和查询集的实际类别是一致的,而辅助集的类别和它们是不相交的。小样本学习中 「小」 的概念来自于支撑集,支撑集有 C 类图像,每类图像有 K 张,称为 C-way K-shot 小样本问题,C 通常取 5 或 10,K 通常取 1 或者 5。小样本学习任务的重点是如何通过在辅助集上的进行学习,使得在面对新的任务时,仅仅通过支撑集的少量样本,就能够完成对查询集的识别和分类。

根据在辅助集上以及支撑集上训练策略的不同,将小样本学习分为三类,分别是基于微调的方法、基于元学习的方法、基于度量的方法,图 1 中给出了三类方法的代表性框架图。

  • 基于微调的方法:基于微调的方法和迁移学习有着相似的过程,一般可分为使用辅助集的预训练阶段和使用支撑集的微调阶段。代表方法有 Baseline[1],Baseline++[1],RFS[2],SKD[3]等;

  • 基于元学习的方法:基于元学习的方法在训练阶段采用元训练的方式来在辅助集上进行训练,通常采用二阶段的优化,一个阶段是支撑集更新基学习器,另一阶段用查询集更新元学习器、适应新的任务。代表方法有 MAML[4],R2D2[5]等;

  • 基于度量的方法:基于度量的方法通常在辅助集上的训练采用的是 episodic training 的方式,即在这个阶段从辅助集中采样相似的小样本学习任务,使用大量相似任务来训练网络,使得网络能够学习到快速适应新任务的能力。代表方法有 ProtoNet[6],RelationNet[7],DN4[8]等。





图片

图 1. 小样本学习方法分类,(a) 基于微调的方法;(b) 基于元学习的方法;(c) 基于度量的方法.

复现代码

基于以上三个种类的分类,LibFewShot 实现了 17 个具有代表性的算法,从上到下依次是基于微调的方法、基于元学习的方法和基于度量的方法,复现结果如下:

图片


此外,由于各个方法所使用的技巧、网络结构等存在一定的差别。为了公平比较不同方法在各个数据集上的表现,LibFewShot 统一了一些变量,在 miniImageNet 和 tieredImageNet 上做了如下实验:

图片


从表中可以看出,RFS 和 SKD 这样的基于微调的方法,表现要明显优于其他的方法,但是也用了更多的技巧,例如,预训练(pre-train)、自监督(self-supervised,SS)和知识蒸馏(knowledge distillation,KD)都能够明显提高模型的表现。当基于元学习的方法和基于度量学习的方法在使用了预训练等技巧后,如 MTL 和 CAN,表现也接近于 RFS 和 SKD。由此可见,预训练加上 episodic training 的微调是一种很有潜力的训练方法。

另外,论文中也比较了这些方法在 ResNet12 网络结构下的跨域表现,结果如下表所示:

图片


从表中可以看出,从 miniImageNet 和 tieredImageNet 数据集泛化到 StanfordDog 和 CUB-Birds 数据集是比较简单的,因为它们都是相似的自然图像数据集。而当迁移到 StanfordCar 数据集上,所有方法的表现都会急剧下降,这表明,当前 SOTA 的方法并不能很好处理域偏移较大的跨域情况。

讨论

通过对比以上实验结果,我们提出了两个问题:(1)在训练阶段,使用支撑集进行 episodic training 是否真的不重要,(2)在测试阶段,使用测试任务的支撑集进行微调是否真的对小样本测试很有效。为了回答这两个问题,我们选取了具有代表性的 RFS、ProtoNet 以及 MTL 做了对比实验。对于问题 1,我们选取了 ProtoNet 和 MTL 两个方法,这两个方法的结果从上述表格中结果来看都是不如 RFS 的。但是当使用了 RFS 的预训练模型,并在此基础上使用 episodic training 微调预训练网络之后,从图 2 柱状图可以看出,两种方法的结果都要比 RFS 高上许多。因此,我们认为训练阶段的 episodic training 还是有必要的,特别是在结合预训练的情况下,能够更进一步提升模型的性能。对于问题 2,我们发现如果使用和 RFS 相同预训练的网络,在测试时直接采用使用欧氏距离的 ProtoNet,RFS 的效果的确是更好一些的。但是当 ProtoNet 使用了 L2 归一化后,即改成使用余弦距离后,结果反而要比 RFS 高,因此得出一个有意思的结论:在测试阶段进行微调可能并没有那么重要,相反 L2 归一化可能起了更加重要的作用。

图片

图 2. ProtoNet-cosine 和 MTL-protonet 在预训练模型基础上进行微调的结果

LibFewShot 是一个集成了多个代表性小样本学习方法的统一框架,为小样本学习领域的方法进行公平的实验可以带来巨大的便利。同时,我们也对小样本学习中预训练和 episodic training 的作用进行了深入的思考,肯定了预训练的价值,也证明了 episodic training 的必要性,同时也强调了 L2 归一化在小样本学习中的作用。

参考文献:
[1] Chen, Wei-Yu, Yen-Cheng Liu, Zsolt Kira, Yu-Chiang Frank Wang, and Jia-Bin Huang. "A Closer Look at Few-shot Classification." In International Conference on Learning Representations. 2018.
[2] Tian, Yonglong, Yue Wang, Dilip Krishnan, Joshua B. Tenenbaum, and Phillip Isola. "Rethinking few-shot image classification: a good embedding is all you need?" In European Conference on Computer Vision 2020, Part XIV 16, pp. 266-282. 2020.
[3] Rajasegaran, Jathushan, Salman Khan, Munawar Hayat, Fahad Shahbaz Khan, and Mubarak Shah. "Self-supervised knowledge distillation for few-shot learning." arXiv preprint arXiv:2006.09785. 2020.
[4] Finn, Chelsea, Pieter Abbeel, and Sergey Levine. "Model-agnostic meta-learning for fast adaptation of deep networks." In International Conference on Machine Learning, pp. 1126-1135. PMLR, 2017.
[5] Bertinetto, Luca, Joao F. Henriques, Philip Torr, and Andrea Vedaldi. "Meta-learning with differentiable closed-form solvers." In International Conference on Learning Representations. 2018.
[6] Snell, Jake, Kevin Swersky, and Richard Zemel. "Prototypical Networks for Few-shot Learning." Advances in Neural Information Processing Systems 30 (2017): 4077-4087. 2017.
[7] Sung, Flood, Yongxin Yang, Li Zhang, Tao Xiang, Philip HS Torr, and Timothy M. Hospedales. "Learning to compare: Relation network for few-shot learning." In Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition, pp. 1199-1208. 2018.
[8] Li, Wenbin, Lei Wang, Jinglin Xu, Jing Huo, Yang Gao, and Jiebo Luo. "Revisiting local descriptor based image-to-class measure for few-shot learning." In Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition, pp. 7260-7268. 2019.
理论南京大学PyTorch
1
相关数据
深度学习技术

深度学习(deep learning)是机器学习的分支,是一种试图使用包含复杂结构或由多重非线性变换构成的多个处理层对数据进行高层抽象的算法。 深度学习是机器学习中一种基于对数据进行表征学习的算法,至今已有数种深度学习框架,如卷积神经网络和深度置信网络和递归神经网络等已被应用在计算机视觉、语音识别、自然语言处理、音频识别与生物信息学等领域并获取了极好的效果。

元学习技术

元学习是机器学习的一个子领域,是将自动学习算法应用于机器学习实验的元数据上。现在的 AI 系统可以通过大量时间和经验从头学习一项复杂技能。但是,我们如果想使智能体掌握多种技能、适应多种环境,则不应该从头开始在每一个环境中训练每一项技能,而是需要智能体通过对以往经验的再利用来学习如何学习多项新任务,因此我们不应该独立地训练每一个新任务。这种学习如何学习的方法,又叫元学习(meta-learning),是通往可持续学习多项新任务的多面智能体的必经之路。

度量学习技术

即学习一个度量空间,在该空间中的学习异常高效,这种方法多用于小样本分类。直观来看,如果我们的目标是从少量样本图像中学习,那么一个简单的方法就是对比你想进行分类的图像和已有的样本图像。但是,正如你可能想到的那样,在像素空间里进行图像对比的效果并不好。不过,你可以训练一个 Siamese 网络或在学习的度量空间里进行图像对比。与前一个方法类似,元学习通过梯度下降(或者其他神经网络优化器)来进行,而学习者对应对比机制,即在元学习度量空间里对比最近邻。这些方法用于小样本分类时效果很好,不过度量学习方法的效果尚未在回归或强化学习等其他元学习领域中验证。

迁移学习技术

迁移学习是一种机器学习方法,就是把为任务 A 开发的模型作为初始点,重新使用在为任务 B 开发模型的过程中。迁移学习是通过从已学习的相关任务中转移知识来改进学习的新任务,虽然大多数机器学习算法都是为了解决单个任务而设计的,但是促进迁移学习的算法的开发是机器学习社区持续关注的话题。 迁移学习对人类来说很常见,例如,我们可能会发现学习识别苹果可能有助于识别梨,或者学习弹奏电子琴可能有助于学习钢琴。

查询技术

一般来说,查询是询问的一种形式。它在不同的学科里涵义有所不同。在信息检索领域,查询指的是数据库和信息系统对信息检索的精确要求

知识蒸馏技术

Hinton 的工作引入了知识蒸馏压缩框架,即通过遵循“学生-教师”的范式减少深度网络的训练量,这种“学生-教师”的范式,即通过软化“教师”的输出而惩罚“学生”。为了完成这一点,学生学要训练以预测教师的输出,即真实的分类标签。这种方法十分简单,但它同样在各种图像分类任务中表现出较好的结果。

图像分类技术

图像分类,根据各自在图像信息中所反映的不同特征,把不同类别的目标区分开来的图像处理方法。它利用计算机对图像进行定量分析,把图像或图像中的每个像元或区域划归为若干个类别中的某一种,以代替人的视觉判读。

小样本学习技术

人类非常擅长通过极少量的样本识别一个新物体,比如小孩子只需要书中的一些图片就可以认识什么是“斑马”,什么是“犀牛”。在人类的快速学习能力的启发下,研究人员希望机器学习模型在学习了一定类别的大量数据后,对于新的类别,只需要少量的样本就能快速学习,这就是 Few-shot Learning 要解决的问题。

推荐文章
暂无评论
暂无评论~