本文提出了模型无关(model-agnostic)的meta learning算法,被称为MAML. 该算法可以用于任何通过梯度下降来更新参数的模型。
算法内容
该算法通过最大化损失函数对新任务敏感性,来获得更好的初始参数,使得模型只需要少数几步梯度下降即可快速学习新任务。
Set-Up
一个任务应该具有以下的形式
其中$\mathcal{L}$为损失函数,$q(x_1)$为先验分布,$q(x_{t+1}|x_t, a_t)$为转移分布,$H$为episode长度。
同时,tasks都符合分布$p(\mathcal{T})$。
对于K-shot learning,模型通过取自$q_i$的K个样本,以及$\mathcal{T}_i$生成的损失函数$\mathcal{L}_{\mathcal{T}_i}$,学习到$\mathcal{T_i}\sim p(\mathcal{T})$.
对于meta learning,对于一个$\mathcal{T}_i\sim p(\mathcal{T})$,模型利用K个样本,以及对应的$\mathcal{L}_{\mathcal{T}_i}$进行训练。
模型$f$通过考虑新数据上的test error相对于参数的变化,而获得提升。
算法详情
首先算法随机初始化$\theta$.
接下来不断重复以下步骤:
- 选取一批任务$\mathcal{T}_i \sim p(\mathcal{T})$
- 利用梯度下降更新每一个任务对应的参数$\theta_i’ = \theta - \alpha \nabla_\theta \mathcal{L}_{\mathcal{T}_i}(f_\theta)$
- 二次求导,更新$\theta$: $\theta \leftarrow \theta - \beta\nabla_\theta \sum_{\mathcal{T}_i \sim p(\mathcal{T})}\mathcal{L}_{\mathcal{T}_i}(f_{\theta_i’})$
以上步骤可以写成以下的目标函数
Specify
监督的回归与分类
回归问题常选择MSE作为损失函数
而分类问题常选择cross-entropy loss
在上述算法中,对于每一个被选取的任务,从中选取K个数据$\mathcal{D} = \{ x^{(j)}, y^{(j)} \}\in \mathcal{T}_i$, 用于更新得到$\theta_i’$. 同时选取一个$\mathcal{D}_i’$,用于之后最终更新$\theta$.
强化学习
每一个强化学习任务$\mathcal{T}_i$都包含一个初始状态分布$q_i(x_1)$与一个转移分布$q_i(x_{t+1}|x_t, a_t)$,以及对应于reward function $R$的损失函数$\mathcal{L}_{\mathcal{T}_i}$.
同样对于每一个选取的任务$\mathcal{T}_i$,通过$f_\theta$选取K个trajectories $\mathcal{D} = \{ (x_1, a_1, \cdots, x_H) \}$,用于更新$\theta_i’$. 同时选取一个$\mathcal{D}_i’$,用于最后更新$\theta$.