荐读 Meta-Learning in Neural Networks: A survey

醉酒当歌 提交于 2020-04-20 00:27:30

0 前言

Meta Learning是深度学习领域近年来最火的研究方向之一,在这一两年内涌现出了大量的paper,可谓百花齐放!相信有很多想入坑的同学很想了解Meta Learning的整个研究概况及进展,却苦于找不到一篇好的综述。那么现在机会来了,最近来自爱丁堡大学的

Timothy M. Hospedaleshomepages.inf.ed.ac.uk

老师主笔撰写了一篇非常全面有深度的综述:

Meta-Learning in Neural Networks: A Surveyarxiv.org

在这篇综述里,作者对Meta Learning这个领域进行了全新系统性进行分类,并且充分分析了Meta Learning在不同应用上的研究进展。下面我们对这篇综述进行一定的解读,希望对感兴趣的朋友有帮助!

1 Meta Learning如何定义?

Meta Learning,也称为Learning to Learn,即学会学习,顾名思义就是学会某种学习的技巧,从而在新的任务task上可以学的又快又好。这种学习的技巧我们可以称为Meta-knowledge。Meta Learning和传统的机器学习最大的不同便在于Meta Learning是task level的,即每一个task都可以认为是meta learning的样本。基于这样的定义,我们可以得到Meta Learning的学习目标:

\min _{\omega} \underset{\mathcal{T} \sim p(\mathcal{T})}{\mathbb{E}} \mathcal{L}(\mathcal{D} ; \omega)

其中 \omega 是meta knowledge, p(\mathcal{T}) 是task的分布,而D是task对应的数据集。简而言之,就是我们希望能够学到一个通用的meta knowledge,使得不同的task的Loss都能越小越好。

类似于传统的机器学习,Meta Learning分为Meta-train和Meta-test两个阶段,在Meta-train阶段中,我们通过采样大量的source task来学习meta knowledge (最大化其log likelihood):

\omega^{*}=\arg \max _{\omega} \log p\left(\omega | \mathscr{D}_{\text {source}}\right)

然后再Meta-test使用target task来验证效果。这里要注意meta knowledge并不等同于用于解决task的model,model的参数是单独存在或者包含于meta knowledge中。所以,Meta-test的目标是基于已经学到的meta knowledge来寻找最优的model \theta :

\theta^{*}(i)=\arg \max _{\theta} \log p\left(\theta | \omega^{*}, \mathcal{D}_{\text {target}}^{\text {train}(i)}\right)

有了以上的定义,我们要怎么来训练这个meta knowledge呢?这就要引出Meta Learning最常见的BiLevel Optimization的做法。

2 什么是BiLevel Optimization?

记住Meta Learning是Task Level的,而一般的task会包含train set或test/val set,在meta learning中我们往往也称之为Support Set和Query Set。正常训练model的流程就是先使用train set训练,然后再使用test/val set 测试。因此,在meta-training的过程中,我们可以构造两层的optimization优化过程,在inner-loop即内层中使用train set更新model,然后再outer-loop基于更新后的model优化meta knowledge。

\begin{aligned} \omega^{*} &=\underset{\omega}{\arg \min } \sum_{i=1}^{M} \mathcal{L}^{\operatorname{meta}}\left(\theta^{*(i)}(\omega), \omega, \mathcal{D}_{\text {source}}^{\text {val }(i)}\right) \\ \text { s.t. } \theta^{*(i)}(\omega) &=\underset{\theta}{\arg \min } \mathcal{L}^{\text {task}}\left(\theta, \omega, \mathcal{D}_{\text {source}}^{\text {train}(i)}\right) \end{aligned}

这么做可以完全模拟meta-test的过程,假设我们已经找到了最优的meta knowledge,那么意味着我们使用train set优化model得到参数也是最优的。

BiLevel Optimization的思想非常重要,几乎所有的meta learning问题都可以套在这个上面。

同时,我们也看到有一些meta learning的做法并没有显式的采用Bilevel optimization,但是实际上BiLevel Optimization中的Inner loop并不一定要用优化的方法,可以是任意的方式。所以,优化后的model 可以是隐式的通过meta knowledge来表示:

