MAML小样本学习算法解读及代码实现bat

MAML元学习算法是小样本学习领域中的经典方法,本文将重点讲解该方法的理论和飞桨代码实现。本章首先对小样本学习的问题定义、评价标准和常用数据集进行介绍,以期读者对本领域概况获得基本了解。

问题定义

假设数据集中包含个类别,将这个数据集按类别划分为不相交的两部分,一部分称为基础集(Baseset),一部分称为新颖集(NovelSet),其中,,且。模型在基础集上离线训练,以获得所需的先验知识和特征提取能力。在基础集上的具体训练方式,因算法的不同而异。对新颖集随机采样N个类别,每个类别采样K个样本,这个带标签的样本构成支持集(Supportset)S,小样本学习任务便是在这个很小的数据集S上进行,称为N-wayK-shot任务。此外,对这N个类别再采样个无标签样本构成查询集Q,在Q上进行小样本模型的分类测试。通常,N=5,K=1或5。

本文所述的MAML算法,是在基础集上以相同方式构建了若干个N-wayK-shot训练任务,进行离线训练。这种训练方式是一种元学习的训练方法,保持了与测试过程相同的任务构建流程,能够最大程度避免协变量偏移。

为了更清晰地展示数据集的划分方法,这里以miniImageNet数据集[1]为例,进行图形化展示,如下图所示。该数据集共有100个类别,每个类别各有600张图像样本。

评价标准

在600轮(或1000轮等等)不同的N-wayK-shot任务上,分别进行小样本学习,得到在查询集上的top-1分类准确率。最终的评估指标是这600个任务上的平均准确率和置信区间。

常用数据集

miniImageNet[1]:由OriolVinyals等在MatchingNetworks[1]中首次提出。在MatchingNetworks中,作者提出对ILSVRC-12中的类别和样本进行抽取(参见其AppendixB),形成了一个数据子集,将其命名为miniImageNet,包含100类共60000张彩色图片,其中每类有600个样本,图像大小为84×84。随后,普林斯顿大学的博士生SachinRavi[2]将该数据集随机划分为64个基础集类,16个验证集类和20个新颖集类。

下载链接:

tieredImageNet[3]:同样是ILSVRC-12的子集,包含ImageNet中层次结构较高级别的34个大类(category),每个大类包含10~30个小类(class)。该数据集中各子集的划分方法如下表所示。

FC100[4]:即Fewshot-CIFAR100,截取自CIFAR100数据集,共包含100个类别,每个类别600张图片,图像大小为32×32×3。其中基础集60个类别,验证集和新颖集各60个类别。

Omniglot[5]:包含50个不同的字母表,每个字母表中的字母各包含20个手写字符样本,每一个手写样本都是不同人通过亚马逊MechanicalTurk在线绘制的。Omniglot数据集的多样性强于MNIST数据集,常用于小样本识别任务。

CUB[6]:该数据集是一个细粒度数据集,全部由鸟类图片构成,共包含200个类别,其中100个类别为基础集,50个类别为验证集,50个类别为新颖集。

MAML模型算法

模型无关元学习(Model-AgnosticMeta-Learning,简称MAML)算法[7],其模型无关体现在,能够与任何使用了梯度下降法的模型相兼容,广泛应用于各种不同的机器学习任务,包括图像分类、目标检测、强化学习等。元学习的目标,是在大量不同的任务上训练一个模型,使其能够使用极少量的训练数据(即小样本),进行极少量的梯度下降步数,就能够迅速适应新任务,解决新问题。

模型方法

MAML算法的训练目的是获得一组最优的初始化参数,使得模型能够快速适配(fastadaptation)新任务。作者认为,某些特征比另一些特征更容易迁移到其他任务中,这些特征具有跨任务间的通用性。既然小样本学习任务只提供少量标记样本,模型在小样本上多轮迭代训练后必然导致过拟合,那么就应该尽可能使模型只迭代训练几步。这就要求模型已经具有广泛适配于各种任务的初始化参数,这组参数应包含模型在基础集上所学到的先验知识。

