1 前言

Meta Learning 元学习或者叫做 Learning to Learn 学会学习 已经成为继Reinforcement Learning 增强学习之后又一个重要的研究分支(以后仅称为Meta Learning)。对于人工智能的理论研究,呈现出了

Artificial Intelligence --> Machine Learning --> Deep Learning --> Deep Reinforcement Learning --> Deep Meta Learning

这样的趋势。

之所以会这样发展完全取决于当前人工智能的发展。在Machine Learning时代,复杂一点的分类问题效果就不好了,Deep Learning深度学习的出现基本上解决了一对一映射的问题,比如说图像分类,一个输入对一个输出,因此出现了AlexNet这样的里程碑式的成果。但如果输出对下一个输入还有影响呢?也就是sequential decision making的问题,单一的深度学习就解决不了了,这个时候Reinforcement Learning增强学习就出来了,Deep Learning + Reinforcement Learning = Deep Reinforcement Learning深度增强学习。有了深度增强学习,序列决策初步取得成效,因此,出现了AlphaGo这样的里程碑式的成果。但是,新的问题又出来了,深度增强学习太依赖于巨量的训练,并且需要精确的Reward,对于现实世界的很多问题,比如机器人学习,没有好的reward,也没办法无限量训练,怎么办?这就需要能够快速学习。而人类之所以能够快速学习的关键是人类具备学会学习的能力,能够充分的利用以往的知识经验来指导新任务的学习,因此Meta Learning成为新的攻克的方向。

以此同时,星际2 DeepMind使用现有深度增强学习算法失效说明了目前的深度增强学习算法很难应对过于复杂的动作空间的情况,特别是需要真正意义的战略战术思考的问题。这引到了通用人工智能中极其核心的一个问题就是要让人工智能自己学会思考,学会推理。AlphaGo在我看来在棋盘特征输入到神经网络的过程中完成了思考,但是围棋的动作空间毕竟非常有限,也就是几百个选择,这和星际2几乎无穷的选择对比就差太多了(按屏幕分辨率*鼠标加键盘的按键 = 1920*1080*10 约等于20,000,000种选择)。然而在如此巨量选择的情况下,人类依然没问题,关键是人类通过确定的战略战术大幅度降低了选择范围(比如当前目标就是造人,挖矿)因此如何使人工智能能够学会思考,构造战术非常关键。这个问题甚至比快速学习还要困难,但是Meta Learning因为具备学会学习的能力,或许也可以学会思考。因此,Meta Learning依然是学会思考这种高难度问题的潜在解决方法之一。

经过以上的分析,不过是为了得出下面的结论:

Meta Learning是实现通用人工智能的关键!

在本文之前,专栏已经发布了两篇和Meta Learning相关的文章:

  1. 学会学习Learning to Learn:让AI拥有核心价值观从而实现快速学习
  2. 机器人革命与学会学习Learning to Learn

之前采用Learning to Learn这个名称是希望让更多的知友明白这个概念,从本篇开始,我们会直接使用Meta Learning这个名称(其实只是因为这个名称看起来更专业更酷?)

关于Meta Learning的概念本文就不介绍了,在上面列出的两篇Blog已有讲解。本文将和大家分享一下Meta Learning的一些最前沿的研究进展,可以说是百家争鸣的阶段。

2 Meta Learning百花齐放的研究思路

为什么说Meta Learning的研究是百家争鸣呢?因为每一家的研究思路都完全不同,真的是各种方法各种试,呈现出一种智慧大爆发的阶段。

关于Meta Learning的papers,我收集了一下:

songrotek/Meta-Learning-Papers

这里主要分析一下最近一两年来的发展情况,先作个分类,然后做一下简要的分析。

2.1 基于记忆Memory的方法

基本思路:既然要通过以往的经验来学习,那么是不是可以通过在神经网络上添加Memory来实现呢?

代表文章:

[1] Santoro, Adam, Bartunov, Sergey, Botvinick, Matthew, Wierstra, Daan, and Lillicrap, Timothy. Meta-learning with memory-augmented neural networks. In Proceedings of The 33rd International Conference on Machine Learning, pp. 1842–1850, 2016.

[2] Munkhdalai T, Yu H. Meta Networks. arXiv preprint arXiv:1703.00837, 2017.

以Meta-Learning with memory-augmented neural networks这篇文章为例,我们看一下他的网络结构:

我们可以看到,网络的输入把上一次的y label也作为输入,并且添加了external memory存储上一次的x输入,这使得下一次输入后进行反向传播时,可以让y label和x建立联系,使得之后的x能够通过外部记忆获取相关图像进行比对来实现更好的预测。

2.2 基于预测梯度的方法

