2017年马上就要过去了,在这一年中,肯定很多搞深度学习的知友都会看到Meta Learning/ Learning to Learn 这个词。是的,它今年很火。在NIPS上,被Oriol Vinyals和Pieter Abbeel多次提及,既有Meta Learning symposium也有Meta Learning workshop。然而,Meta Learning是非常让人困惑的一个词,到底要Meta Learning什么呢?什么才是Meta Learning?为什么研究Meta Learning?Meta Learning会有怎样的研究方向?Meta Learning未来会怎样发展?这些确实很值得我们去思考。
在本文之前,智能专栏上已经有多篇介绍Meta Learning的文章:
Kay Ke:概要:NIPS 2017 Deep Learning for Robotics Keynotezhuanlan.zhihu.comFlood Sung:最前沿:百家争鸣的Meta Learning/Learning to learnzhuanlan.zhihu.com
Flood Sung:机器人革命与学会学习Learning to Learnzhuanlan.zhihu.com
Flood Sung:学会学习Learning to Learn:让AI拥有核心价值观从而实现快速学习zhuanlan.zhihu.com
那么在这篇博文中,我打算更深入的谈谈我对Meta Learning的理解,也算是全新的视角。
我不知道是谁最先把Meta Learning翻译成元学习的,但从中文的角度问你“元学习是什么?” 你要怎么回答?老实说我也是懵逼的。特意查一下元在字典中的意思,主要是有初始,根源的意思。但Meta Learning不是初始呀,这里的Meta更应该是指更高level的东西。Learning to Learn这个词看起来应该更好理解,直接翻译就对了:学会学习。所以Meta Learning可以理解为要学习一种学习能力。但是什么是学习能力呢?如何描述?一般我们说某个学神学习能力强大概是说学神记忆力好,理解能力快之类的东西。但是什么是理解能力呢?依然非常难以描述。
实际上这里我们遇到了和高维空间一样的问题。我们很难去想象高维空间,我们也很难去想象meta的东西到底是什么。更何况,还有meta-meta,meta-meta-meta...的东西。也许这就是大概被称为智能的东西吧。
以前,我们只是不知道Deep Learning是怎么学的,但至少知道是在学习下棋还是学习图像识别,现在对于Meta Learning,我们连学什么都不太清楚了。
那么Meta到底如何定义?我们只能回归到Machine Learning本身来考虑这个概念。这里我给出一个我对Meta的定义:
任何超出学习(Learning/Training)内部的东西都是Meta的!
什么是学习内部呢?
有两个视角,一个是深度学习技术上的学习,一般我们也称为训练,另一种是人类角度看的学习。
现在大家都在自嘲自己是炼金术士,我们每天调的参数就是Meta的,也就是在学习外部!所谓的学习就是这个训练过程,也可以说是反向传播过程。超出这个“学习的”都是学习外部,都是Meta的。
这包含了以下这些类别:
我发现要区别是不是Meta的就是把“学习”当做一个小孩,你叫他怎么做怎么做的东西都是Meta的。那么所谓的“学习”就是沿着你设定的方向实际移动的过程,比如梯度下降中参数实际变化过程叫学习。而学会学习就是使用神经网络自己去构造上面的任意设定。
也因此,我们可以把目前meta learning的一些研究工作排排坐了。比如说
[1611.01578] Neural Architecture Search with Reinforcement Learningarxiv.org
这就属于神经网络结构的,很明显。
[1703.03400] Model-Agnostic Meta-Learning for Fast Adaptation of Deep Networksarxiv.org
MAML就属于参数的初始化。
[1606.04474] Learning to learn by gradient descent by gradient descentarxiv.org
这篇则是构造一个神经网络的优化器来替代Adam,SGD。
Meta-Critic Networks for Sample Efficient Learningarxiv.org
这篇则是考虑学习一个更好的loss。
还有
Optimization as a Model for Few-Shot Learningopenreview.net
这篇则既学习一个好的初始化,也学习网络的更新。
那么看到这里大家显然就可以看出来了,我们可以切入其中的某一个角度来做文章。
这里面可能最最困难的就是直接取代反向传播。如果能用一个神经网络来代替目前的反向传播,那就牛大了。
说完深度学习技术角度的Meta,我们再来看看人类视角下的Meta。所谓人类视角下的Meta,就是从真正的学习知识的角度来看什么是Meta的。
比如说目前Reinforcement Learning上一个大量被用来测试的实验是3D Maze Navigation。让agent去导航到一个目标。实验中,目标要不断变化。这意味着要使Agent在下一个episode中快速的找到目标,需要Agent在每一次episode中不断的获取Maze的结构和目标的位置,从而在新的episode能够直接去寻找的这个目标。那么,从Meta Learning的角度看,Maze的结构和目标的位置就是所谓的Meta知识。那么这种知识在RL下只使用state,action的数据是无法得知的,还需要reward才能在顶层进行判断。因此,meta RL的基本思想非常简单,就是在输入增加上一次的reward,或者用之前的(state,action,reward)来推断Meta知识。虽然说Meta-RL是通用的,按照原作者的意思,是学习一个rl算法,但是在具体的比如这里的3d navigation问题上,推断目标位置和记忆Maze形状是最主要的。
而在监督学习上,Meta知识又完全不一样了。人类很神奇的天生具备meta知识不用学。比如人视觉具有的one shot learning能力。看一个新东西就能分辨。这个实际上是天然的具备比较不同视觉物体相似情况的能力。再有比如视觉跟踪,之前大家都只是把它当做一个计算机视觉的问题在看待,但是实际上视觉跟踪是人类的一种Meta能力,也是不用学的,就直接可以跟踪任何新的没见到的物体。如果有人看到一个全新的东西眼球就不会转了,那么这个世界的规律大概就不一样了。
从一定程度上说,Meta Learning的本意就是要学习Meta Knowledge。Meta knowledge可以具体如视觉的跟踪比较,也可以抽象的就是某一个学习算法。但是,显而易见的,越具体的东西越容易去研究,越抽象的东西就越难去学习。
这里举最新的一篇Robot Learning的文章为例,来自Fei-Fei Li:
https://arxiv.org/abs/1710.01813arxiv.org
这篇文章采用Neural Program Induction这个很酷的方法来做few shot imitation learning,取得了很不错的效果。但是,我们要深究一下原理,实际上这篇文章是把一个机器人的manipulation通过人为的方式分解成多步动作,神经网络只需要学习如何组成这些动作,然后执行。这一定程度上大幅度简化了问题的难度。为了实现few shot imitation learning,则让神经网络能够meta的根据已有的demo去构建动作的顺序。所以,这里的meta知识就是去组织动作。这个在人为的分解下变得简单了。如果没有人为分解,要求神经网络自己去发现步骤,并组织这些步骤,难度就大太多了。
Meta knowledge又天然的和Hierarchical Reinforcement Learning(HRL)联系起来。我们知道HRL最难的部分就是去自主的学习一个好的Hierarchy,好的Option。但是实际上仅靠单一任务是很难做的,因为没有对比,就是我们人也不知道哪些是顶层的,哪些是底层的。但是Meta Learning的设定则提供了这样的实现机会。我们可以通过多个类似的任务来学习一个meta knowledge,这个meta knowledge就是hierarchy,就是高层的知识。在OpenAI之前很火的高中生的那篇paper中对这个进行了验证并取得了不错的效果:
https://arxiv.org/abs/1710.09767arxiv.org
2018年马上就要到来了,这里也大胆预测一下Meta Learning未来的发展。可以说,当前的Meta Learning和2015年的Deep Reinforcement Learning非常像,刚刚起步,开始有一些很酷的应用效果(特别是Pieter Abbeel团队的One shot Visual Imitation Learning工作),目前的工作也就是几十篇文章。因此,明年,Meta Learning必将会有一波爆发,将体现在以下两个大的方面:
(1)理论算法研究。目前的Meta Learning还是百花齐放的情况,当然从我们前面对Meta的分析可以看到Meta不同角度可以看到完全不同的东西。因此,接下来还会有很多工作会基于不同的视角提出不同的算法。我们依然期待一个大一统的框架。然而目前的情况是越视角单一,越可能做的效果好,毕竟视角的选择等价于人类的知识赋予,约等于简化了神经网络的学习难度。完全通用的Meta Learning比如MAML这种要打败专门设计的算法会有难度,这其实也给了大家很多机会(现在Chelsea Finn 在MAML上疯狂的灌)
(2)具体应用研究。目前监督学习主要是image recognition。这显然是很局限的。Meta Learning,或者few shot learning可以应用到视觉语音等各种方面。因此,新的应用研究也是很值得做的。从今年few shot visual recognition研究中已经可以看到迹象,小实验像omniglot这种已经基本解决,开始向large scale的数据发起进攻。从这里也看出few shot learning开始从很不可能变成可能了。然后另一块很重要的当然是Robot Learning了。本来研究Meta Learning就不是为了区区的视觉图像,而是机器人的快速学习,这个有很强的现实意义,是大幅度推进机器人革命的关键一步。因此,明年如果没有超越MAML的算法出现,会是难以想象的。更强的few shot imitation learning感觉会彻底的改变imitation learning这个领域。然后HRL结合Meta Learning也是必然的趋势,高中生那篇文章还是稍显简单了,更通用更强大的Meta HRL算法恐怕也要问世,而这显然可以应用在星际2上,所以DeepMind不研究也不行呀。
期待2018年成为Meta Learning真正爆发的一年!