假设模型可以用函数θ表示,θ为模型参数。适配新任务时,模型通过梯度下降法迭代一步(或若干步),参数θ更新为θ,即θθαθ

其中,α为超参数,用于控制适配过程的学习率。

在多个不同任务上,模型通过计算θ的损失来评估模型参数θ。具体地,元学习的目标是获得一组参数θ,使得模型在任务分布上,能够快速适配所有任务,使得损失最小。用公式表达如下:

通过随机梯度下降(SGD)法,模型参数θ按照以下公式进行更新:

这里需要注意,我们最终要优化的参数是θ,但计算损失函数却是在微调后的参数θ上进行,训练过程可通过下图示意。

由于上述元学习算法在损失计算和优化参数方面的特点,训练包括了两层循环。外层循环是元学习过程,通过在任务分布上采样一组任务,计算在这组任务上的损失函数;内层循环是微调过程,即针对每一个任务,迭代一次(或若干次)梯度下降,将参数进行更新为θ,然后计算在参数为θ时的损失。梯度反向传递时,需要跨越两层循环传递到初始参数θ上,完成元学习的参数更新。

完整的MAML算法如下图所示。

实验结果

在Omniglot和miniImageNet数据集上,文献给出的实验结果如下图所示。

飞桨实现

本小节给出本人在“飞桨论文复现挑战赛(第三期)”中完成的部分关键代码。完整项目代码已在GitHub和AIStudio上开源,欢迎读者star、fork。链接如下:

GitHub地址:

AIStudio地址:

关键代码实现

该模型比较特殊,梯度需要穿过内外两层循环传递到原始参数。如果基于nn.Layer类进行常规的模型搭建,在内循环更新梯度时,模型参数会被覆盖,导致初始参数丢失。得益于飞桨动态图模式灵活组网的特点,本项目将模型参数和算子分离设计,在外循环中保存原始参数副本θ;内循环中通过该副本更新参数,计算损失函数。计算图通过动态图模式自动构建,最终将梯度反传回原始参数θ。

MAML类的代码如下:

元学习器类的代码如下:

复现结果

本项目在Omniglot数据集上进行了实验复现,其复现的结果如下表所示:

小结

参考文献

[1]VinyalsO,BlundellC,LillicrapT,etal.MatchingNetworksforOneShotLearning[J],2016.

[2]RaviS,LarochelleH.Optimizationasamodelforfew-shotlearning[J],2016.

[3]RenM,TriantafillouE,RaviS,etal.Meta-learningforsemi-supervisedfew-shotclassification[J].arXivpreprintarXiv:1803.00676,2018.

[4]OreshkinBN,RodriguezP,LacosteA.Tadam:Taskdependentadaptivemetricforimprovedfew-shotlearning[J].arXivpreprintarXiv:1805.10123,2018.

[5]LakeB,SalakhutdinovR,GrossJ,etal.Oneshotlearningofsimplevisualconcepts[C].Proceedingsoftheannualmeetingofthecognitivesciencesociety,2011.

[6]WahC,BransonS,WelinderP,etal.Thecaltech-ucsdbirds-200-2011dataset[J],2011.

[7]FinnC,AbbeelP,LevineS.Model-agnosticmeta-learningforfastadaptationofdeepnetworks[C].InternationalConferenceonMachineLearning,2017:1126-1135.

