f*******t 发帖数: 7549 | 1 DL与FP的结合,会不会成为未来的编程方式呢?
Yann LeCun:深度学习已死,可微分编程万岁!
原创 2018-01-06 文强 新智元
【新智元导读】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的时代了。 |
f*******t 发帖数: 7549 | |
x****u 发帖数: 44466 | 3 标题党啊
【在 f*******t 的大作中提到】 : DL与FP的结合,会不会成为未来的编程方式呢? : Yann LeCun:深度学习已死,可微分编程万岁! : 原创 2018-01-06 文强 新智元 : 【新智元导读】LeCun又发表惊人言论,继昨天参与深度学习论战、喷机器人Sophia后 : ,今天他在Facebook主页发文,称“深度学习已死,可微分编程万岁!”深度学习真的 : 死了?而可微分编程又是什么呢? : LeCun又语出惊人了,这次直指深度学习—— : 好,深度学习作为一个流行词,现在时效已过。 : 深度学习已死,可微分编程万岁! : 事情要回溯到前天。
|
w***g 发帖数: 5958 | 4 我的理解:DL的基石back propagation,其实是一套反馈传递系统。
可不可微不是关键,关键是要能把反馈传递下去并在每个节点按
反馈调参。怎么在目前的框架上进行扩展要看各人的理解。
有人觉得可微性是关键,也是一条路。
我觉得只要有合适的反馈机制,可微性完全可以放弃。
如果有机会,我会发展“非可微神经网络”。
接下来的一个大坑就是怎么和之前发展了几十年的
符号逻辑专家系统这些接轨。无非两条路。第一是
神经网络放弃可微性,另一条路就是把让符号逻辑
变得可微。我觉得前者更可行。
【在 f*******t 的大作中提到】 : DL与FP的结合,会不会成为未来的编程方式呢? : Yann LeCun:深度学习已死,可微分编程万岁! : 原创 2018-01-06 文强 新智元 : 【新智元导读】LeCun又发表惊人言论,继昨天参与深度学习论战、喷机器人Sophia后 : ,今天他在Facebook主页发文,称“深度学习已死,可微分编程万岁!”深度学习真的 : 死了?而可微分编程又是什么呢? : LeCun又语出惊人了,这次直指深度学习—— : 好,深度学习作为一个流行词,现在时效已过。 : 深度学习已死,可微分编程万岁! : 事情要回溯到前天。
|
h**********c 发帖数: 4120 | |
g****t 发帖数: 31659 | 6 不可微的问题lift up一个参数p
变成高一维度的新问题
然后原问题变成p为0时候的特殊情况
新问题对p可微用DL可解
那么解一系列p,p逼近零就找到了原问题的解
这种办法把tool做好是formally没问题的
但是反馈传回去容易
收敛难
: 我的理解:DL的基石back propagation,其实是一套反馈传递系统。
: 可不可微不是关键,关键是要能把反馈传递下去并在每个节点按
: 反馈调参。怎么在目前的框架上进行扩展要看各人的理解。
: 有人觉得可微性是关键,也是一条路。
: 我觉得只要有合适的反馈机制,可微性完全可以放弃。
: 如果有机会,我会发展“非可微神经网络”。
: 接下来的一个大坑就是怎么和之前发展了几十年的
: 符号逻辑专家系统这些接轨。无非两条路。第一是
: 神经网络放弃可微性,另一条路就是把让符号逻辑
: 变得可微。我觉得前者更可行。
【在 w***g 的大作中提到】 : 我的理解:DL的基石back propagation,其实是一套反馈传递系统。 : 可不可微不是关键,关键是要能把反馈传递下去并在每个节点按 : 反馈调参。怎么在目前的框架上进行扩展要看各人的理解。 : 有人觉得可微性是关键,也是一条路。 : 我觉得只要有合适的反馈机制,可微性完全可以放弃。 : 如果有机会,我会发展“非可微神经网络”。 : 接下来的一个大坑就是怎么和之前发展了几十年的 : 符号逻辑专家系统这些接轨。无非两条路。第一是 : 神经网络放弃可微性,另一条路就是把让符号逻辑 : 变得可微。我觉得前者更可行。
|
L****8 发帖数: 3938 | 7 同意
【在 w***g 的大作中提到】 : 我的理解:DL的基石back propagation,其实是一套反馈传递系统。 : 可不可微不是关键,关键是要能把反馈传递下去并在每个节点按 : 反馈调参。怎么在目前的框架上进行扩展要看各人的理解。 : 有人觉得可微性是关键,也是一条路。 : 我觉得只要有合适的反馈机制,可微性完全可以放弃。 : 如果有机会,我会发展“非可微神经网络”。 : 接下来的一个大坑就是怎么和之前发展了几十年的 : 符号逻辑专家系统这些接轨。无非两条路。第一是 : 神经网络放弃可微性,另一条路就是把让符号逻辑 : 变得可微。我觉得前者更可行。
|
x****u 发帖数: 44466 | 8 我也觉得“非可微神经网络”是很重要的
当年批NN的时候说非秃,后来发现能用的结构都秃不起来,将来会不会发现好用的架构
也微不了?
【在 w***g 的大作中提到】 : 我的理解:DL的基石back propagation,其实是一套反馈传递系统。 : 可不可微不是关键,关键是要能把反馈传递下去并在每个节点按 : 反馈调参。怎么在目前的框架上进行扩展要看各人的理解。 : 有人觉得可微性是关键,也是一条路。 : 我觉得只要有合适的反馈机制,可微性完全可以放弃。 : 如果有机会,我会发展“非可微神经网络”。 : 接下来的一个大坑就是怎么和之前发展了几十年的 : 符号逻辑专家系统这些接轨。无非两条路。第一是 : 神经网络放弃可微性,另一条路就是把让符号逻辑 : 变得可微。我觉得前者更可行。
|
w***g 发帖数: 5958 | 9 请举个例子展开说说。你数学水平高,我看不懂lift up怎么弄。
【在 g****t 的大作中提到】 : 不可微的问题lift up一个参数p : 变成高一维度的新问题 : 然后原问题变成p为0时候的特殊情况 : 新问题对p可微用DL可解 : 那么解一系列p,p逼近零就找到了原问题的解 : 这种办法把tool做好是formally没问题的 : 但是反馈传回去容易 : 收敛难 : : : 我的理解:DL的基石back propagation,其实是一套反馈传递系统。
|
g****t 发帖数: 31659 | 10 instead of finding ANN for the map X-->Y
Try to find ANN for the map X*(1-p)+Y*(p) --> Y
for many p where p is not 1
Then by those many ANN(p), using interpolation or other methods to
find the ANN(1)
【在 g****t 的大作中提到】 : 不可微的问题lift up一个参数p : 变成高一维度的新问题 : 然后原问题变成p为0时候的特殊情况 : 新问题对p可微用DL可解 : 那么解一系列p,p逼近零就找到了原问题的解 : 这种办法把tool做好是formally没问题的 : 但是反馈传回去容易 : 收敛难 : : : 我的理解:DL的基石back propagation,其实是一套反馈传递系统。
|
|
|
w***g 发帖数: 5958 | 11 神操作。可行性存疑。
【在 g****t 的大作中提到】 : instead of finding ANN for the map X-->Y : Try to find ANN for the map X*(1-p)+Y*(p) --> Y : for many p where p is not 1 : Then by those many ANN(p), using interpolation or other methods to : find the ANN(1)
|
c****3 发帖数: 6038 | 12 我现在咋觉得变成了类似量子力学vs相对论的节奏 |
g****t 发帖数: 31659 | 13 (1)
Possible implementation:
Train
Y+p*(X-Y) --> Y numerically for random samples value p1,p2,...with N(1,s).
The mean of the resulted ANN should be OK.
The methodology is very fruitful in history since Newton.
One of the name of this approach is "continuation perturbation".
I think the Residual Network belongs to this tradition.
(2)
Not only p,1-p average, we can use other paths to connect
f1:[the unknown_ANN] and the f2:[identity map].
【在 w***g 的大作中提到】 : 神操作。可行性存疑。
|
h**********c 发帖数: 4120 | 14 instead of finding ANN for the map X-->Y
Try to find ANN for the map X*(1-p)+Y*(p) --> Y
p=0.5
0.5X + 0,5Y -> y
X -> y
p=0.3
0.7x +0.3 Y -> y
still
X -> Y
looks like theologically circular? |
c*******v 发帖数: 2599 | 15 try x = 1 and y =2
【在 h**********c 的大作中提到】 : instead of finding ANN for the map X-->Y : Try to find ANN for the map X*(1-p)+Y*(p) --> Y : p=0.5 : 0.5X + 0,5Y -> y : X -> y : p=0.3 : 0.7x +0.3 Y -> y : still : X -> Y : looks like theologically circular?
|
h**********c 发帖数: 4120 | 16 你说说你怎么定义map的,叫映射吧?
我中文都忘了
【在 c*******v 的大作中提到】 : try x = 1 and y =2
|
s*****V 发帖数: 21731 | 17 可微性也有可能是个强约束,可微的高纬度函数才能有效优化?
【在 w***g 的大作中提到】 : 我的理解:DL的基石back propagation,其实是一套反馈传递系统。 : 可不可微不是关键,关键是要能把反馈传递下去并在每个节点按 : 反馈调参。怎么在目前的框架上进行扩展要看各人的理解。 : 有人觉得可微性是关键,也是一条路。 : 我觉得只要有合适的反馈机制,可微性完全可以放弃。 : 如果有机会,我会发展“非可微神经网络”。 : 接下来的一个大坑就是怎么和之前发展了几十年的 : 符号逻辑专家系统这些接轨。无非两条路。第一是 : 神经网络放弃可微性,另一条路就是把让符号逻辑 : 变得可微。我觉得前者更可行。
|
h**c 发帖数: 1979 | 18 CapsNet不是不用back propagation了吗 |
h**c 发帖数: 1979 | 19 这么牛逼的理论,数学家怎么没搞出来深度学习?
【在 g****t 的大作中提到】 : 不可微的问题lift up一个参数p : 变成高一维度的新问题 : 然后原问题变成p为0时候的特殊情况 : 新问题对p可微用DL可解 : 那么解一系列p,p逼近零就找到了原问题的解 : 这种办法把tool做好是formally没问题的 : 但是反馈传回去容易 : 收敛难 : : : 我的理解:DL的基石back propagation,其实是一套反馈传递系统。
|
g****t 发帖数: 31659 | 20 牛顿和莱布尼兹用这个思路搞出来微积分了
他们证明初等几何题,会加一个小扰动lift up
维度,然后回到原来的题
: 这么牛逼的理论,数学家怎么没搞出来深度学习?
【在 h**c 的大作中提到】 : 这么牛逼的理论,数学家怎么没搞出来深度学习?
|
|
|
g****t 发帖数: 31659 | 21 那用什么办法?文献有吗?
: CapsNet不是不用back propagation了吗
【在 h**c 的大作中提到】 : 这么牛逼的理论,数学家怎么没搞出来深度学习?
|
L****8 发帖数: 3938 | 22 可微分这个说法太局限了
从优化的角度讲 可以用 数值差分得到导数 取代 微分解析表达式得到导数
比如说我有一个神经网络
我可以设计一个子模块 y1=g(x1) 这个子模块内 求导异常复杂 简直不可能
所以 back propagation 出问题了
但是如果用数值差分 近似可以得出导数
比如说matlab的 优化函数 就支持数值差分法求导
Gary
【在 f*******t 的大作中提到】 : DL与FP的结合,会不会成为未来的编程方式呢? : Yann LeCun:深度学习已死,可微分编程万岁! : 原创 2018-01-06 文强 新智元 : 【新智元导读】LeCun又发表惊人言论,继昨天参与深度学习论战、喷机器人Sophia后 : ,今天他在Facebook主页发文,称“深度学习已死,可微分编程万岁!”深度学习真的 : 死了?而可微分编程又是什么呢? : LeCun又语出惊人了,这次直指深度学习—— : 好,深度学习作为一个流行词,现在时效已过。 : 深度学习已死,可微分编程万岁! : 事情要回溯到前天。
|
h**********c 发帖数: 4120 | 23 插值求导是要计算插值区间以外的趋势,然后你又往插值区间里加新的值,那还是原来
的函数吗?
觉得很【BEEP的】事情
【在 L****8 的大作中提到】 : 可微分这个说法太局限了 : 从优化的角度讲 可以用 数值差分得到导数 取代 微分解析表达式得到导数 : 比如说我有一个神经网络 : 我可以设计一个子模块 y1=g(x1) 这个子模块内 求导异常复杂 简直不可能 : 所以 back propagation 出问题了 : 但是如果用数值差分 近似可以得出导数 : 比如说matlab的 优化函数 就支持数值差分法求导 : : Gary
|
L****8 发帖数: 3938 | 24 你丫就没看懂我说啥 beep
【在 h**********c 的大作中提到】 : 插值求导是要计算插值区间以外的趋势,然后你又往插值区间里加新的值,那还是原来 : 的函数吗? : 觉得很【BEEP的】事情
|
h**********c 发帖数: 4120 | 25 u 2
【在 L****8 的大作中提到】 : 你丫就没看懂我说啥 beep
|
s*****V 发帖数: 21731 | 26 数值微分比直接求导要慢多了,有多少个参数N,就要EVAL多少次,对于神经网络这样
的有上千万的参数,这个TASK不是tractable的
【在 L****8 的大作中提到】 : 可微分这个说法太局限了 : 从优化的角度讲 可以用 数值差分得到导数 取代 微分解析表达式得到导数 : 比如说我有一个神经网络 : 我可以设计一个子模块 y1=g(x1) 这个子模块内 求导异常复杂 简直不可能 : 所以 back propagation 出问题了 : 但是如果用数值差分 近似可以得出导数 : 比如说matlab的 优化函数 就支持数值差分法求导 : : Gary
|
g****t 发帖数: 31659 | 27 也可以链式数值微分。尽管还是不如autograd快。autograd是把一些函数的导数存起来
了,所以不用算exp.
【在 s*****V 的大作中提到】 : 数值微分比直接求导要慢多了,有多少个参数N,就要EVAL多少次,对于神经网络这样 : 的有上千万的参数,这个TASK不是tractable的
|
L****8 发帖数: 3938 | 28 对于复杂操作 写不出导数来的 就得数值微分
这应该是个研究方向
【在 g****t 的大作中提到】 : 也可以链式数值微分。尽管还是不如autograd快。autograd是把一些函数的导数存起来 : 了,所以不用算exp.
|
x****u 发帖数: 44466 | 29 不是写不出来吧,是特别复杂没法分析求解
【在 L****8 的大作中提到】 : 对于复杂操作 写不出导数来的 就得数值微分 : 这应该是个研究方向
|