0 前言
Meta Learning是深度学习领域近年来最火的研究方向之一,在这一两年内涌现出了大量的paper,可谓百花齐放!相信有很多想入坑的同学很想了解Meta Learning的整个研究概况及进展,却苦于找不到一篇好的综述。那么现在机会来了,最近来自爱丁堡大学的
Timothy M. Hospedales homepages.inf.ed.ac.uk老师主笔撰写了一篇非常全面有深度的综述:
Meta-Learning in Neural Networks: A Survey arxiv.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的学习目标:
其中 是meta knowledge, 是task的分布,而D是task对应的数据集。简而言之,就是我们希望能够学到一个通用的meta knowledge,使得不同的task的Loss都能越小越好。
类似于传统的机器学习,Meta Learning分为Meta-train和Meta-test两个阶段,在Meta-train阶段中,我们通过采样大量的source task来学习meta knowledge (最大化其log likelihood):
然后再Meta-test使用target task来验证效果。这里要注意meta knowledge并不等同于用于解决task的model,model的参数是单独存在或者包含于meta knowledge中。所以,Meta-test的目标是基于已经学到的meta knowledge来寻找最优的model :
有了以上的定义,我们要怎么来训练这个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。
这么做可以完全模拟meta-test的过程,假设我们已经找到了最优的meta knowledge,那么意味着我们使用train set优化model得到参数也是最优的。
BiLevel Optimization的思想非常重要,几乎所有的meta learning问题都可以套在这个上面。
同时,我们也看到有一些meta learning的做法并没有显式的采用Bilevel optimization,但是实际上BiLevel Optimization中的Inner loop并不一定要用优化的方法,可以是任意的方式。所以,优化后的model 可以是隐式的通过meta knowledge来表示:
公式中的 即为基于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:
- 选择一个application,构造为meta learning的问题
- 确定meta-objective
- 选择一个或多个meta-representation
- 选择一个meta-optimizer
或者
- 确定meta-objective
- 选择一个或多个meta-representation
- 选择一个meta-optimizer
- 根据以上寻找一个适合的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-benchmark5 小结
总的来说,这篇综述囊括了当前Meta Learning几乎所有的研究方向及方法论,具有很强的指导意义,并且也指出了当前Meta Learning存在的问题及发展方向。希望有越来越多的朋友对Meta Learning感兴趣并投入其中。
来源:oschina
链接:https://my.oschina.net/u/4390260/blog/3275232