\begin{array}{ccc} \min _{\omega} & \underset{\mathcal{T} \sim p(\mathcal{T})}{\mathbb{E}} & \sum_{(\mathbf{x}, y) \in \mathcal{D}^{v a l}}\left[\left(\mathbf{x}^{T} \mathbf{g}_{\omega}\left(\mathcal{D}^{t r}\right)-y\right)^{2}\right] \\ & \left(\mathcal{D}^{t r}, \mathcal{D}^{v a l}\right) \in \mathcal{T} & \end{array}

公式中的 \mathbf{g}_{\omega}\left(\mathcal{D}^{t r}\right) 即为基于meta knowledge和train set得到的隐式model。

3 Meta Learning的分类

从上面的定义及优化中可以看到,Meta Learning可以对几乎任意的可调整参数进行meta learning,也因此诞生了无数和meta learning相关的paper。我在之前的blog也一直强调,meta learning就等价于汽车中的涡轮增压,可以应用到各种发动机中。也因为Meta learning是一个通用性的方法论,使得如何对相关的paper进行分类是个问题。

在这篇综述中作者创新性的对Meta Learning按照是什么(What,Meta-Representation),怎么做(How,Meta-Optimizer),为什么(Why,Objective)来分类。

这种分类方式可以说是目前最全面的分类方式了。

  • Meta-Representation,即要meta learn的东西。可以是整个model,也可以是超参,网络结构,loss,data等等
  • Meta-Optimizer,主要指Bilevel-Optimization中的Outer-loop采用的优化方式,这个也就是三种Gradient,RL及Evolution,根据需要选用
  • Meta-Objective,即Meta Learning的具体目标,不同的应用会有不同的目标。

这就是一个方法库,仿佛引出了一条水paper的pipeline:

  1. 选择一个application,构造为meta learning的问题
  2. 确定meta-objective
  3. 选择一个或多个meta-representation
  4. 选择一个meta-optimizer

或者

  1. 确定meta-objective
  2. 选择一个或多个meta-representation
  3. 选择一个meta-optimizer
  4. 根据以上寻找一个适合的application

一个新的idea就诞生了。这也是compositional generalization的直接应用啦。Compositional Generalization果然是创新的一大法宝(大悟)。开个玩笑,现实中要选好以上的每一个组件都是不容易的,并且细节上的创新往往更重要。

4 聊聊Meta Learning的未来

在综述中作者列出了大量的应用,鉴于Meta Learning的涡轮增压属性,哪里都可以用得到。这个时候,我们其实更应该问为什么研究Meta Learning?还是因为Meta Learning可以引向AGI。还记得Jeff Clune提出的AI-GA吗:

  • meta-learning architectures
  • meta-learning the learning algorithms themselves
  • generating effective learning environments

当以上三个都能实现,我们就有希望构造极强的AGI了。环境,网络结构,算法都是学的。这个Meta Learning就是个上帝了。当然,现实情况是我们目前并不具备这样的计算资源及算法来实现,所以才会有Meta Learning的个个细分领域,我们先在小问题上做做看,能不能有效的提取Meta Knowledge?

这又涉及到泛化性generalization的问题。Meta-Knowledge要如何通用才能实现足够的泛化呢?

因此,Meta-Learning的研究有两个趋势,一个是现在的benchmark变得越来越复杂。比如Meta-Dataset,要求在完全不同的dataset上实现泛化。另一个就是让这个meta knowledge变得越来越难提取,比如abstract reasoning, physical reasoning的问题,已经不是简单提取feature就能很好解决的了。这也说明我们现在研究的Meta Learning还是narrow meta learning,而不是general meta learning,一个学会学习的算法,去学习任意的知识。

虽然如此,Meta Learning也已经在很多领域有了直接应用,比如Deep Reinforcement Learning领域,Meta Controller作为强有力的方法大幅提升了DRL的效果,这些成果都让我们对Meta Learning这个方法论充满信心:

https://deepmind.com/blog/article/Agent57-Outperforming-the-human-Atari-benchmark

5 小结

总的来说,这篇综述囊括了当前Meta Learning几乎所有的研究方向及方法论,具有很强的指导意义,并且也指出了当前Meta Learning存在的问题及发展方向。希望有越来越多的朋友对Meta Learning感兴趣并投入其中。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!