深度学习难在哪里?

知乎讨论:“Deep Learning 的专家如此急缺,它难在何处?”

这篇文章是对知乎上大家讨论结果的一个汇总和备忘。初读时感觉直击心扉,读完后忍不住想把文中的观点分享给我身边的每个人。作为一个入门深度学习两年的研二学生,对文中深度学习是一门工程性学科的观点深表赞同。本文主要作为个人的阅读记录所用,以避免以后想要查看但又找不到时的追悔莫及。文中观点皆来自于知乎用户,如需转载请注明知乎原文地址
[ https://www.zhihu.com/question/41168257 ]。

问题描述

不可否认,人工神经网络中有一些思想是很巧妙的。但正如SVM, Linear Regression, Decision Tree, Boosting Tree一样,他们都有各自巧妙的思想,但数学并不复杂。通过具象来深入理解其原理和调参也并不复杂。机器学习作为一种计算机科学分支,其数学概念的复杂度低于统计学。机器学习用的是比较直观的想法,有许多trick,例如loss function, kernel,activation function,back propagation。

  • 那么,机器学习或者深度学习,难点究竟在哪里呢?
    1 是数学基础的严格化?
    2 是代码结构的优化?
    3 还是在于发现一些新的trick呢?
    4 针对具体问题设计合适的模型,决定合适的参数?
    5 是否人工神经网络过于复杂,难以用传统手段分析,以至于我们还无法把握它工作的核心机制?

回答集锦

回答一:深度学习本质上是工程学科,而不是自然学科。

上来先亮明我的观点:实际缺乏的不是Deep Learning的人才,而是可以实际解决问题的人才。而实际可以解决问题的人才不管在什么时代都是稀缺资源。

看题主这问法,潜意识里的一个概念就是数学不难的东西都是小儿科。我是一直鲜明反对这样的观点的。我一贯坚持的哲学是混哪个圈子请先用心体会这个圈子的研究逻辑,而不是拿着自己的逻辑到处judge。Deep Learning本质上是工程学科,而不是自然学科。这个性质天生决定这个圈子的人更加关注的是解决问题,或者换句话说如果必须要二选一,理论要为实践让路。这种研究的哲学和做统计等等看上去很相关的学科有着本质区别:一个理论再优美,bound证明得再漂亮然而实际不work在这些人眼里并没有太大价值。这背后本质的区别在于,统计或者理论机器学习这些学科为了有漂亮的理论不得不对现实世界做出大量简化,而真正做问题的人,是不可能对现实世界做出任何妥协的。对于工程学科而言,只有很少数的方法,是可以在理论和实践上高度统一的。

另外一个方面,工程学科的本质使得Deep Learning更在意实际动手的实现。你说RCNN有什么难的吗?不就是生成个proposal再分类下嘛。Fast RCNN又有啥呢?不就是个可以BP的SPP嘛。我很不想说Idea is cheap这句话,但是Show me the results的重要性不言而喻。RCNN不是第一个用CNN做detection的paper,而是第一个用CNN把detection做work的paper,第一个证明CNN的feature不仅仅可以做分类的paper。单就这一点就足可以奠定这个工作在整个CV发展史上的地位。记得当初Ross在CMU给talk的时候,我当时的老板做介绍的时候打趣了一句:He is the only man can make things work in computer vision. 这个评价在我看来,已经是顶级的了。以至于后来有人问我说你对自己期待是什么样子,我的回答就是做啥啥work。 XD

说了这么多,最后来回答下问题:
Deep Learning本身并不难,难的是你吃透问题,可以用Deep Learning的逻辑去思考你自己的问题,有针对性地设计模型;难的是你有分析问题和结果的能力,遇到负面结果不是抓瞎。
另外说Deep Learning就是调参数的,那也是不会调参,调参也是要按照基本法的啊!

作者:Naiyan Wang,CS PhD, 机器学习与计算机视觉

回答二:研究人员的多少受各种因素的影响,能在最黑暗的时光坚持自己信仰的人是值得敬佩的。

首先必须要澄清的一点是,深度学习专家急缺可能是事实,然而它难,并不是事实。就像题主说到的,相对于从前的许多机器学习方法,深度学习确实不需要什么高深的数学内容,这一点是没错的。那么如果是这样,那么为什么研究的人(暂时)看起来没有想象的多呢?

深度学习是一个学术概念,要搞清楚这个问题,就需要了解这个东西的学术背景。如同大家可能在其它新闻稿之类的地方能看到的,神经网络的概念几十年前就有了,那个时候就已经火了一阵了,然而后来又被其它方法(比如SVM)超越,之后沉寂了一段时间,到大约11年左右开始爆发,到现在算是受到各界注意力汇聚的顶点了。

做为语音领域研究的工作者,对于上面描述的这些变化其实是非常敏感的。正是因为11年微软在大规模连续语音识别上的突破性进展,(参见语音识别技术突飞猛进)拉开了国际上各家在深度学习上面军备竞赛的序幕,比如百度IDL的成立,谷歌收购Deepmind,DNNReserch等。当然这也是导致我毅然决然向导师要求从事这个方向研究的原因。

实际上现在深度学习的几乎所有最重要理论早在八十年代就确定下来了,那么为什么这么多的进展最近几年才出现?
现在我们已经知道,因为那个时候计算机速度太慢,无法支持足够大规模的神经网络,而由于摩尔定律在一段时间内的作用,已经在几十年内使得计算速度得到了数百万倍的提升,而这数百万倍的提升本身其实是一个持续而漫长的过程,所以计算速度方面的原因只能回的的是“为什么它出现了”,而不能回答“为什么它在最近几年以如此密集的方式出现”。

如同理解经济现象不要只讲大道理,必须回到每个人实际面临的选择情景一样,要回答这个问题就必须回到每个研究者所面临的实际情景中。

假设在另一个时空中,我依然是我,依然阴差阳错以语音研究开始了我的研究生生涯,只不过这时是20世纪90年代。经过充分的调研后,我发现大体上有两种研究思路值得注意:一种叫做A,比较主流,效果很好,有一些现成的工具使用;另一种叫做神经网络,本身想法很有意思,但是受关注较少。这个时候看似有两种选择,其实我在这个情景中是没有选择的。

这是因为每个做研究的都是实实在在的人,他们有毕业,评职称,评教授,生活的压力。如果那个时空里的我坚定的选择了进行神经网络的研究,当我们现在回过头来看的时候,可能用1-2年时间,坚持跑完一个足够大规模的试验,也许能发现不一样的东西。但是这又怎么可能呢?导师会给你压力,同行会给你压力,学校会给你压力,而且在这1-2年没有任何结果的过程中,你不可能不怀疑自己,因为研究就是一个在黑暗中摸索的阶段,现在回头看认为曾经需要1-2年,在那样的情景中是根本无法知道的,完全有可能1-2年搭进去什么都没有,3-4年还是什么都没有。这就好像男生追女生,女生奇怪男生追了一半为啥不追了,男生却会觉得连十分之一都不到一样。相比于坚持,放弃换一个方向才是更理性的选择。

所以能够撑过神经网络最黑暗时光的人,一定是极少数抱有绝对信仰的人,比如Hinton, Lecun, Bengio,他们凭借已经取得的成就,在没有来自其它方面压力的时候,才能走下去。这就是为什么这样的人一定很少的原因。

神经网路的严冬

然而回答到这里只是事情的前一半部分。

一件需要意识到的事情是,神经网络,做为一种研究方向,有过这样一种跌宕起伏的发展过程,为什么其它理论就不能有呢?所以很有可能其它机器学习派别在未来再度超越的,这是完全有可能的,这就是科学。

所以,这就是为什么即使到今天,深度学习依然只是一个机器学习分支的原因。依然有人不喜欢它,依然有人愿意坚持自己的方向。这是完全值得尊敬的,也是合理的,因为搞神经网络的人曾经就是这样的一帮人,才有了现在我们看到的深度学习的繁荣。

作者:马尔可夫妖

回答三:从科学发展的角度解读深度学习当前的发展境况

科学是一个不断发展的过程。深度学习在现阶段对于其适用性的实践工作还没有走到尽头,正是需要由实验出发去寻找其适用性边界的阶段。等到足够的实验结果能够说明其适用范围,届时理论工作自然会逐渐出现和完善。这个规律在别的学科中也存在,例如物理在18-19世纪也经历过这么一个阶段,并且一定程度上天体物理、高能物理等在现在依旧处于这样的阶段。这一阶段性特点导致了深度学习研究和应用大致两方面的不同:
偏离传统以数学导向的、保守化的研究方法,培养人才变得困难。
实践中对资源和代码的需求变强,工程量不可同日而语
这两方面共同导致了目前深度学习人才出产率较低的现实。

机器学习的传统理论主要围绕学习过程的泛化(Generalization)能力展开,然而有关泛化能力的理论都是以集中不等式(Concentration Inequality)为基础的寻求”上界的上界”的一个过程,其结果是一种保守统计学的结果。这种保守的统计学结果对于验证传统科学实验来提供可信区间也许是非常合理的,然而用于描述机器学习本身却往往因过于保守而失去了对于模型可行性的合理探索。这种思路导致很长时间(90年代和00年代)机器学习停留在线性分类器的研究中。在这个过程中虽然有例如Boosting算法、核(Kernel)方法等数学上非常漂亮的结果,然而不可避免地机器学习的应用性其实受到了不合理的限制。

深度学习在这方面有着截然不同的思路。尽管泛化能力是一个不可避开的话题,从事深度学习的人大多认为现有的泛化理论不足以描述模型实际应用时的平均状况。在符合科学方法论实验、观察、假设、验证、结论的过程前提下,深度学习的研究以追求实际测试数据集效果为核心,更为大胆探索可行的模型,并且从以神经科学、认知科学为代表的其它学科中寻求启发。这一特点使得深度学习的建模过程成为一个“勇敢者的游戏”,在许多可行的模型中寻找并验证某个有效模型需要一定的创造性,这并不是每个人都做得到的。同时,泛化理论也需要进一步发展来更加贴切地解释实际的应用。

深度学习更加关注“表达”的理论,即什么样的问题需要什么样结构的模型,以及什么结构的问题适合什么样的问题。这一点的理论目前基本处于几乎空白且初步开始的状态。到目前为止从数学和哲学上我们对于表达的基本理解受制于对现有智能体(人类)的模仿中,并没有什么更好的启发知识。这种困难可能最终同逻辑中的哥德尔不完备性定理(Gödel’s incompleteness theorems)以及物理中的拉普拉斯幽灵(Laplace’s Demon)带来的问题类似。如何在这样的条件下敏锐地发现适合表达某些问题的模型因此成为一项十分考验智力的工作。

理论的无效性和缺乏导致了在现有的教育体系下培养深度学习人才的困难。除了一些基本研究原则之外,我们没有办法确切定义和预测这个学科需要什么样的知识,以及这些方法能够通过什么方式应用到什么样的领域。并不是所有的人都适合在这种条件下进行研究和学习的。

实践中对资源的需求变大,工程量不可同日而语

尽管深度学习的研究哲学弱化了对泛化能力可证明性的追求,但泛化能力终究是一个不可绕开的话题。机器学习的实践在一定程度上是表达和泛化互相寻求平衡的过程。由于深度学习的建模更加倾向于对表达能力的探索上,因此我们需要更大的数据量使得泛化能力不成为问题。然而,“大数据”并不是一句空话。获取百万级别的样本数量是一个非常巨大的工程挑战,这在传统理论为导向的研究过程中是无法想象的。这些挑战即包括获取大量的数据量对于自动化的要求,也包括处理实际数据过程中繁琐的数据清理过程,更可能涉及缓存和分块等优化方法的应用。这无一不对从业人员的工程能力提出了更高的要求。这一点的重要性曾经被理论学派所忽略,然而随着研究的进展越来越多的人开始认识到它的必要性。

建模自由性的增强必然导致代码自由度增加,其结果是对现有代码重用能力的下降和对从业者更高的工程要求。为了实现一些崭新的模型,我们可能需要从底层的数值计算出发去一步步把模型构建起来。在这个过程中又有许多的工程问题需要解决,例如数值稳定性(由于计算机表达实数是有限精度导致的各种问题,这是专门的学科)、优化参数的调整(由于优化往往是非凸的,实践中并没有足够的理论指导)以及最终模型是否能够在有效时间内完成运行。这些过程中任何一个环节出错都会导致模型无法训练。理论学者可能往往以一句“调参”来调侃这一过程,但是我相信没有实践过的人是无权评价这个过程中需要的数值知识、对问题的敏锐理解以及解决实际问题的耐心的。

由于数据规模大和模型的自由度较大两方面的问题,训练和寻找最佳模型可能是一个非常耗时的过程。这就导致深度学习的研究往往需要巨大的计算能力。科学发展的另一个基本规律是新的方法和理论往往需要在之前无法实现的规模中才能发现。例如狭义相对论的实验需要物质运行超出常规的速度才能验证,以及发现极度微观粒子的运动不符合经典力学才导致了量子力学的出现。这种实际上需要不断挑战极限的过程体现在计算机学科中就是能够在之前无法想象的计算能力和数据规模下完成任务。可惜现实中并不是所有的人都能够有机会接触到这种规模的计算力。

总之,如果把深度学习的研究过程比作模拟退火的优化过程,假设从业人员是一个随机的初始值,这个目标函数的特点是只有缓慢的温度下降才能得到有效结果。也许退火过程只是一个简易的晶体理论,而实际的退火怎样有效只有炼过钢打过铁的人才真正知道。

作者:张翔

回答四: 理论派的矛盾

看了很多答案,总结来看中心思想就一个:

神经网络这玩意没理论,大家都是在猜,在蒙,在试,调调参数,试试trick,太low,我们搞数学物理的都看不上, 你们就是运气好赶上好时候,看看过两年你们就不行了。

而事实情况是:

基于神经网络的各种数学模型都太过复杂,复杂到目前的数学工具不能提供有效的分析手段,然而经验上却达到了很好的效果,挑拨了一部分敏感的理论派的神经。

现阶段主流理论派一方面将神经网络的成功归于trick和调参,嘲笑他们没有理论。另一方面,理论派自己却并不具备足够的理论水平来对神经网络进行有价值的分析,与此同时也没有在实践上找到更优的算法。如此讽刺的矛盾是导致很多搞数学物理,统计的人对深度学习看不上却又有点酸溜溜的根本原因。

在很多人嘲讽DL的同时,关于DL的理论工作也悄然在UCB,CIT, NYU,Princeton等学校的某些实验室展开,个人认为这才是正确的对待DL的方式。

最后套用Yoshua Bengio在Quora关于问题的回答

问: Does Yoshua Bengio expect traditional statistical learning to triumph again over Deep Learning (or any neural network based methods) soon?

答: Neural networks ARE statistical learning methods. Science is NOT a battle, it is a collaboration. We all build on each other’s ideas. Science is an act of love, not war. Love for the beauty in the world that surrounds us and love to share and build something together. That makes science a highly satisfying activity, emotionally speaking!

我就是喜欢你看不惯我,却又不得不和我一起深度学习的样子。

作者:匿名用户

回答五:工业进步与理论之美

工业界首先还是看应用效果的吧,理论之美什么的不能转化为实际应用也只能闲着,即便是不那么美的理论只要好用照样会应用。从AlphaGo就能看出,其用的算法方法基本都是比较成熟的,并没有发明出多么高大上的新理论。工业界因为需要保证可靠与稳定,所以会更多选择已经被反复验证的成熟方法,所以最新的东西反而不会轻易使用。因为这个鄙视工业界用的东西不够高大上,我觉得还是陷在科研的思维里了。即便是再完备的理论,在应用的时候很多细节还是要靠经验和理论之外的东西。从理论到实际应用总是要有个过程。

就我个人的观点,machine learning本身就是个toolbox,了解这些工具并不难,难的是如何用好这些工具做出漂亮的应用。现在缺的是能用好DL解决问题的专家。这类人不仅要懂DL,还要了解需要使用DL的这个领域。了解理论,并不代表一定会理论的应用,一如Dirac造不出量子计算机。

最后想说,个人真的是非常不喜欢学术圈里唯新颖和难度最高的态度,鄙视应用和工程根本不利于理论发展。没有工业进步,做理论照样瓶颈。我男朋友做高性能计算,给我讲了一个例子:当年一群人搞出一类并行算法觉得高端的不得了,结果出来了GPU把他们算法全秒了……今天我们在这里愉快地玩machine learning而不用像早期程序员那样小心分配内存节约算力,真的是工业发展的功劳。

作者:Angie Zhang

回答六:人才的培养需要时间

我认为深度学习人才急缺只是个时间问题。深度学习真正从学术界走到人们的视野中,主要是通过ImageNet竞赛和最近AlphaGo的普及,之前对深度学习抱有怀疑态度的人大有人在。
深度学习重新在学术界火起来大概可以追溯到09、10年,人们给与深度学习发展的时间还太少了。只要再多一点时间,相信会有越来越多的人加入深度学习的大潮。

以我个人的经验来看,深度学习其实入门的门槛并不高,只要对机器学习算法有较好基础都是容易转行过来的。难处在于这是一门非常具有应用性的学科,读一百篇论文可能还不如自己实现个ConvNet和LSTM理解得更深入。而硬件是其中很重要的一个制约因素,跑个深度学习的实验可能往往需要多台机器或者GPU,而很多入门者可能并不具备这一基本条件。

有必要纠正下深度学习就是调参的说法。我不否认调参的重要性,但是单纯靠调参是远远不够的。调参党可以自己去读读近些年来在NIPS, CVPR, ACL, EMNLP等各领域顶级会议上发表的deep learning相关论文(arxiv还没发表的不算),可以说绝大部分论文要么是在模型上有所创新,要么是把深度学习用在了一个全新的问题上,单纯靠堆机器堆深度搭框架来提高性能的论文我还没怎么读到过。比较赞同 @Naiyan Wang的说法,无论是深度学习,还是机器学习或者其他算法也好,本质上都是对问题的深度理解从而解决问题。工具可以有千种万种,但是问题本质不会变。

一方面,我觉得大家完全没必要把深度学习神化,它和以前出现的很多学科和方向一样,都只是计算机科学用于解决问题的一个方法,没有那么难也没有那么遥不可及;另一方面,做理论的也没必要去鄙视深度学习调参的做法,这本来就是一个偏应用的学科。最后,先飞的鸟儿有虫吃,对深度学习有兴趣的不妨早点出发。

作者:武侯,ZJU/UMD/Google/CS PhD@Deep Learning

回答七:有效就是王道

恰恰相反,我认为稀缺的不是某一个学科的人才,稀缺的是,有能力去归纳总结并能用在应用上的那些少数精英人才。而这些人才,不只是单单dl方面稀缺,往往任何一个当代学科都会碰到这个人才瓶颈。

常言道隔行如隔山。形式化下隔行看问题,如果把问题看作一个高维向量x,在学科A的理解下,可以得到这个问题的一种描述方式,其实就是x在空间A的一个投影。同样可以得到同一个问题在不同学科(空间)下的描述(投影)。

如果我们在隔行看问题的时候,能够正确地处理两个不同学科AB(空间AB)的差异,自然就不会出现误差了。然而实际上,大家只会寻找两个学科的交集来去做所谓的认知。自然而然就有了误差了。

诚然,机器学习中,很多模型,很多算法的底层思维,思路,很简单。有一些东西,比如正则项,比如平滑,感觉上不那么科学靠谱。但是一旦从别的角度去看待这些问题,可能就会嘲讽“你看这些门外汉”了。

我其实是个很严重的实用主义者,我并不在乎这个算法的数学原理多高超,我也不在乎这个算法的实(tiao)现(can)难度有多大。只要有效,我觉得工作量再大也是值得的。有些东西,比如神经网络,我真的说不清楚,为什么学习之后这家伙能够那么强,我有时甚至都不敢保证他学习的收敛性。但是如果大家的实验结果都是收敛的,或者说如果按照一个一定步骤来操作几乎会得到一个熟练的模型,那我认为,如果有人能够告诉我们,满足这些条件收敛,或者告诉我们满足这些条件不收敛,那他必然是这个学科的一个小救星了。而成为救星并不容易,可想而知他的知识水平和应用能力达到了何等的水平。

作者:申尚昆

其他观点

  • 世界上没有什么优化目标是在NN中多加一层layer不能解决的。
    如果有,那就两层。

  • 恰恰相反,是我们目前的数学还不足以理解、处理nn这类复杂系统,以至于只能靠trick。也就是说,真正解决了dl的数学问题,实际上也就解决了人类智能从何而来,这是可以比肩牛顿、爱因斯坦的贡献,而且我相信不会完全由某一个科学家完成。
    Bengio这样的人已经盯着这人类科学史上最后的圣杯,而大部分普通人连其背后的意义都不了解,有意思。

  • 深度学习需要的数学基础(凸优化,数值分析,矩阵分析,统计推断,概率图)把99%的程序员学生挡在了门外;
    C/C++,CUDA/OpenCL,计算机网络和体系结构,大规模并行系统的门槛又将纯数学背景的限制在了只能用matlab写点两三层几千维神经网络的实验小程序上,而数据量不到100G深度不到五六层维度没有十万根本感受不到深度学习的可怕威力。
    所以两个知识的交叉领域还剩多少人?我估计全中国具有可实用深度学习知识的人应该只有300个左右。

  • deep learning现在的研究大部分偏应用(我没觉得有啥不好),相对于理论研究,门槛会低一些。关于,题目中问道的“专家如此急缺,它难在何处?”,我觉得不是难在何处的问题,仅仅是大量花时间熟悉DL tricks这类人 和 实际需求之间的不平衡而已。

来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

猜你喜欢

转载自blog.csdn.net/yingyujianmo/article/details/51039348