Java教程

Learning to Learning with Gradients———论文阅读第二部分

本文主要是介绍Learning to Learning with Gradients———论文阅读第二部分,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

(前几天忙着处理联邦学习和终身学习任务,加上有点犯懒,没有坚持看论文,今天继续!!)
第一部分点击这里!!
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(θ,Dji​tr​)

我们的目标是结合所有任务的梯度信息,也就是优化 θ \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θ​ ∑ji​​L(ϕi​,Dji​test​)=minθ​ ∑ji​​L(θ−α∇θ​L(θ,Dji​tr​),Dji​test​)

也就是对于所有任务来说,我们从元学习参数变为各个任务的参数后,让整一个loss达到最小。算法如下;
在这里插入图片描述
(先到这里啦,明天补充细节,同时仔细讲解一下算法)

这篇关于Learning to Learning with Gradients———论文阅读第二部分的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!