最前沿:Meta Learning/Learning to Learn, 到底我们要学会学习什么?

Meta Learning/Learning to Learn是什么?到底我们要学会学习什么?看作者如何告诉你。
文章图片

1 前言


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的文章:

v2-344c84c3719738a1cf316ee2e654b5b9_bKay Ke:概要:NIPS 2017 Deep Learning for Robotics Keynote

v2-3ce09841f5ec27b18afa2f741512b78e_bFlood Sung:最前沿:百家争鸣的meta Learning/Learning to learn

v2-b8e70630d579926c5a13e0e19580e05c_bFlood Sung:机器人革命与学会学习Learning to Learn

v2-3ce09841f5ec27b18afa2f741512b78e_bFlood Sung:学会学习Learning to Learn:让AI拥有核心价值观从而实现快速学习

那么在这篇博文中,我打算更深入的谈谈我对meta Learning的理解,也算是全新的视角。

2 到底什么是meta的?

我不知道是谁最先把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的!


什么是学习内部呢?

有两个视角,一个是深度学习技术上的学习,一般我们也称为训练,另一种是人类角度看的学习。

2.1 深度学习技术视角的meta

现在大家都在自嘲自己是炼金术士,我们每天调的参数就是meta的,也就是在学习外部!所谓的学习就是这个训练过程,也可以说是反向传播过程。超出这个“学习的”都是学习外部,都是meta的。

这包含了以下这些类别:

1. 训练超参数Hyper Parameters:包括Learning rate,Batch Size,input size等等目前要人为设定的参数

2. 神经网络的结构

3. 神经网络的初始化

4. 优化器Optimizer的选择。比如SGD,Adam,RMSProp

5. 神经网络参数

6. 损失函数的定义。那么多gan的文章基本上就是改改损失函数。

7. 反向传播Back-propagation。 对,这个也是meta的,我们通过梯度下降的公式固定了参数的更新方式。神经网络傻傻只能按照这个公式来更新参数。

我发现要区别是不是meta的就是把“学习”当做一个小孩,你叫他怎么做怎么做的东西都是meta的。那么所谓的“学习”就是沿着你设定的方向实际移动的过程,比如梯度下降中参数实际变化过程叫学习。而学会学习就是使用神经网络自己去构造上面的任意设定。

也因此,我们可以把目前meta learning的一些研究工作排排坐了。比如说

[1611.01578] Neural Architecture Search with Reinforcement Learning

这就属于神经网络结构的,很明显。

[1703.03400] Model-Agnostic meta-Learning for Fast Adaptation of Deep Networks

MAML就属于参数的初始化。

[1606.04474] Learning to learn by gradient descent by gradient descent

这篇则是构造一个神经网络的优化器来替代Adam,SGD。

meta-Critic Networks for Sample Efficient Learning

这篇则是考虑学习一个更好的loss。

还有

Optimization as a Model for Few-Shot Learning

这篇则既学习一个好的初始化,也学习网络的更新。

那么看到这里大家显然就可以看出来了,我们可以切入其中的某一个角度来做文章。

这里面可能最最困难的就是直接取代反向传播。如果能用一个神经网络来代替目前的反向传播,那就牛大了。

2.2 人类视角下的meta:meta Knowledge

说完深度学习技术角度的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.01813

这篇文章采用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.09767

3 未来的meta Learning将会如何发展?

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真正爆发的一年!

最后,祝大家新年快乐!
 
相关标签:
  • meta
  • Learning
  • 深度学习

参与评论

Flood Sung

研究Deep Reinforcement Learning, Meta Learning, Few shot Learning, Robot Learning. 目前集中在Meta Learning上,期望让计算机学习Meta层面的知识,从而通往AGI!

推荐文章

解读人工智能的局限性与发展—从Alpha Go战胜柯洁谈起 尝试揭开Atlas后空翻的面纱-其背后的技术浅析 工业机器人抓取时怎么定位的?用什么传感器来检测? 深度相机哪家强? 一探究竟:特斯拉Model 3 电池系统