MAML(Model-Agnostic-Meta-Learning)是Meta-learning(即元学习,又叫Learn-to-Learn)的其中一个类别。有关Meta-learning的理论,可以参考李宏毅教授的B站视频。参考网上博主的一个比较恰当的例子来说明Meta-learning就是:经典的监督学习是让学生去学习某一个单词怎么去读,学生会模仿老师的发音;对于下一个单词(任务),学生会继续模仿老师的发音去学习,但是一旦你给了一个学生不认识的单词,不教发音的话,学生自然就不会了。那么Meta-learning就是来解决这个问题,它是用来教会学生如何去学习,即培养学习能力的技术。同样是这个教单词的例子,Meta-learning这个老师怎么教学呢?他会教学生如何去认识理解音标,这样下次碰到不认识的单词,学生就会根据其音标去正确读取单词,相比之前的学生,经过Meta-learning教出来的学生学习能力更强。
就我个人而言,学习Meta-learning一个最重要的原因,就是它的通用性
。换句话说,在AI领域,Meta-learning可以当做一种可以在许多task上通用的算法使用!这一点我想一直是AI领域研究者都在努力的一个方向吧。特别是强化学习方面,通常一种算法可适配某一个环境,但换一个环境,这个算法可能就拉跨了,我们通常会去费劲去调节这个算法的超参数等,可以说很不方便,那么Meta-learning他针对的不是某一个特定的task,而是去学习如何更快速高效的学习一堆不同的task。元学习面向的不是学习的结果,而是学习的过程。其学习的不是一个直接用于预测的数学模型,而是学习“如何更快更好地学习一个数学模型”。
原论文地址,点这里
参考列表:
①李宏毅Meta-Learning学习笔记
②一篇对MAML解读比较好的知乎文章
③MAML论文解读
Model-Agnostic Meta-Learning for Fast Adaptation of Deep Networks
Abstract
- MAML是一种学习框架。这个框架里可以放可以用梯度下降法来优化的模型。
换句话说,MAML不关心你放的是什么模型,无视你的模型,只要用梯度下降来优化都可以放进MAML的框架来进行学习,所以对于MAML来说,什么模型不重要,都当做未知来看待。 - MAML的适用范围广。他的框架中可以放入监督学习的回归与分类问题以及强化学习问题。
- Meta-learning的学习目标是在一大堆不同的task上进行训练,然后在小数量样本上微调(fine-tune)就可以解决测试集的新task。MAML是meta-learning的一个分支,旨在去学习一个最好的初始化参数
θ
\theta
θ,这个
θ
\theta
θ可以
快速适应
到不同的子模型上,这里的快速指的是MAML算法只需要用几步甚至一步更新就可以让子模型自己学到能让自己的task快速收敛的初始化参数 θ ′ \theta' θ′(这部分细节后面会详述)。
1. Introduction
- 在AI领域,对于一个task,想要在小样本上快速收敛是一件很难的事。一来是小样本让模型训练容易
过拟合
。二来是不同的task,他们的样本都是不同的,难以通用化。 - 针对上述问题,Meta-learning就可以充分发挥他的作用了:其通用性以及只需要小样本进行微调就可以收敛的特性可以让新的task收敛。
- 作者提出了Meta-learning中的一种新算法——MAML,这是一种Model-Agnostic型,即可以适用于所有需要用到梯度下降优化的模型,包括回归、分类、RL中model。
- 在Meta-learning中,学习目标是在大量不同的tasks上训练一个meta-learner,这个meta-learning会自己去学习一个正真的数学模型base-learner,一般来说,有几个task就会学几个base-learner。将训练好的meta-learner就可以在
新的task
上用少量数据进行微调即可学习成功。 - MAML的
核心思想
就是用大量不同的tasks去训练meta-learner的初始化参数 θ \theta θ,训练中涉及到二重梯度,即Gradient by gradient,其中第一重梯度我们叫内层梯度,在MAML中只需要涉及单步的更新即可,想想我们之前的监督学习,参数要更新n个epoches甚至更多;第二层梯度我们叫外层梯度,他和我们batch的更新方式一样——多样本SGD更新。然后可以在少量训练数据的新任务上进行微调其模型,从而让新任务具有一个比较不错的初始化参数 θ ′ \theta' θ′。 - MAML训练的 L o s s Loss Loss函数根据base-learner来的:回归任务就用MSE(当然还有其他的选择);分类任务就用Cross-entropy;强化学习任务就用负值函数 − V π ( s t ) -V^\pi(s_t) −Vπ(st)。
- MAML成功的地方在于简单实用,对于一个训练好的meta-learner,只需要小数量的数据就可以在新的task上快速学习。如下图所示,
原模型的初始化参数 θ \theta θ(就是图中的 ϕ \phi ϕ)可以适应到不同的tasks上,让他们的初始化参数 θ ′ \theta' θ′(就是图中的 θ i ^ \hat{\theta^i} θi^)都各自来到一个比较不错的地方,比如minimize点附近,这样只需要几步就可以收敛,加速了学习!
2. Model-Agnostic Meta-Learning
这一节是对Meta-learning这个框架进行说明。
2.1. Meta-Learning Problem Set-Up
- Few-shot learning是一种在少量训练样本下进行学习的算法,由于样本少,对于一般的机器学习算法而言很难学得到东西。因此Few-shot learning就可以用Meta-learning的框架去学习。因为Meta-learning只需要用小的数据进行微调,就可以将原模型适应到新的task上,借助之前任务的先验经验来学习少样本的任务。Meta-learning可以在大数据下进行训练,也可以在小数据下进行训练。显然Few-shot learning充分发挥了Meta-learning的优势。
- 对于Meta-learning来说,一个task就相当于监督学习中的一个训练样本。
接下来定义一些Meta-learning用到的符号:
- f f f代表着输入 x x x到输出 a a a的映射,代表着原模型,通常记为 f θ f_\theta fθ。
- 记task为 τ \tau τ,其表示为 τ = { L ( x 1 , a 1 , ⋯ , x H , a H ) , q ( x 1 ) , q ( x t + 1 ∣ x t , a t ) , H } \tau=\{\mathcal{L}(x_1,a_1,\cdots,x_H,a_H),q(x_1),q(x_{t+1}|x_t,a_t),H\} τ={L(x1,a1,⋯,xH,aH),q(x1),q(xt+1∣xt,at),H},也就是说一个task是由长度为 H H H个的数据组成,从左到右分别是Loss_function L \mathcal{L} L,在回归任务中一般都是MSE,在分类任务中一般都是Cross_entropy,在RL中一般都是负值函数 − V π ( s t ) -V^\pi(s_t) −Vπ(st);初始分布 q ( x 1 ) q(x_1) q(x1),状态转移概率 q q q以及状态集合 x i ∈ X x_i\in\mathcal{X} xi∈X的长度。
- 那么在Meta-learning中,我们的task τ ∼ p ( τ ) \tau\sim p(\tau) τ∼p(τ),即task都是从 p ( τ ) p(\tau) p(τ)这个分布中采样而来的。如上图所示,在Meta-learning中分为Training-tasks和Testing-tasks,前者是用来训练的,其又可以分为Support-set和Query-set,Support-set是用于计算第一个梯度的 L o s s Loss Loss,用来更新子模型 θ ′ \theta' θ′。Query-set是用于计算第二个梯度的 L o s s Loss Loss,是真正用于更新模型 θ \theta θ用的数据集,这样的模型训练出来我们记为 M m e t a M_{meta} Mmeta。Testing-tasks是用于微调 M m e t a M_{meta} Mmeta的新tasks,注意到新的tasks数据集和Training-tasks不一样,起着测试的作用。另外可以发现,Training-set中不同的任务是不一样的,而相同任务的训练集和测试集是一样的,而Testing-set中的则是Training-set中不曾出现的,这些约束都符合我们对于样本集合的规定。
- 另外补充下Few-shot learning中经常用的:“
N-way K-shot
”,他指的是在一个task中取N个类别,每个类别取K个样本进行训练。
2.2. A Model-Agnostic Meta-Learning Algorithm
从这节开始,作者开始提出MAML算法,一种可以在任何标准数学模型去学习如何初始化参数的meta-learning算法,并且这种算法可以将原模型参数快速适应到各个子模型上,从而使得各个子模型都具有了属于自己比较合适的初始参数 θ ′ \theta' θ′——作者采用的适应方式为单步的梯度更新。
接下来作者指明了这种参数适应
θ
→
θ
′
\theta\to\theta'
θ→θ′(也就是后面Algorithm 1中的内更新)是如何来的?
这种思想起源于比如说训练CNN的时候,网络学习到的特征可以适用于所有采样于
p
(
τ
)
p(\tau)
p(τ)的任务
τ
i
\tau_i
τi,而不是仅仅适用于一个task,当你换一个task的时候,这个特征就不适用了。
那么我们如何设计出这种具有通用化特性的东东呢?
作者的解释如下:首先适应是一个参数更新
θ
→
θ
i
′
\theta\to\theta'_i
θ→θi′的过程,因此我们常用gradient-based方式去表达,也就是
θ
i
′
←
θ
−
∇
θ
\theta'_i\gets\theta-\nabla_\theta
θi′←θ−∇θ的形式。其次,我们的目标是在训练好的模型
θ
\theta
θ上进行微调从而在新任务上获取合适的参数
θ
i
′
\theta'_i
θi′,所以我们要让gradient-based规则在新的task上发挥有效且快速的作用。
这个有效且快速如何实现呢?
其基本的思想就是原模型参数做一个小的改动都可以引起support-set中的task在
L
o
s
s
Loss
Loss函数上有较大的的Improment。这个可以通过单样本更新来实现,因为多样本更新通过样本平均的形式来估计梯度,虽然稳定性提升但是相对单样本更新欠缺了灵活性。如上图所示,因为
L
(
θ
)
\mathcal{L}(\theta)
L(θ)一个小的方向改动,就能促使子模型的初始参数走向最优方向
θ
i
∗
\theta^*_i
θi∗!
因此更新可表示成:
θ
′
←
θ
−
α
∇
τ
i
L
(
θ
)
\theta'\gets\theta-\alpha\nabla_{\tau_i}\mathcal{L}(\theta)
θ′←θ−α∇τiL(θ)。那么快速的实现方式也很直观,就是采用单步单样本
更新,因为我们之前在监督学习中对参数的更新往往要进行
N
N
N个epoches,现在相当于
N
=
1
N=1
N=1;再啰嗦一下,单样本指的是在Meta-learning里面一个样本指的是一个task,类似于SGD,参数的更新是非常快的。
Note:
- L \mathcal{L} L在回归、分类、强化学习中分别为MSE函数、Cross-entropy函数以及负值函数 − V π ( s ) -V^\pi(s) −Vπ(s)。
- 梯度下标 τ i \tau_i τi在 θ ′ ← θ \theta'\gets\theta θ′←θ中是来自于Training-set中的support-set。
- 对于上述公式,我们可以用一句话来形容:当我们在某个新任务 τ i \tau_i τi(原文中说这里是新的task应该指的是Training-set的support-set,而不是之前提到的Testing-set用于微调模型中的tasks)上进行训练的时候,原模型参数 θ \theta θ就适应到相对应的子模型 θ ′ \theta' θ′上。
- 对于学习率 α \alpha α,可以是固定的,也可以像初始化参数一样,将学习率变成meta-learned。
- MAML的算法中,做的是单步更新 θ → θ ′ \theta\to\theta' θ→θ′,但作者指出,也可以尝试多步更新作为扩展。
如果说第一次更新做了原模型将参数适应到各个子模型中,使得子模型们都有了新鲜出炉的初始化参数
θ
i
′
\theta'_i
θi′。而内更新取决于
θ
\theta
θ,
θ
\theta
θ直接影响了子模型的参数,因此其值非常重要,故需要去学习并做相应的更新,关于
θ
、
θ
1
′
、
θ
2
′
⋯
、
θ
j
′
、
L
(
θ
i
′
)
\theta、\theta_1'、\theta_2'\cdots、\theta'_j、\mathcal{L}(\theta'_i)
θ、θ1′、θ2′⋯、θj′、L(θi′)他们间的关系如下:接下来是整个Meta-learning的重中之重,也是其区别迁移学习的一个点:和一般的参数更新一样,MAML中也是采用了
θ
i
′
←
θ
−
∇
θ
\theta'_i\gets\theta-\nabla_\theta
θi′←θ−∇θ的形式,但是其
L
o
s
s
Loss
Loss函数评估的是Training-set中query-set上的表现,也就是说Meta-learning在乎的是用
θ
\theta
θ训练出来的
θ
i
′
\theta'_i
θi′其在子模型上的表现
L
(
θ
i
′
)
\mathcal{L}(\theta_i')
L(θi′),我们不在意
θ
\theta
θ在Support-set上表现
L
(
θ
)
\mathcal{L}(\theta)
L(θ)如何。借用李宏毅老师的PPT中的一张图说明(当时把笔记直接写图上了):这张图表示的意思就是,可能我的初始化参数
θ
\theta
θ(就是上图的
ϕ
\phi
ϕ)表现并不好,因为其在2个
L
o
s
s
Loss
Loss上的值都比较高,但它可能是个很不错的
θ
\theta
θ,因为如上图所示,此时
θ
\theta
θ如果按照内更新
来,他只要一直往同一个方向走,就可以很轻松到达
θ
1
′
、
θ
2
′
\theta_1'、\theta_2'
θ1′、θ2′,而此时的
θ
1
′
、
θ
2
′
\theta_1'、\theta_2'
θ1′、θ2′在他们各自任务上的表现非常好,
L
o
s
s
Loss
Loss达到全局最小(这里只是借助上图说明,实际问题不一定是全局最小,一般都是局部最小),这才是我们想要的结果——让真正的数学模型有一个不错的参数,这才是真正好的
θ
\theta
θ。
根据上述特点,我们就可以来学习原模型参数
θ
\theta
θ,或者说对旧的参数根据子模型在
L
o
s
s
Loss
Loss上的反馈进行调整更新:
θ
←
θ
−
β
∇
θ
L
τ
i
∼
p
(
τ
)
(
f
θ
i
′
)
(1)
\theta\gets\theta-\beta\nabla_\theta\mathcal{L}_{\tau_i\sim p(\tau)}(f_{\theta'_i})\tag{1}
θ←θ−β∇θLτi∼p(τ)(fθi′)(1)Note:
- 从公式来看,其采用了我们熟悉的mini-batch的梯度下降,并且 L o s s Loss Loss取决于在子模型上的表现。
- 这里的任务属于Training-set中的query-set,也就是说对于同一个任务,外更新使用query-set,内更新使用support-set。
- 另外注意求导的对象是 θ \theta θ。
- 实际上子模型 θ ′ \theta' θ′更新二次的方向就是原模型 θ \theta θ的更新方向,具体如下图所示:
- MAML的算法设计2层梯度更新,即gradient-by-gradient,因此会产生
Hessian矩阵
,虽然如今TF或者PyTorch都可以计算,但是Hessian矩阵的计算量非常大,故作者采用一阶近似的手法完成Hessian-free,具体公式推导参考李宏毅老师的PPT:Emmmm…其实作者是用0和1去取代了二阶导数部分,虽然和真实的会有偏差,但是MAML这样做效果还不错,证明这种近似还是有用的。
将我们上述的内容整合起来,就是MAML的伪代码——Algorithm 1:
Note:
- 尤其注意下,Step:4~7中,每一个task τ i \tau_i τi更新一个子模型参数 θ i ′ \theta'_i θi′,各个task是并行非串行的,因为 θ \theta θ的更新不是在这个循环里,而是在循环外,即Step:8。
- 算法Step:6&8是2次更新的过程,他们都用了单步更新,这么做的好处是:①训练速度快。②我们的最终目的是希望 MAML 训练出的参数,在新的任务上进行少量几次的微调就可以收敛,那最好的结果就是只更新一次就收敛了,所以在 MAML 训练过程中,作者就特意设计每个任务内部只更新一次参数,以此来训练这个模型
更新一次就可以最大化性能
的能力。③虽然训练的时候只用了单步,但是不影响微调的时候你可以使用多步更新。④当我们训练数据少的时候,单步更新可以避免过拟合。 - 原文中没有介绍Fine-tune的过程,这里我截取了知乎上一位博主的文章中总结的微调流程如下:
- τ ∼ p ( τ ) \tau\sim p(\tau) τ∼p(τ),说明不同task之间有一定的相似性,换句话说,不同的task只要保持一定的差异即可。
3. Species of MAML
这一节开始将MAML这个框架应用于监督学习中的回归与分类以及强化学习中去。虽然三者的数据来源不同以及 L o s s Loss Loss函数不同,但是都能与MAML兼容。
3.1. Supervised Regression and Classification
Few-shot learning是Meta-learning在监督学习下的一个典型应用,这是一种在少样本的情况下,利用Meta-learning的方式进行的学习。Few-shot learning利用先前的经验知识来进行少样本任务的训练。虽然Meta-learning在多样本和少量样本下都能使用,但是只有在少量样本的情况下才能发挥Meta-learning的优势,正如李宏毅教授所说,一般情况下在我们做Meta-learning的时候,都假设在做Few-shot learning。
接下来将对监督学习的回归与分类问题进行描述
在2.1小节我们曾定义样本
τ
\tau
τ在Meta-learning中的定义:
τ
=
{
L
(
x
1
,
a
1
,
⋯
,
x
H
,
a
H
)
,
q
(
x
1
)
,
q
(
x
t
+
1
∣
x
t
,
a
t
)
,
H
}
\tau=\{\mathcal{L}(x_1,a_1,\cdots,x_H,a_H),q(x_1),q(x_{t+1}|x_t,a_t),H\}
τ={L(x1,a1,⋯,xH,aH),q(x1),q(xt+1∣xt,at),H},那么在监督学习中
H
=
1
H=1
H=1,
x
i
x_i
xi相当于监督学习中的一个样本,比如一张图片。在N-way K-shot设置下,任务
τ
i
\tau_i
τi会产生N个类别,其中每个类别从分布
q
q
q中产生K张独立同分布的图片用作Training-test的Support-set,再加上一定数量的Query-set,从而组成一个task,在Meta-learning中就是一条训练数据,多个task组成在一起就是一个mini-batch。
在回归问题上,作者介绍了MSE损失函数:
L
τ
i
(
f
ϕ
)
=
∑
x
(
j
)
,
y
(
j
)
∼
τ
i
∣
∣
f
ϕ
(
x
(
j
)
−
y
(
j
)
)
∣
∣
2
2
(2)
\mathcal{L}_{\tau_i}(f_\phi)=\sum_{x^{(j)},y^{(j)}\sim\tau_i}||f_\phi(x^{(j)}-y^{(j)})||^2_2\tag{2}
Lτi(fϕ)=x(j),y(j)∼τi∑∣∣fϕ(x(j)−y(j))∣∣22(2)Note:
- x ( j ) 、 y ( j ) x^{(j)}、y^{(j)} x(j)、y(j)是从 τ i \tau_i τi这个任务中采样的;而 τ i ∼ p ( τ ) \tau_i\sim p(\tau) τi∼p(τ)注意下标 j j j和 i i i。
- f ϕ f_\phi fϕ相当于神经网络的输出。
在分类问题上,作者介绍了使用Cross-entropy做二分类:
L
τ
i
(
f
ϕ
)
=
∑
x
(
j
)
,
y
(
j
)
∼
τ
i
y
(
j
)
log
f
ϕ
(
x
(
j
)
)
+
(
1
−
y
(
j
)
)
log
(
1
−
f
ϕ
(
x
(
j
)
)
)
(3)
\mathcal{L}_{\tau_i}(f_\phi)=\sum_{x^{(j)},y^{(j)}\sim\tau_i}y^{(j)}\log f_\phi(x^{(j)})+(1-y^{(j)})\log(1-f_\phi(x^{(j)}))\tag{3}
Lτi(fϕ)=x(j),y(j)∼τi∑y(j)logfϕ(x(j))+(1−y(j))log(1−fϕ(x(j)))(3)
将上述整合成伪代码Algorithm 2:
Note:
- 和Algorithm 1的区别仅仅只是红框部分以及监督学习特有的损失函数。
3.2. Reinforcement Learning
Meta learning不仅可以用于监督学习,在RL领域同样适用。Meta learning对强化学习最大的意义在于只需要收集少量的经验样本,就可以学习到适合新task的策略 π ( a ∣ s ) \pi(a|s) π(a∣s)。众所周知,在RL里面,Agent和环境进行交流获取样本的过程是最耗时的,而结合Meta-learning在少量样本上就可以展开学习的特性,可以大大减少Agent收集样本的时间,从而加速RL的学习。这里举个RL里面最开始接触的简单例子——迷宫寻路。Meta-RL会在一些task上进行训练,那么标准的RL算法可以使得Agent走出迷宫,那么当面对一个新的迷宫的时候,Meta-RL将在少量经验样本的基础上,让Agent走出新环境的迷宫。
接下来将对RL问题进行描述:
重新回顾下
τ
\tau
τ的定义:
τ
∼
p
(
τ
)
\tau\sim p(\tau)
τ∼p(τ):
τ
=
{
L
(
x
1
,
a
1
,
⋯
,
x
H
,
a
H
)
,
q
(
x
1
)
,
q
(
x
t
+
1
∣
x
t
,
a
t
)
,
H
}
\tau=\{\mathcal{L}(x_1,a_1,\cdots,x_H,a_H),q(x_1),q(x_{t+1}|x_t,a_t),H\}
τ={L(x1,a1,⋯,xH,aH),q(x1),q(xt+1∣xt,at),H}在RL中,
τ
i
\tau_i
τi包含了一个初始分布
q
i
(
x
1
)
q_i(x_1)
qi(x1),转移概率矩阵
q
(
x
t
+
1
∣
x
t
,
a
t
)
q(x_{t+1}|x_t,a_t)
q(xt+1∣xt,at)以及损失函数
L
\mathcal{L}
L,其一般为负的值函数。时间步为
H
H
H,所以整个task就是一个MDP,时间步
t
∈
{
1
,
⋯
H
}
t\in\{1,\cdots H\}
t∈{1,⋯H}。
RL的损失函数为(省略折扣因子
γ
\gamma
γ):
L
τ
i
(
f
ϕ
)
=
E
x
t
,
a
t
∼
f
ϕ
,
q
τ
i
[
∑
t
=
1
H
R
i
(
x
t
,
a
t
)
]
(4)
\mathcal{L}_{\tau_i}(f_\phi)=\mathbb{E}_{x_t,a_t\sim f_\phi,q\tau_i}[\sum^H_{t=1}R_i(x_t,a_t)]\tag{4}
Lτi(fϕ)=Ext,at∼fϕ,qτi[t=1∑HRi(xt,at)](4)Note:
- f ϕ f_\phi fϕ指的是策略 π ( a ∣ s ) \pi(a|s) π(a∣s)。
- 在RL中,K-shot指的是从 f ϕ ( ⋅ ∣ s ) f_\phi(\cdot|s) fϕ(⋅∣s)开始的rollouts的分支个数为K条。
- 显然公式(4)作为 L o s s Loss Loss是不可微的(不平滑),因为 R R R是无法用数学表达式来显示定义的。
因为式(4)不符合我们对
L
o
s
s
Loss
Loss的要求,所以可以采用policy-based系列中的值函数来表示,目的在于利用策略梯度上升去做policy improvement。这部分还可以利用其它的一些算法来做,比如TRPO等。
将上述整合成伪代码就是Algorithm 3:
Note:
- 红框部分就是Meta-RL对比MAML多出来的部分。
- 因为策略梯度是
On-policy
算法,也就是说采集样本的策略 π \pi π要和更新的策略 π \pi π保持一致,学习所用的数据不能脱离目标策略,因此在step:8中需要用 f θ ′ f_{\theta'} fθ′重新进行采样以供step:10中的梯度更新使用(step:10由于一阶近似可以看成是 θ ′ \theta' θ′在做更新)。
4. Related Work
略
5. Experimental Evaluation
由于博主研究的是深度强化学习,所以实验部分只研究强化学习部分。
5.1. Regression
略
5.2. Classification
略
5.3. Reinforcement Learning
作者提供了学习过程的动态视频,如下图所示:
具体视频网址——点这里。
实验这部分需要结合代码进行复现才能理解。由于篇幅原因,这部分我将放到另一篇MAML实战中。
6. 论文总结
- MAML是Meta-learning的一种,其核心思想就是让Meta-learner学会如何去初始化子模型参数 θ ′ \theta' θ′。
- MAML具有快速适应的功能,因为单步单样本更新的缘故,使得 θ → θ ′ \theta\to\theta' θ→θ′可以快速实现,那么当你进行微调的时候,丢进去一个新的task,只需要单步就可以找到比较不错的初始化参数 θ ′ \theta' θ′,那岂不是很快捷。MAML的目的,在于Fast-adaptation,即通过对大量task的学习,获得足够强的泛化能力,从而面对新的、从未见过的task时,通过fine-tune就可以快速拟合。
- 我们在用Meta-learning的时候,一般默认都是Few-shot learning,也就是说只需要用小数据样本就可以学到东西,这正是Meta–learning所擅长的。Meta-learner在训练好模型 θ \theta θ,就掌握了学习能力,而不是具体某一个task,学会具体某一个task是我们传统监督学习或者RL做的事情。掌握学习能力之后,对于新的task,只需要在 M m e t a M_{meta} Mmeta上进行少量样本的微调即可学会这个task。
- MAML只需要要少量样本就可以学习的特征非常适用于强化学习,因为强化通常需要采集很多样本才能学会策略网络 π \pi π,但现在有了Meta-learning,我们就可以少采集很多样本,仍然可以学会,大大提高了采样效率与降低了训练时间。
- 个人认为从长远来看,Meta-learning最大的效用在于他为用AI技术解决日常生活的问题提供了一种
简单的通用性算法
,其可以适用于任何环境与模型。之前不管是监督学习还是RL,基本都是在特定的task上表现不俗,但是换了一个环境或者任务,就必须通过耗时耗力的调参去适应新的task。而现在我们有了Meta-learning,他拥有同时学习很多不同task的能力! - MAML是一种Model-Agnostic+多场景的算法框架(Algorithm 1)。模型无关性指的是MAML这个框架可以结合任何gradient-based且 L o s s Loss Loss函数可微分的task中去;多场景指的是MAML可以和监督学习的分类回归问题(Algorithm 2)以及标准强化学习算法结合在一起使用(Algorithm 3)。