Yann LeCun:深度学习已死,可微分编程万岁!

2018 年 1 月 6 日 新智元 文强






  新智元报道  

来源:Facebook、Edge、Medium

作者:文强


【新智元导读】LeCun又发表惊人言论,继昨天参与深度学习论战喷机器人Sophia后,今天他在Facebook主页发文,称“深度学习已死,可微分编程万岁!”深度学习真的死了?而可微分编程又是什么呢?



LeCun又语出惊人了,这次直指深度学习——


好,深度学习作为一个流行词,现在时效已过。


深度学习已死,可微分编程万岁!



事情要回溯到前天。


1月4日,AAAI前主席Thomas Dietterich连发10条Twitter,驳斥纽约大学心理学家Gary Marcus对深度学习的批评。其中,Dietterich提到,


深度学习本质上是一种新的编程方式——可微分编程——而且这个领域正试图用这种方式来制定可重用的结构。目前我们已经有:卷积,池化,LSTM,GAN,VAE,memory单元,routing单元,等等。”


这个说法让英伟达的AI架构VP Clement Farabet深表赞同,Farabet还评价说,这是对现今深度学习的最好总结。LeCun也转推此文,表示赞同。



但是,光是转发推文,对LeCun来说显然不够。


今天,他在Facebook个人主页上写了一篇短文,不仅支持可微分编程,还用上了“深度学习已死”的表述。不仅如此,他还推出了一个“归化学习”。


先来看LeCun的文章。


Yann LeCun:深度学习已死,可微分编程万岁!


好,深度学习作为一个流行词,现在时效已过。


深度学习已死,可微分编程万岁!


没错,“可微分编程”不过是把现代这套深度学习技术重新换了个叫法,这就跟“深度学习”是现代两层以上的神经网络变体的新名字一样


但重要的一点是,人们现在正在将各种参数化函数模块的网络组装起来,构建一种新的软件,并且使用某种基于梯度的优化来训练这些软件。


越来越多的人正在以一种依赖于数据的方式(循环和条件)来程序化地定义网络,让它们随着输入数据的动态变化而变化。这与是普通的程序非常类似,除了前者是参数化的、可以自动可微分,并且可以训练和优化。动态网络变得越来越流行(尤其是对于NLP而言),这要归功于PyTorch和Chainer等深度学习框架(注意:早在1994年,以前的深度学习框架Lush,就能处理一种称为Graph Transformer Networks的特殊动态网络,用于文本识别)。


现在人们正在积极从事命令式可微分编程语言编译器的工作。这是开发基于学习的AI(learning-based AI)一条非常令人兴奋的途径。


重要提示:这不足以让我们实现“真正的”人工智能。还需要其他的概念,比如我说过的预测性学习,我现在决定将其称为“Imputative Learning”(归化学习)。之后我会详细介绍……



可微分编程:深度学习的延伸,人工智能成功的关键


那么,在等LeCun大神更详细介绍他的归化学习前,我们更需要关注的是可微分编程,这是深度学习的又一个新名字,还是确实有不同和新的内涵?


MIT媒体实验室的David Dalrymple此前撰文介绍过可微分编程,Dalrymple 9岁登上TED讲台,14进入MIT读研,16岁以5.0的GPA毕业,也是一代奇才。进入MIT媒体实验室后,Dalrymple开发了新的编程范例,如“可重构的异步逻辑自动机(Reconfigurable asynchronous logic automata,RALA)。


Dalrymple认为,深度学习的成功有两大关键,一是反向传播,而是权重相关(weight-tying),而这两大特性与函数编程(functional programing)中调用可重用函数十分相同。可微分编程有成为“timeless”的潜力。


过去几年里,人工智能领域几十年来一直没有得到解决的一系列经典挑战,突然被AI纯粹主义者长期以来一直颇为鄙视的“统计方法”征服。这种方法主要从大量的数据中学习概率分布,而不是检查人类解决问题的技巧,并试图以可执行的方式对这些技巧进行编码。


这种方法最初被称为“神经网络”,现在则叫“深度学习”,强调对过去的神经网络的定性改进。深度学习的成功很大程度上归功于大的数据集和更强大的计算系统,大型科技公司对该领域突然兴起的兴趣也有一定关系。深度学习已经取得了令人难以置信的进步。许多其他方法也有所改善,但程度较低。


那么,将深度学习与其他学习区分开来的关键是什么?首先是反向传播。这实际上是一个以非常优雅的方式应用的链式规则,一个简单的微积分技巧。它是连续和离散数学的深度整合,使复杂的潜在解决方案族可以通过向量微积分自主改进。


关键是将潜在解决方案的模式(template)组织为有向图(例如,从照片到生成的图说,其间有许多节点)。反向遍历这个图,算法能够自动计算“梯度向量”,这个向量能引导算法寻找越来越好的解决方案。


从这个意义上看,现代的深度学习技术与传统的神经网络在结构上相似度不大,但在幕后,反向传播算法对于新旧架构都至关重要。


但是,即便使用了反向传播,以前的神经网络也远远不及现在的深度学习技术,哪怕是在今天的硬件和数据集条件下。因此,深度学习的第二大关键,是一个网络的组件可以同时在多个地方使用。


随着网络的优化,每个组件的每个副本都被迫保持一致(这个想法被称为 “weight-tying”)。这对权重相关的组件施加了额外的要求:它们必须学会在许多地方同时有用,而不是专门针对特定的地点。Weight-tying 会使网络学习更泛化的能力,因为单词和物体可能出现在文本块或图像的多个位置。