基本思路:既然Meta Learning的目的是实现快速学习,而快速学习的关键一点是神经网络的梯度下降要准,要快,那么是不是可以让神经网络利用以往的任务学习如何预测梯度,这样面对新的任务,只要梯度预测得准,那么学习得就会更快了?

代表文章:

[1] Andrychowicz, Marcin, Denil, Misha, Gomez, Sergio, Hoffman, Matthew W, Pfau, David, Schaul, Tom, and de Freitas, Nando. Learning to learn by gradient descent by gradient descent. In Advances in Neural Information Processing Systems, pp. 3981–3989, 2016

这篇文章的思路很清奇,训练一个通用的神经网络来预测梯度,用一次二次方程的回归问题来训练,然后这种方法得到的神经网络优化器比Adam,RMSProp还要好,这样显然就加快了训练。

2.3 利用Attention注意力机制的方法

基本思路:人的注意力是可以利用以往的经验来实现提升的,比如我们看一个性感图片,我们会很自然的把注意力集中在关键位置。那么,能不能利用以往的任务来训练一个Attention模型,从而面对新的任务,能够直接关注最重要的部分。

代表文章:

[1] Vinyals, Oriol, Blundell, Charles, Lillicrap, Tim, Wierstra, Daan, et al. Matching networks for one shot learning. In Advances in Neural Information Processing Systems, pp. 3630–3638, 2016.

这篇文章构造一个attention机制,也就是最后的label判断是通过attention的叠加得到的:

attention a则通过g和f得到。基本目的就是利用已有任务训练出一个好的attention model。

2.4 借鉴LSTM的方法

基本思路:LSTM内部的更新非常类似于梯度下降的更新,那么,能否利用LSTM的结构训练出一个神经网络的更新机制,输入当前网络参数,直接输出新的更新参数?这个想法非常巧妙。

代表文章:

[1] Ravi, Sachin and Larochelle, Hugo. Optimization as a model for few-shot learning. In International Conference on Learning Representations (ICLR), 2017.

这篇文章的核心思想是下面这一段:

怎么把LSTM的更新和梯度下降联系起来才是更值得思考的问题吧。

2.5 面向RL的Meta Learning方法

基本思路:既然Meta Learning可以用在监督学习,那么增强学习上又可以怎么做呢?能否通过增加一些外部信息的输入比如reward,之前的action来实现?

代表文章:

[1] Wang J X, Kurth-Nelson Z, Tirumala D, et al. Learning to reinforcement learn. arXiv preprint arXiv:1611.05763, 2016.

[2] Y. Duan, J. Schulman, X. Chen, P. Bartlett, I. Sutskever, and P. Abbeel. Rl2: Fast reinforcement learning via slow reinforcement learning. Technical report, UC Berkeley and OpenAI, 2016.

两篇文章思路一致,就是额外增加reward和之前action的输入,从而强制让神经网络学习一些任务级别的信息:

2.6 通过训练一个好的base model的方法,并且同时应用到监督学习和增强学习

基本思路:之前的方法都只能局限在或者监督学习或者增强学习上,能不能搞个更通用的呢?是不是相比finetune学习一个更好的base model就能work?

代表文章:

[1] Finn, C., Abbeel, P., & Levine, S. (2017). Model-Agnostic Meta-Learning for Fast Adaptation of Deep Networks. arXiv preprint arXiv:1703.03400.

这篇文章的基本思路是同时启动多个任务,然后获取不同任务学习的合成梯度方向来更新,从而学习一个共同的最佳base。

2.7 利用WaveNet的方法

基本思路:WaveNet的网络每次都利用了之前的数据,那么是否可以照搬WaveNet的方式来实现Meta Learning呢?就是充分利用以往的数据呀?

代表文章:

[1] Mishra N, Rohaninejad M, Chen X, et al. Meta-Learning with Temporal Convolutions. arXiv preprint arXiv:1707.03141, 2017.

直接利用之前的历史数据,思路极其简单,效果极其之好,是目前omniglot,mini imagenet图像识别的state-of-the-art。

2.8 预测Loss的方法

基本思路:要让学习的速度更快,除了更好的梯度,如果有更好的loss,那么学习的速度也会更快,因此,是不是可以构造一个模型利用以往的任务来学习如何预测Loss呢?

代表文章:

[1] Flood Sung, Zhang L, Xiang T, Hospedales T, et al. Learning to Learn: Meta-Critic Networks for Sample Efficient Learning. arXiv preprint arXiv:1706.09529, 2017.

本文构造了一个Meta-Critic Network(包含Meta Value Network和Task-Actor Encoder)来学习预测Actor Network的Loss。对于Reinforcement Learning而言,这个Loss就是Q Value。

本文详细分析详见:学会学习Learning to Learn:让AI拥有核心价值观从而实现快速学习

