(前几天忙着处理联邦学习和终身学习任务,加上有点犯懒,没有坚持看论文,今天继续!!)
第一部分点击这里!!
Learning to Learning with Gradients———论文阅读第一部分
四. 基于模型不可知的元学习算法(MAML)
前三章我们主要探讨了元学习的基本概念,以及如何以数学方式去描述任何一个元学习算法,以及元学习应该具备的性质等,这一节,论文想提出一个通用的、与模型无关的元学习算法。作者主要关注的是如何去训练出事参数,使得模型在新任务重使用少量数据计算就能达到最大的性能。这也就是MAML!!(很重要的元学习算法)
4.1 一般的算法
作者首先提到了,在神经网络中,可能可以学习到适用于所有任务分布的内部特征(也就是任务分布中的关键信息都能get到)而不是只针对于一个任务。换句话说,作者目的是让模型在新任务上使用基于梯度的学习规则进行微调(这里可以理解为,当我们把模型直接拿来测试效果很差,但我只需要从测试集上很少抽一部分进行几步的训练,就能得到很好的结果,也就是fine-tune)。也就是找到对任务变化很敏感的参数,当进行梯度计算时(基于损失的梯度方向),这样微调就能带来很大的变化。如下图
θ
\theta
θ是我们的元学习参数,
ϕ
\phi
ϕ是适应于各个任务上的参数(这里和原本的MAML是反着的,原本是
ϕ
\phi
ϕ才是元学习参数,读者自行转换一下)。联系上文,就是说各个任务的计算出来的梯度都各不相同,这时沿着各个方向的梯度进行调整就会得到很大的改变。接下来的问题是如何基于这种思想去传递每一个任务的梯度。下面我们以数学公式表示:
对于每一个任务,我们从原本元学习参数
θ
\theta
θ进行梯度下降后可以得到针对此任务最敏感的参数:
ϕ i = θ − α ∇ θ L ( θ , D j i t r ) \phi_i\ =\ \theta - \alpha\nabla_\theta L(\theta,D^{tr}_{j_i}) ϕi = θ−α∇θL(θ,Djitr)
我们的目标是结合所有任务的梯度信息,也就是优化 θ \theta θ在样本任务性能。数学公式表达如下:
min θ ∑ j i L ( ϕ i , D j i t e s t ) = min θ ∑ j i L ( θ − α ∇ θ L ( θ , D j i t r ) , D j i t e s t ) \min_\theta\ \sum_{j_i} L(\phi_i,D^{test}_{j_i}) = \min_\theta\ \sum_{j_i}L(\theta - \alpha\nabla_\theta L(\theta,D^{tr}_{j_i}),D^{test}_{j_i}) minθ ∑jiL(ϕi,Djitest)=minθ ∑jiL(θ−α∇θL(θ,Djitr),Djitest)
也就是对于所有任务来说,我们从元学习参数变为各个任务的参数后,让整一个loss达到最小。算法如下;
(先到这里啦,明天补充细节,同时仔细讲解一下算法)