THE END
1.计算机毕业设计推荐基于推荐算法的在线课程推荐系统的设计与实现然而,面对海量的在线课程资源,如何帮助用户快速、准确地找到适合自己的课程,成为了一个亟待解决的问题。基于此,本研究课题“基于推荐算法的在线课程推荐系统的设计与实现”应运而生,旨在为用户提供个性化的课程推荐服务,提高在线学习的效率和质量。 二、现有解决方案存在的问题 目前,虽然已有一些在线课程平台采用推荐系统https://blog.csdn.net/2301_79595671/article/details/144328343
2.python初中作业代码fjfdh的技术博客python初中作业代码 1.课堂例子: 01初识python #!/usr/bin/env python # -*- coding: utf-8 -*- # print('hello world!') ''' print('hello world!') ''' name = 'lyj' print(name) # id,type,value x = 10 y = 10 ''' python小计数池(python优化机制):https://blog.51cto.com/u_14405/12756667
3.深度学习手写代码汇总(建议收藏,面试用)腾讯云开发者社区我再丢!算法必问! 代码语言:javascript 复制 classDropout():""" 在训练时随机将部分feature置为0""" def__init__(self,p):"""parameters:p:保留比例""" self.p=p def__call__(self,X,mode):"""mode:是在训练阶段还是测试阶段.train 或者 test"""returnself.forward(X,mode)defforward(self,X,mohttps://cloud.tencent.com/developer/article/1872945
4.机器学习探究Q5. 离线与在线学习 Q-Learning可以在线进行,即智能体在实际探索环境的同时更新Q值;也可以离线进行,即智能体从一个已经收集的经验数据集(称为回放缓冲区)中学习。离线学习有助于打破数据之间的时间相关性,提高学习的稳定性。 6. 应用 Q-Learning算法已经被成功应用于多种领域,包括游戏、机器人控制、资源管理等。它https://developer.aliyun.com/article/1496910
5.学习:常用算法原理及编程实战pdf高清版+源代码[205MB]电子书下☉ 如果遇到什么问题,请评论留言,我们定会解决问题,谢谢大家支持! ☉ 本站提供的一些商业软件是供学习研究之用,如用于商业用途,请购买正版。 ☉ 本站提供的scikit-learn机器学习:常用算法原理及编程实战 pdf高清版+源代码[205MB]资源来源互联网,版权归该下载资源的合法拥有者所有。https://www.jb51.net/books/661729.html
6.书单豆瓣高分&全网热评的算法神作虽然书中的代码示例都是用Java或Python来实现的,但算法思想是相通的。在实现代码时,尽可能规避了语言的特殊语法和工具类,相信其他语言的开发者也不难看明白。 02 ▊《图解算法小册》 林小浩 著 这是一度霸榜GitHub的算法修炼秘籍 底层逻辑图解+配套在线练习,让算法学习事半功倍! http://www.broadview.com.cn/article/420385
7.七月在线机器学习集训营19 [双11期间2799¥秒杀,24年最新一期新增大模型] 免费试听 随到随学,项目代码课件答疑一应俱全 CV高级小班 第12期 [最好CV课程,一次报名 服务三年] 免费试听 随到随学,项目代码课件答疑一应俱全 推荐高级小班第13期 [腾讯算法大赛和视频号推荐之外新增第5大项目,和GNN/多模态推荐] https://www.julyedu.com/
8.基于深度学习的代码生成方法研究进展?本文系统梳理了当前基于深度学习的代码 生成相关工作, 并将目前基于深度学习的代码生成方法分为三类: 基于代码特征的方法, 结合检索的方法以及 结合后处理的方法. 第一类是指使用深度学习算法利用代码特征进行代码生成的方法, 第二类和第三类方法依 托于第一类方法进行改进. 本文依次对每一类方法的已有研究成果进行了http://arxiv.org/pdf/2303.01056v2
9.GitHub93.6k,李沐大神力荐,这本超好懂的算法教程,被读者称为3. 动画图解超详细,本书对应的项目通过动画图解使得内容清晰易懂、学习曲线平滑,最大程度上引导初学者探索数据结构与算法的原理和本质,把握算法的核心知识。 4. 源代码可一键运行,项目提供了可运行的示例代码,帮助读者在练习中提升编程https://mp.weixin.qq.com/s?__biz=MzUyMDQzNDM3MQ==&mid=2247552729&idx=3&sn=59c3c376f1662cc5d1b7b0929af3cf28&chksm=f8b0b2cca63014a62b8dbb42da85788cee4b2d3a939bd4cdeedea1d83ad24608a948900169e2&scene=27
10.教程:AutoML训练无代码分类模型本教程介绍如何在 Azure 机器学习工作室中使用 Azure 机器学习,通过无代码自动化机器学习 (AutoML) 来训练分类模型。 此分类模型预测某个金融机构的客户是否会认购定期存款产品。 利用自动化 ML,可以自动完成耗时密集型任务。 自动机器学习会快速循环访问算法和超参数的多个组合,以帮助你根据所选的成功指标找到最佳模型https://docs.microsoft.com/zh-cn/azure/machine-learning/tutorial-first-experiment-automated-ml
11.cubestudio开源云原生一站式机器学习/深度学习/大模型AI平台模型训练算子自定义支持算子自定义,通过web界面操作将自定义算法代码镜像,注册为可被他人复用的pipeline算子 模型训练自动学习面向非AI背景的用户提供自动学习服务,用户选择某一个场景之后,上传训练数据即可自动开始训练和模型部署,支持示例automl任务流导入导出 https://github.com/tencentmusic/cube-studio
12.推荐几个算法可视化网站,从此轻松学算法!地址:https://yangez.github.io/btree-js/ Algorithm Visualizer Algorithm Visualizer 是一个可视化代码算法的交互式平台,内含多种算法(回溯、动态规划、贪心等)并进行了可视化动画呈现,让学习算法和数据结构更加直观。 地址:https://algorithm-visualizer.org/ 目前支持的算法包括回溯法、动态规划、https://m.nowcoder.com/feed/main/detail/6ecdab56f00b44bfacf3cb854929059e
13.Dotcpp编程(C语言网)编程入门学习训练题库数据结构与算法 算法基础 数据结构基础 理解复杂度概念 时间复杂度的度量方法 程序运行时的内存与地址 编程预备 顺序存储和链式存储 单链表的基本设计(C语言代码实现) 单链表的基本操作及C语言代码实现 双向链表的基本设计(C语言代码实现) 开发板选择 前期准备 https://www.dotcpp.com/
14.轻松看懂机器学习十大常用算法西南石油大学轻松看懂机器学习十大常用算法 通过本篇文章大家可以对ML的常用算法形成常识性的认识。没有代码,没有复杂的理论推导,仅是图解,介绍这些算法是什么以及如何应用(例子主要是分类问题)。以后有机会再对单个算法做深入地解析。 一、决策树 二、随机森林算法 三、逻辑回归https://www.swpu.edu.cn/eelab/info/1090/2296.htm
15.中国大学MOOC中国大学MOOC(慕课) 是爱课程网携手网易云课堂打造的在线学习平台,每一个有提升愿望的人,都可以在这里学习中国优质的大学课程,学完还能获得认证证书。中国大学MOOC是国内优质的中文MOOC学习平台,拥有众多985高校的大学课程,与名师零距离。http://icourse163.org/
16.算法服务平台算法模型服务平台是一个面向企业用户的数字化服务平台,旨在为用户提供高效、先进的算法模型。它以数据为核心,利用机器学习、深度学习等前沿技术,为用户提供行业定制化的算法模型解决方案。 应用场景 用户情感分析 使用情感分析模型,对文本进行情感分析,用于市场调研,客户服务和社交媒体监测。 https://wakedata.com/wakeAI.html
17.科技创新2030—“新一代人工智能”重大项目2020年度第一批项目语义及知识等多层次的人机交互与协同;建立人机协同的多模态感知、交互意图理解的计算模型,实现人机一致性的情境理解与预测、决策与控制;研究可解释的 自主决策与可解译的决策过程模型与算法,形成人机冲突机理分析及人机混合决策的在线评估理论与方法;构建人机共驾的云学习平台和支撑环境,实现安全、舒适、敏捷灵活的智能https://kjj.sx.gov.cn/art/2020/1/6/art_1479736_41450866.html