本文 纽约大学的Kyunghyun Cho 做了评价:

也算是一种全新的思路。

3 小结

从上面的分析可以看出,Meta Learning方兴未艾,各种神奇的idea层出不穷,但是真正的杀手级算法还未出现,非常期待未来的发展!也希望更多的朋友们可以投入到Meta Learning这个研究方向上来。

百家争鸣的Meta Learning/Learning to learn相关推荐

  1. Meta Learning/Learning to Learn, 到底我们要学会学习什么?||介绍了几篇元学习文章

    https://www.zhihu.com/question/62482926/answer/625352436 转载:https://zhuanlan.zhihu.com/p/32270990 1 ...

  2. (转)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 ...

  3. 元学习Meta Learning/Learning to learn

    目录 元学习 训练 用途 学习方法 元学习和迁移学习的区别和联系 元学习 Meta Learning/Learning to learn即利用以往的知识经验来指导新任务的学习,使网络具备学会学习的能力 ...

  4. 掌握真正科学的学习方法——学会如何学习(Learning How to Learn)课程笔记

    Learning How to Learn是Coursera平台上最热门的在线课程之一.当年本来只是看这个课程标题很有意思,所以抱着猎奇的心态点进去随便看看,没想到还真有点东西. 简单来说,这门课程是 ...

  5. Learning How to Learn

    标题 Learning How to Learn 1. 一些学习的坏习惯 1.1. 被动反复阅读 1.2. 喜欢在书上划重点 1.3. 看书中代码示例认为自己就理解了,从不动手编程 1.4. 拖延 1 ...

  6. Learning How to Learn 笔记

    Learning How to Learn 笔记 1. 课程介绍 2. What is Learning? 3. Focused Mode(专注模式) and Diffuse Modes(发散模式) ...

  7. Learning What to Learn for Video Object Segmentation

    Learning What to Learn for Video Object Segmentation 摘要 引言 现有方法 特征匹配技术 我们的方法 网络结构 网络创新点 相关工作 VOS中的目标 ...

  8. READ-2316 Meta Federated Learning

    READ-2316 Meta Federated Learning 论文名称 Meta Federated Learning 作者 Omid Aramoon, Pin-Yu Chen, Gang Qu ...

  9. Meta Talk: Learning To Data-Efficiently Generate Audio-Driven Lip-Synchronized Talking 论文解读

    1. 相关链接 中文介绍链接: 语音语义创新Lab_News_聚焦虚拟说话人生成技术,华为云论文被人工智能语音领域顶级会议ICASSP2022接收 论文链接: Meta Talk: Learning ...

最新文章

  1. iPhone SDK Examples
  2. 让Windows Server 2008 + IIS 7+ ASP.NET 支持10万并发请求
  3. 45. GameProject9+输入检测
  4. JVM调优实战:G1中的to-space exhausted问题
  5. python4delphi 设置syspath
  6. 使用Lex将C/C++文件输出为HTML文件
  7. SAP Hybris Accelerator的安装和使用方式
  8. 修改mysql的用户密码
  9. java jol原理_Java对象布局(JOL)实现过程解析
  10. python绘图矩阵散点图_Python实践:seaborn的散点图矩阵(Pairs Plots)可视化数据
  11. 连上Internet-linux鸟哥的私房菜服务器篇04(阅读笔记)
  12. Unity3d开发跳一跳-郑洪智-专题视频课程
  13. 写笔记插件_Java程序员笔记(知识)管理的一点经验
  14. 从“挂科大王”到网络安全布道者,云舒的那些“面壁”时刻
  15. 谷歌Linux基金会等联合推出开源软件签名服务 sigstore,提振软件供应链安全
  16. .net textbox全屏后自适应变大_手机屏幕太小?无套路不花钱变大屏!
  17. 服务器显示AL024是什么意思,焦作台达ASD-A2-0241-M伺服驱动器出现报警代码AL024怎么维修...
  18. swift 网络----利用URLSession的Data Task下载单张图片(包含图片的增量下载)
  19. PNG文件转YUV格式并实现播放
  20. 网络抓包工具之Wireshark

热门文章

  1. Windows 10 系统快捷键
  2. 南大计算机考研复试经验,南京大学考研复试经验分享
  3. 开篇《程序员的思维锻炼》
  4. 自学大数据第四天~hadoop集群的搭建(一)
  5. 24式太极拳文字讲解
  6. 三菱YC8000-FX 转以太网通讯模块连接力控步骤
  7. E+H流量计之Proline Promass F 300 科氏力质量流量计概述
  8. reflect动画,Flutter Animations动画效果合集(全网最全)
  9. 【面试总结】【远光软件】【java开发工程师】
  10. vba 访问服务器文件,performance