在网络的许多地方放置一个通用的组件,就类似于在一个程序中编写一个函数,并在多个地方调用它,这是函数编程(functional programming)的基本概念。函数编程将计算机运算视为数学上的函数计算,并且避免使用程序状态以及易变对象。与编程相比,权重相关(weight-tied)的组件,实际上与编程中可重用函数的概念相同。不仅如此,过去几年中,许多最成功的架构,它们对组件的重用方式,与函数编程中通用的“高阶函数”生成组件的方式完全相同。这表明函数编程中的一些著名算子,可能是深度学习架构的一个很好的灵感。


能够直接在函数程序上运行反向传播的新语言,将最便于探索那些被训练成深度学习网络的函数结构。事实证明,隐藏在实现/部署的细节中,函数程序实际上被编译成类似于反向传播所需的计算图。图的各个组成部分也必须是可微的,但是Grefenstette等人最近发布了几个简单的数据结构(栈,队列和双向)的可微分构造,表明进一步的可微分实现,可能只是数学上巧妙设计的问题。这方面的进一步工作可能会打开一个新的编程范式——可微分编程。


用这样一种语言编写程序,就好像构建函数结构时,把细节留给优化器——语言会使用反向传播根据整个程序的目标自动学习细节,就像优化深度学习中的权重一样。


可微分编程是一个比较新的概念,是反向传播和weight-tying这些想法的延伸。在各种架构、技术来了又去去了又来的眼下,这些核心概念仍然是人工智能成功的关键。


神经网络是“软件2.0”:开发通用人工智能的基础


这些都让人想到了深度学习和计算机视觉专家、特斯拉人工智能部门主管Andrej Karpathy此前提出的“软件2.0”概念。


Karpathy说,软件1.0(Software 1.0)是用Python、C++等语言编写的,它由程序员编写的对计算机的明确指令组成。通过编写每行代码,程序员可以确定程序空间中的某个特定点。


相比之下,Software 2.0 是用神经网络权重编写的。没有人参与这段代码的编写过程。在软件2.0的情况下,人类对一个理想程序的行为指定一些约束(例如,一个样本的输入输出对数据集),并使用可用的计算资源来搜索程序空间中满足约束条件的程序。在神经网络的例子中,我们把搜索限制在程序空间的一个连续的子集,在这个空间中,搜索过程可以利用反向传播和随机梯度下降奏效。


Karpathy认为,在现实世界中,大部分问题都是收集数据比明确地编写程序更容易。未来,大部分程序员不再需要维护复杂的软件库,编写复杂的程序,或者分析程序的运行时间。他们需要做的是收集、整理、操作、标记、分析和可视化提供给神经网络的数据。



从长远来看, Software 2.0的未来是光明的,因为越来越多的人清楚,当我们开发通用人工智能(AGI)时,肯定会写成Software 2.0。


Software 3.0?那就需要到AGI的时代了。



编译来源

  • https://www.facebook.com/yann.lecun/posts/10155003011462143

  • https://www.edge.org/response-detail/26794

  • https://medium.com/@karpathy/software-2-0-a64152b37c35




加入社群


智元AI技术+产业社群招募中,欢迎对AI技术+产业落地感兴趣的同学,加小助手微信aiera2015入群;通过审核后我们将邀请进群,加入社群后务必修改群备注(姓名-公司-职位;专业群审核较严,敬请谅解)。


此外,新智元AI技术+产业领域社群(智能汽车、机器学习、深度学习、神经网络等)正在面向正在从事相关领域的工程师及研究人员进行招募。


加入新智元技术社群 共享AI+开放平台

登录查看更多
4

相关内容

机器学习的一个分支,它基于试图使用包含复杂结构或由多重非线性变换构成的多个处理层对数据进行高层抽象的一系列算法。

知识荟萃

精品入门和进阶教程、论文和代码整理等

更多

查看相关VIP内容、论文、资讯等
Yoshua Bengio最新《深度学习》MLSS2020教程,附104页PPT及视频
专知会员服务
129+阅读 · 2020年7月10日
【ICLR2020】图神经网络与图像处理,微分方程,27页ppt
专知会员服务
47+阅读 · 2020年6月6日
Yann Lecun 纽约大学《深度学习(PyTorch)》课程(2020)PPT
专知会员服务
179+阅读 · 2020年3月16日
最新!Yann Lecun 纽约大学Spring2020深度学习课程,附PPT下载
【新书】傻瓜式入门深度学习,371页pdf
专知会员服务
187+阅读 · 2019年12月28日
复旦大学邱锡鹏老师《神经网络与深度学习》书册最新版
从张量到自动微分:PyTorch入门教程
论智
9+阅读 · 2018年10月10日
手把手教 | 深度学习库PyTorch(附代码)
数据派THU
27+阅读 · 2018年3月15日
Yann LeCun爆惊人言论:深度学习已死?
雷锋网
7+阅读 · 2018年1月7日
十五条有用的Golang编程经验
CSDN大数据
5+阅读 · 2017年8月7日
Arxiv
4+阅读 · 2018年10月5日
Arxiv
8+阅读 · 2018年6月19日
Arxiv
17+阅读 · 2018年4月2日
Arxiv
3+阅读 · 2017年12月14日
VIP会员
Top
微信扫码咨询专知VIP会员