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

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

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

主旨

  论文的主旨主要就概括为以下损失函数(元目标)。其中$f_\theta$表示某个参数为$\theta$的模型;$p(\mathcal{T})$表示适用于模型$f_\theta$的各种任务的分布,它的一个抽样$\mathcal{T}_i$就表示模型的某个任务,任务包含数据集和损失函数;模型在任务$\mathcal{T}_i$上进行一次训练后所得到的模型为$f_{\theta_i'}$ 。

$\min\limits_\theta\sum\limits_{\mathcal{T}_i\sim p(\mathcal{T})}\mathcal{L}_{\mathcal{T}_i}(f_{\theta_i'})=\sum\limits_{\mathcal{T}_i\sim p(\mathcal{T})}\mathcal{L}_{\mathcal{T}_i}(f_{\theta-\alpha\nabla_\theta\mathcal{L}_{\mathcal{T}_i}(f_{\theta})})$

  以上目标表示,优化模型参数$\theta$,使得模型在某个任务上进行一次梯度更新之后,在这个任务上的表现就要好。惩罚的是模型对数据参数的不敏感性:我不要通过多次训练才能达到比较好的效果,我只要一次训练,就达到!

  当然,其中的一次梯度更新也可以修改为多次更新。解释就是:让模型能在某个任务的数次梯度更新内,达到好的效果。当然,由于这个目标的元更新需要计算二阶梯度,每次元更新所需的显存会因前面梯度更新次数增加而过大。感觉一次就够了,多次没有意义。

思考

  根据以上目标,我们可以在此基础上思考各种用法的可能性。

  1、小样本学习,文中介绍的就是这个。目标函数就是上面的式子,梯度更新和元更新阶段用的同一个任务数据集的不同数据抽样。具体做法看算法2。

  2、任务分布$p(\mathcal{T})$中的任务类型不一定是要接近的。比如有的模型的通过替换输出层,既可以适应分类任务,又可以适用于缺陷检测任务。那么同时用这些任务进行MAML训练,能让模型对多种类型任务的适用性更强。也就是通过MAML的参数初始化,模型能同时在多类任务上实现快速学习。

  3、前后梯度更新与元更新用不同的任务类型,前一次用数据充足的,后一次用数据不充足的。比如让模型经过一次的缺陷检测任务训练,能解决分类任务问题。暂时还没想到什么好的应用。

$\min_\theta\sum\limits_{\mathcal{T}_i\sim p_1(\mathcal{T}),\mathcal{T}_j\sim p_2(\mathcal{T})}\mathcal{L}_{\mathcal{T}_j}(f_{\theta_i'})=\sum\limits_{\mathcal{T}_i\sim p_1(\mathcal{T}),\mathcal{T}_j\sim p_2(\mathcal{T})}\mathcal{L}_{\mathcal{T}_j}(f_{\theta-\alpha\nabla_\theta\mathcal{L}_{\mathcal{T}_i}(f_{\theta})})$

实验部分

优势

  图2展示了MAML相较于预训练的优势:

  1、左边2张图可以看出,用MAML在类似的正弦函数上进行元训练后,在未见过的正弦函数上,用5个抽样进行一次梯度更新就能回归出比较好的结果,而用10个抽样则几乎拟合出了整个曲线。而且可以看出梯度更新的次数对结果影响很小,说明一次更新就能得到比较理想的结果。

  2、右边2张图看出,用普通预训练模型微调,在小样本数据上作用很小。

二阶梯度的省略

  文章做了实验忽略元更新中的二阶导数(Hessian矩阵),仅保留元更新中的一阶部分。发现性能几乎没有损失,表明MAML的大部分改进来自更新后参数值处目标的梯度,而不是二阶梯度。过去的工作已经观察到ReLU神经网络的局部几乎线性的(ReLU的二阶导数为0),也就是大多数情况下二阶导数接近于零,部分解释了一阶近似的良好性能。这种近似使模型训练加速33%。

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

  1. 深度学习课程笔记(十七)Meta-learning (Model Agnostic Meta Learning)

    深度学习课程笔记(十七)Meta-learning (Model Agnostic Meta Learning) 2018-08-09 12:21:33 The video tutorial can ...

  2. [转载]Meta Learning单排小教学

    原文链接:Meta Learning单排小教学 虽然Meta Learning现在已经非常火了,但是还有很多小伙伴对于Meta Learning不是特别理解.考虑到我的这个AI游乐场将充斥着Meta ...

  3. The Rise of Meta Learning

    The Rise of Meta Learning 2019-10-18 06:48:37 This blog is from: https://towardsdatascience.com/the- ...

  4. 论文笔记:Visual Question Answering as a Meta Learning Task

    Visual Question Answering as a Meta Learning Task ECCV 2018 2018-09-13 19:58:08 Paper: http://openac ...

  5. (转)Paper list of Meta Learning/ Learning to Learn/ One Shot Learning/ Lifelong Learning

    Meta Learning/ Learning to Learn/ One Shot Learning/ Lifelong Learning 2018-08-03 19:16:56 本文转自:http ...

  6. 什么是 Meta Learning / Learning to Learn ?

    Learning to Learn Chelsea Finn    Jul 18, 2017 A key aspect of intelligence is versatility – the cap ...

  7. 【MetaPruning】2019-ICCV-MetaPruning Meta Learning for Automatic Neural Network Channel Pruning-论文阅读

    MetaPruning 2019-ICCV-MetaPruning Meta Learning for Automatic Neural Network Channel Pruning Zechun ...

  8. 论文阅读之:Deep Meta Learning for Real-Time Visual Tracking based on Target-Specific Feature Space

    Deep Meta Learning for Real-Time Visual Tracking based on Target-Specific Feature Space  2018-01-04  ...

  9. MetaPruning: Meta Learning for Automatic Neural Network Channel Pruning

    MetaPruning: Meta Learning for Automatic Neural Network Channel Pruning 2019-08-11 19:48:17 Paper: h ...

  10. Django笔记八之model中Meta参数的使用

    前面介绍了 model 的字段属性,字段类型,这篇笔记介绍一下 model 的 Meta 选项. 这个选项提供了一些参数,比如排序(ordering),表名(db_table)等. 但这都不是必需的, ...

随机推荐

  1. Linux 挂载设备

    手动挂载 挂载: # 创建挂载目录 sudo mkdir -p /path/to/mount # 挂载 sudo mount /dev/sdX1 /path/to/mount # 确认挂载 df -h ...

  2. FFmpeg开发笔记(四十九)助您在毕业设计中脱颖而出的几个流行APP

    ​对各高校即将毕业的学子来说,毕业设计算是在大学里的最后一个大作业.特别是软件.计算机.电子等相关专业,毕业设计非常讲究实操,往往要求实现一个实用的.可用的.易用的软件系统或手机APP. 不管是软件还 ...

  3. Dell R920 服务器iDrac口默认账号密码和IP

    Dell服务器iDrac口默认账号密码和IP   账号:root 密码:calvin IP:192.168.0.120/24

  4. linux磁盘分区之后,lsblk没有显示

    可以看出  fdisk 创建一个 sda4 的分区  并保存退出, 但是 不管是使用 fdisk -l ,还是 lsblk 都无法显示出来, 那么导致问题的原因,主要是因为新创建了分区之后,系统没有重 ...

  5. openStack-train 1-搭建部署

    openStack-train 搭建部署 当面对KVM集群的时候,我们对KVM的管理以及宿主机的管理就会遇到很大的难度,例如: 查看每一个宿主机有多少台KVM虚拟机? 查看每一个宿主机资源信息,每一个 ...

  6. PicGo RequestError: Error: tunneling socket could not be established, cause=connect ECONNREFUSED 127.0.0.1:36677

    PicGo RequestError: Error: tunneling socket could not be established, cause=connect ECONNREFUSED 127 ...

  7. 深度学习Python代码小知识点(备忘,因为没有脑子)

    现在是2024年4月24日16:58,今天摸鱼有点多,备忘一下,都写到一篇内容里面,免得分散. 1. np.concatenate()函数'np.concatenate'是NumPy库中用来合并两个或 ...

  8. ASP.NET Core – Try Preview

    前言 .NET 7 已经来到 RC 阶段了. 通常 RC 就是我们 (写库的人) 要入场的时候了. 有发现 Bug 要尽可能在这段期间提交. 不然后患无穷. 这篇主要就是来讲讲如果测试 RC 版本的 ...

  9. SimpleAIAgent:使用免费的glm-4-flash即可开始构建简单的AI Agent应用

    SimpleAIAgent是基于C# Semantic Kernel 与 WPF构建的一款AI Agent探索应用.主要用于使用国产大语言模型或开源大语言模型构建AI Agent应用的探索学习,希望能 ...

  10. iOS中使用UITextView设置不同文本部分点击事件小结

    最近在项目开发中遇到了设置多行文本,点击蓝色邮箱部分跳转到发邮件页面功能.当然比较简单的方式是多标签单独设置,那样稍显麻烦.我们能不能用一个控件,给某一部分添加点击事件,结果是可以的,UITextVi ...