Meta Learning/Learning to Learn, 到底我们要学会学习什么?||介绍了几篇元学习文章
https://www.zhihu.com/question/62482926/answer/625352436
转载:https://zhuanlan.zhihu.com/p/32270990
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的文章:
Kay Ke:概要:NIPS 2017 Deep Learning for Robotics Keynotezhuanlan.zhihu.comFlood Sung:最前沿:百家争鸣的Meta Learning/Learning to learnzhuanlan.zhihu.comFlood Sung:机器人革命与学会学习Learning to Learnzhuanlan.zhihu.comFlood Sung:学会学习Learning to Learn:让AI拥有核心价值观从而实现快速学习zhuanlan.zhihu.com
那么在这篇博文中,我打算更深入的谈谈我对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的。
这包含了以下这些类别:
- 训练超参数Hyper Parameters:包括Learning rate,Batch Size,input size等等目前要人为设定的参数
- 神经网络的结构
- 神经网络的初始化
- 优化器Optimizer的选择。比如SGD,Adam,RMSProp
- 神经网络参数
- 损失函数的定义。那么多gan的文章基本上就是改改损失函数。
- 反向传播Back-propagation。 对,这个也是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
这篇则既学习一个好的初始化,也学习网络的更新。
那么看到这里大家显然就可以看出来了,我们可以切入其中的某一个角度来做文章。
这里面可能最最困难的就是直接取代反向传播。如果能用一个神经网络来代替目前的反向传播,那就牛大了。
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.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
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/Learning to Learn, 到底我们要学会学习什么?||介绍了几篇元学习文章相关推荐
- 一文弄懂元学习 (Meta Learing)(附代码实战)《繁凡的深度学习笔记》第 15 章 元学习详解 (上)万字中文综述
<繁凡的深度学习笔记>第 15 章 元学习详解 (上)万字中文综述(DL笔记整理系列) 3043331995@qq.com https://fanfansann.blog.csdn.net ...
- coursera课程learning how to learn的主要内容-学会学习(一)
本篇为听课之后,看着英文写的,如果翻译不对,麻烦指出,我尽可能的把最重要的内容整理出来,方便其他人学习以及自己复习. 目录 1. focused mode 和diffused mode(集中模式与发散 ...
- Meta Learning 元学习
来源:火炉课堂 | 元学习(meta-learning)到底是什么鬼?bilibili 文章目录 1. 元学习概述 Meta 的含义 从 Machine Learning 到 Meta-Learnin ...
- 元学习Meta learning深入理解
目录 基本理解 元学习与传统的机器学习不同在哪里? 基本思想 MAML MAML与pre-training有什么区别呢? 1. 损失函数不同 2. 优化思想不同 MAML的优点及特点 MAML工作机理 ...
- Learning to Learn:图神经网络上的元学习
© 作者|田长鑫 机构|中国人民大学信息学院 研究方向 | 图表示学习和推荐系统 来源 | RUC AI Box 图神经网络(GNN)在实际应用中往往会受到可用样本数量太少的限制,而元学习(meta- ...
- 【李宏毅】元学习(Meta learning)的概念与步骤
[李宏毅]元学习(Meta learning)的概念与步骤 1 概念 2 元学习步骤 2.1 定义一组学习算法 2.2 评价一个学习算法 F F F 的好坏 只讲了元学习概念和步骤,简单做了解,稍微复 ...
- Learning What to Learn for Video Object Segmentation
Learning What to Learn for Video Object Segmentation 摘要 引言 现有方法 特征匹配技术 我们的方法 网络结构 网络创新点 相关工作 VOS中的目标 ...
- 元学习—Meta Learning的兴起
来源:专知 [导读]元学习描述了训练深度神经网络相关的更高级别的元素.在深度学习文献中,"元学习"一词经常表示神经网络架构的自动化设计,经常引用" AutoML" ...
- (转)Paper list of Meta Learning/ Learning to Learn/ One Shot Learning/ Lifelong Learning
Meta Learning/ Learning to Learn/ One Shot Learning/ Lifelong Learning 2018-08-03 19:16:56 本文转自:http ...
最新文章
- 5折交叉验证_交叉验证:评估模型表现
- c++ class struct同名_C/C++面向对象编程之封装
- c# 智能升级程序代码(1)
- Vue源码后记-vFor列表渲染(3)
- 四级过了,我却高兴不起来!
- Barrage 弹幕实现原理
- i3能装Linux虚拟机,使用i3wm重新安装Ubuntu
- IDL 读取葵花8(Himawari-8)HSD数据
- 一个独特的简历生成器,开源了!
- WinSnap 截图工具绿色中文特别版
- unity VR中制作小地图的方法
- 三维重建方法--激光or视觉
- 焊接摆动与不摆动的区别
- 2019年第十届蓝桥杯[Java]
- 浅谈JAVA程序破解(原创)
- SimpleMind Pro(电脑版思维导图软件)官方中文版V1.30.0.6068下载 | 电脑版思维导图软件哪个好用?
- excel图文教程:应用PQ工具进行数据整理
- 2019年中国大数据BI(商业智能)行业预测报告
- 如何查看高清卫星地图
- 跨专业考研必须要了解的5个常识!
热门文章
- Intel Xeon E5-4650 VS AMD Opteron 6380
- C 语言常量pi,如何在C中使用PI常数
- DNA存储大数据,峰哥身价暴涨10个亿
- 第三次作业 软件产品同质化问题
- boss直聘python_python分析BOSS直聘的某个招聘岗位数据
- 我的世界服务器没有显示物品ID,我的世界物品ID不显示怎么办
- 大数分解Pollard_rho模板
- c++之 std::tie
- Java练手项目2:基于Java的坦克大战游戏(学习Java必备!!!)
- 在线沙盒(恶意软件行为分析工具)整理介绍