模型不可知元学习(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】之切换root用户与重启系统相关命令

    一.切换用户 <Linux中怎么从root用户切换到普通用户> su是在用户间切换,可以是从普通用户切换到root用户, test@ubuntu:~$ su Password: root@ ...

  2. css实现中括号边框

    要求:css + div 实现中括号边框 一.实现方式 .square_brackets { border: none; position: relative; padding: 0; height: ...

  3. 声明式 Shadow DOM:简化 Web 组件开发的新工具

    在现代 Web 开发中,Web 组件已经成为创建模块化.可复用 UI 组件的标准工具.而 Shadow DOM 是 Web 组件技术的核心部分,它允许开发人员封装组件的内部结构和样式,避免组件的样式和 ...

  4. CSS – display, visibility, opacity, transparent 的区别

    前言 要让一个元素"消失", 有 3 种做法. 它们有一点点的不同. 在实战时要清楚什么时候用什么哦. 例子说明 <div class="abc"> ...

  5. Dart 2.12 现已发布

    作者 / Michael Thomsen Dart 2.12 现已发布,其中包含 健全的空安全 和 Dart FFI 的稳定版.空安全是我们最新主打的一项生产力强化功能,意在帮助您规避空值错误,以前这 ...

  6. Sketch Measure切图插件无法导出标注 (换插件绕过解决)

    环境 MacOS 10.15+ sketch版本 69.2 插件版本 2.8.1 遇到的问题 导出标注卡死 更新版本无解,到插件的github issue中找到解决方法 使用MeaXure插件,git ...

  7. 画布canvas基础 01

    1. 什么是canvas canvas是用来绘制图形的.它可以用于动画.游戏画面.数据可视化.图片编辑以及实时视频处理等方面. <canvas width="500" hei ...

  8. TCP 与 UDP 的区别有哪些

    什么是 TCP TCP(Transmission Control Protocol 传输控制协议)是一种面向连接的.可靠的.基于字节流的传输层通信协议 什么是 UDP UDP(User Datagra ...

  9. Vue3 和 Vue2 的区别 ?

    1. Vue3 和 VUe2 性能提升 :使用 proxy 代替 defainProperty 实现响应式数据 :使用 ts 书写代码 : 新特性有:组合 api compositionApi  :新 ...

  10. Android复习(三)清单文件中的元素——>action、activity-alias、category、compatible-screens、data

    <action> 语法: <action android:name="string" />   包含于: <intent-filter> 说明: ...