MAML (Model-Agnostic Meta-Learning) 解读
论文地址:proceedings.mlr.press/v70/finn17a/finn17a.pdf
5.1 简介
Model-Agnostic:可适用于任何梯度下降
的模型,可用于不同的学习任务
(如分类、回归、策略梯度RL)。
Meta-Learning:在大量的学习任务上训练模型,从而让模型仅用小数量的训练样本
就可以学习新任务
(加速fine-tune)。不同的任务有不同的模型
。
需要考虑将先前的经验与少量新信息融合,同时避免过拟合。
方法的核心是训练模型的初始参数
,从而使模型仅在少量新任务样本上通过几步梯度更新就达到最好性能。
5.2 方法
首先通过如下算法1初始化网络权重,然后在新任务上微调训练。
对上述算法1的解读:
MAML的目的是:学习网络的初始化权重,从而使网络只在新任务上训练一步或几步就能达到很好的效果
。
和深度学习的核心一样,算法1中的训练任务
和初始化权重后的微调的测试任务
都是样本,和一般深度学习中的训练集
和测试集
的目的和概念一样。
对上述描述进行公式化:假设网络的初始化权重为θ\thetaθ,网络在不同新任务τi\tau_iτi的训练集上经过一步梯度更新后的权重为θi′\theta'_iθi′,使用更新后的权重θi′\theta'_iθi′在新任务τi\tau_iτi的测试集上计算损失Li(θi′)\mathcal{L}_i (\theta'_i)Li(θi′),MAML的目的是使不同新任务τi\tau_iτi上的损失之和最小,公式如下:
L=min∑τi∼p(τ)Li(θi′)L = min ~ \sum_{\tau_i \sim p(\tau)} \mathcal{L}_i (\theta'_i) L=min τi∼p(τ)∑Li(θi′)
以上述为总损失函数,对网络权重θ\thetaθ进行梯度下降,如下:
θ←θ−β∇θ∑τi∼p(τ)Li(θi′)=θ−β∑τi∼p(τ)∇θLi(θi′)\theta \leftarrow \theta - \beta \nabla_{\theta} \sum_{\tau_i \sim p(\tau)} \mathcal{L}_i (\theta'_i) \\ ~~ = \theta - \beta \sum_{\tau_i \sim p(\tau)} \nabla_{\theta} \mathcal{L}_i (\theta'_i) θ←θ−β∇θτi∼p(τ)∑Li(θi′) =θ−βτi∼p(τ)∑∇θLi(θi′)
计算∇θLi(θi′)\nabla_{\theta} \mathcal{L}_i (\theta'_i)∇θLi(θi′):
借用李宏毅老师讲义中的公式,ϕ=θ\phi=\thetaϕ=θ,θ^=θi′\hat{\theta}=\theta'_iθ^=θi′,∇θLi(θi′)=∇ϕl(θ^)\nabla_{\theta} \mathcal{L}_i (\theta'_i) = \nabla_{\phi} l(\hat\theta)∇θLi(θi′)=∇ϕl(θ^),∇ϕl(θ^)\nabla_{\phi} l(\hat\theta)∇ϕl(θ^)可以分解为如下公式,
其中,θ^\hat{\theta}θ^由ϕ\phiϕ计算得到,如下:
通过如下公式计算∇ϕl(θ^)\nabla_{\phi} l(\hat\theta)∇ϕl(θ^)中的每一项导数:
计算二阶导数非常耗时,所以MAML论文中提出使用一阶导数近似方法,即假设二阶导数都为0,对公式简化如下:
简化后,∇ϕl(θ^)→∇θ^l(θ^)\nabla_{\phi} l(\hat\theta) \rightarrow \nabla_{\hat\theta} l(\hat\theta)∇ϕl(θ^)→∇θ^l(θ^),原梯度下降公式转化为:
θ←θ−β∑τi∼p(τ)∇θi′Li(θi′)\theta \leftarrow \theta - \beta \sum_{\tau_i \sim p(\tau)} \nabla_{\theta'_i} \mathcal{L}_i (\theta'_i) θ←θ−βτi∼p(τ)∑∇θi′Li(θi′)
即,直接对每个更新后的θi′\theta'_iθi′计算梯度,将梯度作用到更新前的θ\thetaθ上。
问题:
1、为什么循环随机采样多个任务进行学习?
答:构建足够多的不同任务,使网络得到充分训练,从而在面向新任务时只通过几步更新就能达到较好的效果。
2、为什么第一次计算梯度与第二次计算梯度使用相同任务下的不同样本,即support set和query set?
答:前者是训练集,用于计算得到θi′\theta'_iθi′,后者是测试集,用于计算损失。
3、相比于先在一大堆任务上预训练(每次只计算一次梯度),再在新任务上微调,优势是什么?
答:预训练的目的是使网络在所有任务上的性能达到最优,将这个最优模型用于新任务微调时,可能陷入局部最优值等问题;而MAML的目的是使模型在新任务上训练几步后的性能达到最优,考虑的是未来的最优值,因此不会在某些任务上达到最优,而在其他任务上陷入次优。
更多细节请参考:
https://zhuanlan.zhihu.com/p/57864886
https://www.bilibili.com/video/BV1w4411872t?p=7&vd_source=383540c0e1a6565a222833cc51962ed9
MAML (Model-Agnostic Meta-Learning) 解读相关推荐
- 【李宏毅2020 ML/DL】P88-96 Meta Learning – MAML | Reptile
我已经有两年 ML 经历,这系列课主要用来查缺补漏,会记录一些细节的.自己不知道的东西. 本节内容综述 元学习就是 Learn to learn ,让机器变成 a better learner .Me ...
- ML:MLOps系列讲解之《基于ML的软件的三个层次之02 Model: Machine Learning Pipelines——2.6 ML Model serialization forma》解读
ML:MLOps系列讲解之<基于ML的软件的三个层次之02 Model: Machine Learning Pipelines--2.6 ML Model serialization forma ...
- ML:MLOps系列讲解之《基于ML的软件的三个层次之02 Model: Machine Learning Pipelines——2.5 Different forms of ML workfl》解读
ML:MLOps系列讲解之<基于ML的软件的三个层次之02 Model: Machine Learning Pipelines--2.5 Different forms of ML workfl ...
- ML:MLOps系列讲解之《基于ML的软件的三个层次之02 Model: Machine Learning Pipelines 2.1~2.4》解读
ML:MLOps系列讲解之<基于ML的软件的三个层次之02 Model: Machine Learning Pipelines 2.1~2.4>解读 目录 <基于ML的软件的三个层次 ...
- 8.7 Meta learning元学习全面理解、MAML、Reptile
文章目录 1.介绍 为什么需要元学习? few-shot learning reinforcement learning 2.概念 3. Meta learning 三个步骤 定义一组learning ...
- Meta Learning在NLP领域的应用
Hi,这里是哈林,今天来跟大家聊一聊Meta Learning在NLP领域的一些应用. 哈林之前在学校科研的方向是NLP,个人对如何将先进的机器学习算法应用到NLP场景很感兴趣(因为好水paper), ...
- 理解Meta Learning 元学习,这篇文章就够了!
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 AI编辑:我是小将 本文作者:谢杨易 1 什么是meta lear ...
- 元学习Meta learning深入理解
目录 基本理解 元学习与传统的机器学习不同在哪里? 基本思想 MAML MAML与pre-training有什么区别呢? 1. 损失函数不同 2. 优化思想不同 MAML的优点及特点 MAML工作机理 ...
- 如何通过Meta Learning实现域泛化(Domain Generalization)?
©作者 | 丘明姗 单位 | 华南理工大学 研究方向 | 领域泛化 域泛化(Domain Generalization)中有很多工作是用 meta learning 做的.Meta learning ...
- 【李宏毅2020 ML/DL】P97-98 More about Meta Learning
我已经有两年 ML 经历,这系列课主要用来查缺补漏,会记录一些细节的.自己不知道的东西. 本节内容综述 本节课由助教 陈建成 讲解. 本节 Outline 见小细节. 首先是 What is meta ...
最新文章
- Github多人合作用法
- ngnix mysql 缓存清除_利用Proxy Cache使Nginx对静态资源进行缓存
- Evernote 印象笔记赞一个(非广告)
- AndroidL的checkPermission方法详解
- 【推荐系统】基于知识图谱的推荐系统总结
- C/Cpp / 类的前向声明、不完全类型和完全类型
- SQL语句之Insert
- 本科主要数学科目的页数统计
- J2EE开发技术点4:ajax技术
- 《软件工程导论》课后习题解答
- ubuntu下安装、卸载软件
- onenote快捷键_高效飞快地使用onenote快捷键:快捷键功能架构解析
- 弹性地基梁板实用计算_建筑地基基础设计规范要点
- jupyter notebook 多行输出
- 【linux基础】cuDNN版本查询
- mysql中文版下载5.6_mysql5.6官方版下载
- c语言 鼠标指针图标,WIN7系统鼠标图案DIY!自己动手,美不胜收!-win7鼠标指针...
- 小功能--扫描二维码自动连接WiFi
- 通过WIFI,访问一个网站
- 五子棋PVP项目总结
热门文章
- h5调用android录音,html5网页录音插件Recorder
- 如何写/审AI领域的论文【VALSE Webinar】Panel实录
- android 角标最新设置方案
- java表格中添加按钮_如何在JavaFX表视图中添加按钮
- 光伏系统MPPT、恒功率控制切换MATLAB仿真
- jQuery中过滤选择器的eq,ne等于gt大于lt小于
- PATA1024_大整数运算(难度:⭐️⭐️)
- 雨伞消费行业调研报告 - 市场现状分析与发展前景预测
- win10设置虚拟内存_电脑配置强,虚拟内存没有用?教你这样设置,瞬间提升流畅度!...
- C++ friend详解