论文阅读笔记《Meta-learning with Latent Embedding Optimization》

核心思想

  本文提出一种基于参数优化的小样本学习算法(LEO),与MAML,Meta-SGD算法相比,本文最重要的改进就是引入了一个低维的隐空间(Latent Space)。为了方便理解本文,我们首先回顾一下MAML算法,其目标是通过元训练得到一个好的初始化模型θ\theta,使得模型能够通过少量样本的微调训练就能快速的适应任务需求,得到任务Ti\mathcal{T}_i对应的模型参数θi\theta_i'。为了实现这一目标,MAML算法通过两个层次的训练,内层循环(inner loop)是由一个随机初始化的θ\theta开始,为每个任务Ti\mathcal{T}_i都更新得到一个参数θi\theta_i',更新过程如下
论文阅读笔记《Meta-learning with Latent Embedding Optimization》
完成一个内层循环后,能够获得若干个任务对应的模型参数θi\theta_i',然后再对初始化参数θ\theta进行更新(外层循环,outer loop),更新过程如下
论文阅读笔记《Meta-learning with Latent Embedding Optimization》
经过多次内外循环迭代后,得到最终模型参数θ\theta。值得注意的是,这一系列的更新过程,都是在模型的参数空间Θ\Theta中进行的,这是一个巨大的高维空间,包含了整个模型的所有参数。此外每个任务对应的模型参数θi\theta_i'都是一个实例化的模型(假设模型是一个卷积神经网络,我们知道这个模型的每个卷积核中的每个权重参数,就是得到了一个实例化模型,并且对于每个任务我们都有相对应的实例化模型)。
  了解了MAML后,我们再来看看本文LEO做了那些改进,算法流程如下图所示
论文阅读笔记《Meta-learning with Latent Embedding Optimization》
可以看到本文首先利用一个编码器ϕe\phi_e和关系网络ϕr\phi_r将元训练集中的样本xnkx_n^k投影到一个低维的隐空间z\mathbf{z}中,得到每个任务对应的隐向量zz',然后再利用解码器ϕd\phi_d将隐向量zz'转化为高维的模型参数θi\theta_i',用于类别预测并计算损失。在内层循环中,不再直接对模型参数θi\theta_i'进行更新,而是对隐向量zz'进行更新,更新过程如下
论文阅读笔记《Meta-learning with Latent Embedding Optimization》
完成一个内层循环后,同样可以获得多个任务对应的模型参数θi\theta_i',然后在外层循环中,对编码器ϕe\phi_e,关系网络ϕr\phi_r,解码器ϕd\phi_d和学习率α\alpha等参数进行更新,更新过程如下
论文阅读笔记《Meta-learning with Latent Embedding Optimization》
  LEO算法的整体思路已经明确了,下面我们具体介绍下编码器ϕe\phi_e,关系网络ϕr\phi_r和解码器ϕd\phi_d是怎样实现的。其中编码器ϕe\phi_e比较简单就是一个常规的特征提取网络,将输入的样本投影到一个编码空间中。对于任务Ti\mathcal{T}_i,其包含NN各类别,每个类别包含KK个样本,因此经过编码后能够得到NKNK个编码(特征向量),将所有的编码,两两配对级联起来,可以得到(NK)2(NK)^2组编码,将其输入到关系网络ϕr\phi_r中,并将输出的参数按照类别进行分组,每组再求平均值,得到NN个类别对应的输出结果,计算过程如下
论文阅读笔记《Meta-learning with Latent Embedding Optimization》
可以看到关系网络输出的参数其实是一个多维高斯混合分布的均值μne\mu_n^e和方差σne\sigma_n^e,共有2×N2\times N个参数,然后在这个分布中进行采样,得到每个类别对应的隐向量znz_n。将隐变量znz_n输入到解码器中,得到另一个多维高斯混合分布的均值μnd\mu_n^d和方差σnd\sigma_n^d,从中采样得到模型参数权重wnw_n,计算过程如下
论文阅读笔记《Meta-learning with Latent Embedding Optimization》
本文中的模型就是一个NN维的softmax分类器,所以模型参数θi={wnn=1,...,N}\theta_i'=\left \{w_n|n=1,...,N\right \},因此得到了wnw_n就得到了模型参数θi\theta_i'。但是与MAML得到的实例化模型不同,本文得到的其实是一个条件概率分布,并从中随机采样得到每个任务对应的模型参数θi\theta_i'

实现过程

网络结构

  分类器,编码器,关系网络,解码器均采用3层MLP。

损失函数

  内存循环采用交叉熵损失函数,计算过程如下
论文阅读笔记《Meta-learning with Latent Embedding Optimization》
外层循环采用的损失函数包含四个部分,计算过程如下
论文阅读笔记《Meta-learning with Latent Embedding Optimization》
第一项LTival\mathcal{L}_{\mathcal{T}_i}^{val}仍采用交叉熵损失函数;第二项是一个加权KL散度,其中p(zn)N(0,I)p(z_n)\sim N(0,I)是一个标准正态分布,这一项是用于正则化隐空间,鼓励生成模型(解码器)通过去除隐空间中梯度维度之间的联系,来简化LEO的内层循环更新过程;第三项的目的是为了鼓励编码器和关系网络生成的参数初始化尽可能地接近适当的编码,这将降低自适应过程的负担;最后一项是一个L2正则化损失项,计算过程如下
论文阅读笔记《Meta-learning with Latent Embedding Optimization》

训练策略

  算法的训练过程如下
论文阅读笔记《Meta-learning with Latent Embedding Optimization》

算法推广

  与MAML一样,本文的算法也可以引入到其他领域如强化学习,NLP等,但本文没有做进一步的探讨。

创新点

  • 在MAML的基础上,引入了隐空间,并且在隐空间内实现参数的内层循环更新
  • 不是直接利用编码器或解码器得到对应的隐变量或模型权重参数,而是得到一个条件概率分布,通过随机采样的方式,来间接的获得参数

算法评价

  本文是在MAML的基础上进一步进行研究,首先对每一个新任务的模型进行参数初始化时,其参数都是采样自一个与训练数据相关的条件概率分布(wnw_n采样自条件概率分布p(wzn)p(w|z_n),而znz_n又是采样自p(zDntr)p(z|\mathcal{D}^{tr}_n)),因此每个任务模型的起点都是与任务相关的,这有利于自适应更新过程。其次,利用关系网络能够更好地考虑到所有输入数据的之间关系。然后,在低维的隐空间内进行参数更新,这种方式能更有效地适应模型的行为。最后,通过随机采样的方式获取模型参数,这使得整个过程都是随机的,能够表达出小样本条件下的不确定性。

如果大家对于深度学习与计算机视觉领域感兴趣,希望获得更多的知识分享与最新的论文解读,欢迎关注我的个人公众号“深视”。论文阅读笔记《Meta-learning with Latent Embedding Optimization》