Model-Agnostic Meta-Learning (MAML) 理解

2023-10-30

  模型不可知元学习(Model-Agnostic Meta-Learning, MAML)的目标是使模型每次的梯度更新更有效、提升模型的学习效率、泛化能力等,它可以被看做一种对模型进行预训练的方法,适用于小样本学习。

  原文:http://proceedings.mlr.press/v70/finn17a/finn17a.pdf

  其它理解可以看:https://zhuanlan.zhihu.com/p/57864886

  看论文中Algorithm 2,在有监督分类任务上进行理解。为了表达更清晰,下面的符号表示与论文算法中的表示不同:

  假设模型$f_\theta$要执行小样本分类任务$\mathcal{T}$,其训练集和测试集分别是$\mathcal{D}_T$和$\mathcal{D}_E$。$\mathcal{D}_T$与$\mathcal{D}_E$都包含$N$个类别,$\mathcal{D}_T$每个类别$K_T$个样本,$\mathcal{D}_E$每个类别$K_E$个样本。

  为了增强模型对任务$\mathcal{T}$的训练效率和泛化能力,MAML使用另一个更大的数据集$\mathcal{D}_M$对模型进行预训练。$\mathcal{D}_M$即为文中Algorithm 2的$p(\mathcal{T})$。

  对于MAML的每次迭代(也就是Algorithm 2第2行),MAML从$\mathcal{D}_M$中随机抽取一批与任务$\mathcal{T}$有相同类别数和样本量的数据集$\{(\mathcal{D}^1_T,\mathcal{D}^1_E),...,(\mathcal{D}^n_T,\mathcal{D}^n_E)\}$。然后模拟任务$\mathcal{T}$使用$\mathcal{D}^i_T$对模型$f_\theta$进行训练并更新参数,得到$n$个更新参数后的模型$\{f_{\theta'_1},...,f_{\theta'_n}\}$。参数更新式子如下:

$\theta'_i=\theta-\alpha\nabla_\theta\mathcal{L}(\theta,\mathcal{D}^i_T),i=1,2,...,n$

  其中$\alpha$为学习率。以上只进行了一次训练,也可以进行多次。在本次MAML迭代中,下面就是MAML对模型$f_\theta$正式的参数更新,即文中Algorithm 2的第10行。MAML的思想是使模型$f_\theta$在不同训练集上进行少量的训练就能对测试集有良好的泛化性能。因此,MAML对$f_\theta$正式的参数更新表达如下:

$\theta=\theta-\beta\nabla_\theta\sum\limits_{i=1}^n\mathcal{L}(\theta'_i,\mathcal{D}^i_E)$

  其中$\beta$为学习率。经过多次以上MAML迭代,模型对于任务$\mathcal{T}$的学习效率和泛化能力得到了有效提升。接下来就是使用MAML预训练的模型$f_\theta^*$,在$\mathcal{D}_T$训练集上进行微调(Fine-tune),以完成任务$\mathcal{T}$的训练。最后使用$\mathcal{D}_E$进行测试。

  需要注意的是,由于上式会计算二重梯度,代码实现中第一次导数的计算与参数更新需要将计算图保留。另外,由于MAML是增强模型对某种任务的适应能力,而不是对单个数据集的性能,所以,$\mathcal{D}_M$无需包含$\mathcal{D}_T$或$\mathcal{D}_E$中的类别,当然包含的话效果更好。比如,你有猫狗二分类任务数据集,但样本量很小,你可以先使用ImageNet对模型进行MAML,然后再使用MAML后的模型进行猫狗分类的微调。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Model-Agnostic Meta-Learning (MAML) 理解 的相关文章

  • LBP算法及其改进算法

    LBP LBP指局部二值模式 英文全称 Local Binary Pattern 是一种用来描述图像局部特征的算子 LBP特征具有灰度不变性和旋转不变性等显著优点 它是由T Ojala M Pietik inen 和 D Harwood在1
  • 第二十五章 Chisel进阶——隐式参数的应用

    用Chisel编写的CPU 比如Rocket Chip RISCV Mini等 都有一个特点 就是可以用一个配置文件来裁剪电路 这利用了Scala的模式匹配 样例类 偏函数 可选值 隐式定义等语法 本章内容就是来为读者详细解释它的工作机制
  • VC++ HBITMAP保存文件

    请先看下面这段代码 BOOL SaveBmp HBITMAP bmp string path FILE f fopen path c str wb if f return 0 BITMAP bmpinfo GetObject bmp siz
  • 既然敢于炮轰C++,那么Linus的C++造诣和编程水平如何呢?

    之前有一篇文章谈到Linux 之父对 C 进行了炮轰 说它是糟糕程序员的垃圾语言 引起了大家的较多讨论 毕竟 我们都知道Linus Torvalds为了Linux内核开发而专门打造的版本控制软件Git已经引起了业界的广泛关注 后来又看到大家
  • MSF令牌窃取

    令牌简介及原理 令牌就是系统的临时密钥 相当于账户名和密码 原来决定是否允许这次请求和判断是属于哪一个用户的 他允许你不提供密码或其他凭证的前提下访问网络和系统资源 令牌最大的特点就是随机性 不可预测 一般黑客或软件无法猜测出来 令牌有很多
  • Docker 镜像和容器的导入导出及常用命令

    作者 微枫Micromaple 来源 CSDN博客 Docker 镜像和容器的导入导出 1 1 镜像的导入导出 1 1 1 镜像的保存 通过镜像ID保存 方式一 docker save image id gt image save tar
  • Redis数据迁移:方法二AOF

    启动2个实例 开启AOF备份 源实例 127 0 0 1 7000 目标实例 127 0 0 1 8000 127 0 0 1 7000 中有k1 k100 一共100个key 文件目录如下 7000 conf配置如下 standalone
  • 计算机用户帐户域怎么查找,win7计算机域怎么查?小编教你查看计算机域、工作机组的方法...

    win7计算机域怎么查 当我们在同一个工作机组的情况下我们可以互相访问传输文件 非常方便 但是有的用户的工作机组或者域不同导致无法正常使用局域网的现象 这个时候我们就可以通过查看这些计算机使用的域工作机组是否一致 在 域 模式下 至少有一台
  • 突破50亿美元的想象:RPA市场持续被看好

    RPA 机器人流程自动化 指用软件机器人实现业务处理的自动化 是当下科技领域最热门的一个领域之一 RPA机器人使用用户界面 UI 捕获数据并模拟人类操作应用程序 它们能够模仿大多数人类用户的行为 识别 触发 响应并和其他系统进行通信 以此来
  • 控制台运行XX.jar时出现 “jar中没有主清单属性“解决方法

    1 首先我是用Maven导出到包 得到的jar文件保存在 2 在这个文件目录下cmd运行 执行java jar 01helloworld jar这句命令提示出现 XX jar中没有主清单属性 3 解决方法 有两种解决办法 springboo
  • 上传本地Vue项目到github和gh-pages预览

    利用git命令将项目上传到github 1 登陆自己的github账号 点击new repository进行创建一个新的仓库 如下图所示 2 用命令将项目上传 1 先进入项目文件夹 通过命令 git init 把这个目录变成git可以管理的
  • webpack5学习笔记—基础篇

    目录 1 webpack 1 1 Webpack是什么 有什么用 1 2 webpack的几个概念 2 webpack的基础使用 3 2 1 安装 3 2 2 webpack配置文件 3 2 3 打包命令 3 资源模块 resource i
  • 小米9008授权账号_小米手表体验:中肯点评,这是一款优点和缺点同样突出的智能手表...

    前不久 小米推出了两款智能手表 一款是方形表盘设计的小米手表 一款是圆形表盘的小米手表Color 除了价格上的区别 小米手表要比小米手表Color功能更丰富些 价格也要比小米手表Color贵一点 虽然小米手表Color的圆形圆盘更好看些 但
  • Android PDF开发:android-pdfview

    Android PDF开发 android pdfview Android平台自身没有直接可以阅读和处理pdf的方案 在github上面有一个第三方开源的pdf开发SDK 其主页地址是 https github com JoanZapata
  • 【Android性能优化】Android图片加载方案--Bitmap的内存管理和优化方案

    转载请注明原文地址 http blog csdn net mxm691292118 article details 51028953 我把Android重难点和读书笔记都整理在github上 https github com miomin
  • 期货交易一个品种好(期货买几个品种好)

    期货新手该做哪个品种 期货新手品种选择 看风险承受能力 风险承受能力较低 建议只交易豆 豆粕 玉米 强麦 籼稻等品种 风险承受能力中等 建议在以上基础上增加白糖 塑料 PTA 豆油 棕榈油 菜籽油 玻璃 螺纹钢 鸡蛋等 风险承受能力较高 那
  • 35岁IT前辈,测试11年,第一次分享面试感悟

    最近几年我一直担任着软件测试面试官的角色 正好过年回来 也差不多金三银四求职季了 所以想写点面试的经验分享给大家 希望能对大家有些帮助 碍于才疏学浅 又是理工出身 字里行间未免词不达意 可能会让大家见笑了 软件测试面试环节 一般求职无非几个
  • java new数组_Java如何使用new创建数组

    java语言使用new操作符来创建数组 语法如下 arrayRefVar new dataType arraySize 上面的语法语句做了两件事 一 使用dataType arraySize 创建了一个数组 二 把新创建的数组的引用赋值给变
  • 零基础入门STM32编程(七)——定时器篇(HAL)

    前情回顾 上一篇讲解了HAL库函数点灯 初步学习了如何使用CUBE MX创建工程文件 以及文末送出了获取HAL库函数API手册方法的小福利 本篇将继续学习HAL库函数中的定时器API使用方法 一 初识定时器 上一篇讲解了使用HAL库函数点灯
  • 浮点数为什么不精确?

    浮点数为什么不精确 其实这句话本身就不精确 相对精确一点的说法是 我们码农在程序里写的10进制小数 计算机内部无法用二进制的小数来精确的表达 什么是二进制的小数 就是形如 101 11 数字 注意 这是二进制的 数字只能是0和1 101 1

随机推荐