Yoshua Bengio教授(个人主页)是机器学习大神之一,尤其是在深度学习这个领域。他连同Geoff Hinton老先生以及 Yann LeCun(燕乐存)教授,缔造了2006年开始的深度学习复兴。他的研究工作主要聚焦在高级机器学习方面,致力于用其解决人工智能问题。他是仅存的几个仍然全身心投入在学术界的深度学习教授之一,好多其他教授早已投身于工业界,加入了谷歌或Facebook公司。 作为机器学习社区的活跃者,Yoshua Bengio教授在美国东部时间2月27日下午一点到两点,在著名社区Reddit的机器学习板块参加了“Ask Me AnyThing”活动,Yoshua回答了机器学习爱好者许多问题,干货频频。故作此整理,供远在地球另一面的国内人工智能和机器学习爱好者学习讨论,所有问答的先后顺序由Reddit用户投票决定。以下为问答第一部分: 问:是什么仍然激励着您留在学术界?您对于工业界那种面向产品和创新的实验室有什么看法?他们和学术实验室相比如何?我们在选择两者的时候,学术自由(做想做的事情)是否起到很重要的作用?
答:我喜欢学术界,因为我可以选择研究我喜欢的课题,我可以选择设立一个长期的目标来为之努力,我可以为全人类的福祉来奋斗而不是某一个特定公司的利益,而且我可以非常自由的公开讨论我的研究成果和进展。当然,值得注意的是,在某种程度上,我那些值得尊重的同事们在很多大公司的实验室里也同样有类似的讨论自由。 问:您好,我是一个本科生,您和Hinton教授的工作给了我很大的启发,我有一大堆问题想问,您可以选择性的回答一下。 Hinton教授最近在Coursera在线教育网站上提供了神经网络公开课(MOOC)。该课程所提供的资源和课件让我在内的很多同学受益匪浅。我学到了如何自己训练一个神经网络,迈出了深度学习领域的第一步。所以,如果这个领域的另一个神级领军人物,您,也能提供一个公开课,那将是多么大的幸运,不知道您在这方面有什么打算?
作为领域内的杰出教授,您个人如何看待当代神经网络忽如一夜又火了这个现象呢?您认为是理所应得还是夸大其词?还是两者兼有?或者您有完全不同的看法?还有,您对于当今文献对于神经网络研究的描述怎么看? 我对于利用无监督技术来学习数据选择,以增加算法的普适能力这一块非常感兴趣。我感觉它是监督学习和非监督学习的有机结合,跟传统的预训炼不同。您所在的实验室已经在这方面取得了很多进展,使用“简单”的数据选择方法,比如高斯噪声选择法,即我们在DAE语境下所谓的输入dropout。您觉得这个方向算不算有潜力呢?希望您能给推荐一些相关资料,我找了很久都没找到。 最后,没有人有水晶球来洞悉未来,但是您能谈谈您研究工作的下一步展望么?比如,过去几年基本是监督学习占了上风。 答:首先我目前没有公开课的计划,但可能未来会开设一门。最近我在写一本深度学习方面的新书,内容比较全面(和Ian Goodfellow和Aaron Courville一起写)。过几个月可能会放出几章草稿,非常欢迎社区和同学们提出宝贵建议。注意Hugo Larochelle(我之前的博士生,Hinton教授的博士后)有一个很好的深度学习视频(在他个人主页上还可以找到课件)。 我觉得最近大家对于神经网络的极大热情,主要是因为机器学习同仁们浪费了多年的时间,1996到2006这20年,几乎从来没深入挖掘它。现在这个时候,确实有一些对于神经网络的夸大其词,尤其是在媒体上。这是非常不幸的,同时也非常危险,会被一些想要一夜暴富的公司所利用。危险尤其在于,一大波天花乱坠的许诺出来了,结果没有出色的实验结果作为根据。科学在大部分时候都是小步前进的,我们必须要谦逊。 我没有水晶球,但是我相信改进我们对于联合分布的建模,在未来深度学习的研究中,尤其是朝向人工智能级别的机器方面,非常重要,它能帮助机器更好的理解我们周围的世界。 另外一个比较容易预见的工作,是我们需要在训练高复杂度模型的过程中,找到快速有效的训练方法。不光是在训练模型本身(涉及到数值优化问题),而且在计算能力方面(比如通过并行或者其他的技巧来避免每个样本在训练的时候都牵扯到整个神经网络的更新)。你可以在arxiv上找到我的展望文章。 问:传统的(不管是不是深度)神经网络看起来在保留上下文信息方面有一些局限性。每个数据点/样本都是独立对待的。递归神经网络(Recurrent Neural Network,RNN)克服了这个问题,但是RNN训练起来非常难,而且一些RNN变种的尝试看起来也不是那么的成功。 您觉得RNN在未来会流行起来么?如果是的话,在什么应用领域?以什么样的模型设计?非常感谢您百忙之中的回答! 答:回归网络或者叫做递归网络,在各种类型的对象的相互依赖关系的建模上,非常有用。我们小组在如何训练RNN上做了一些工作,这也是当前深度学习社区研究工作的重要组成部分。可能的应用领域有:语音识别(尤其是语言识别部分),机器翻译,情感分析,语音合成,手写合成与识别等等。 问:我很想听听您对liquid state machine(LSM)和深度学习之间的对比。 答:liquid state machine和echo state networks(ESN)没有学习RNN里面类似的权重,换句话来说,它们不学习数据的表征。然而,深度学习最重要的目的,就是学习一个好的数据表征。从某种程度来讲,LSM之类的跟SVM很像,即给定一堆确定的特征,学习一个线性分类器。这里用到的特征是跟前面序列有关的函数,通过一些巧妙手段预先设置好权重。这些特征非常好,那么,能自动学习这些特征不是更好么! 网友附加答案:我觉得ESN和LSM非常好,学习它们能让我们更清楚RNN,了解RNN模型上什么情况下会给出很差结果,学好前两者对于学习DNN有好处。推荐看看Ilya在初始化方面的工作,文章阐述了采用Herbert Jaeger建议的ESN初始化方法的有效性,这对RNN同样奏效。另外LSM和ESN通常可以作为DNN很好的基准参考对比。还可以看看这个页面,很多RNN有用信息,尤其是LSTMNN,它是RNN变种之一,继绝RNN训练过程中梯度消失的问题,从而让RNN能够感知到更长的上下文。 问:Bengio教授您好,我是McGill大学的本科生,从事类型论(译者注:与集合论差不多的学科)方面的研究,我的问题是: 我所在的领域很注重形式化证明,机器学习领域有没有关注形式化证明的课题呢?如果没有的话,怎么保证学科的严谨性?有没有人研究用深度学习产生程序呢?我的直觉是最重我们可以用类型论来指定一个程序,并且用深度学习来搜索这个指定程序的实例,但现在我觉得可能还有很多困难。 您能给举几个例子,关于机器学习中独特的数据结构的么?作为零起点的同学,我怎么才能开始深度学习呢?我不知道应该看一些什么资料,要是我能搞出点名堂,我非常愿意应聘您团队的研究职位。 答:有一种非常简单的方法,让我们无需证明,就能够得到学科的严谨性,大家都经常用到:叫做科学方法论,它依赖实验、假设和验证。另外,深度学习的论文里逐渐出现越来越多的数学。有一段时间,我曾对深度学习和浅层学习的特性对比很感兴趣(参见我和Delalleau或者更近的Pascanu一起合作的文章)。我还跟Nicolas Le Roux一起在RBM和DBN的近似特性上做了一点工作,我还建议你去看看Montufar的文章,很炫的数学。 至于零基础问题,有很多资料值得参考,比如deeplearning.net网站上的:
网友附加讨论:我从事概率编程语言方面的研究,您觉得有没有深度学习编程语言呢?让新手更容易创造自己的深度学习模型。 网友附加回答:我是Yoshua的博士生,我们实验室现在开发了一个Python库,叫做Pylearn2,它可以让小白相对容易地使用深度学习,可能你还是需要很了解自己的算法本身,但是至少你不需要从头开始自己实现它了。当然这不是通常意义的编程语言,你可以看看Theano,它对于深度学习架构的描述和训练都非常到位。概率编程语言的话可以看看这个。另外机器学习理论方面的研究可以看看这个会议。还有,训练神经网络有很多的技巧,光看别人的论文是学习不到的,这些技巧有的非常的取巧,有的非常偏颇,不会被写在论文里的。最好的方法就是跟创造和研究它的人共事,多问问题,多尝试,参考这个视频教程。 再推荐几个框架:
- cuda-convnet:最常用的gpu卷积神经网络实现,github上也有变种
- caffe
- NNforge:基于cuda-convnet,但是包含更多内容
- pylearn2
- other staff
问:Bengio教授,在您的论文“Big Neural Networks Waste Capacity”中,您指出梯度下降法在神经元很多的时候没有少量神经元情况下好,我的问题是:增加的这些神经元和链接如何导致结果变坏的?您觉得类似(Martens 2010)提出的Hessian Free方法能否克服这个问题?("Deep learning via Hessian-free optimization." Proceedings of the 27th International Conference on Machine Learning (ICML-10). 2010)答:增加的神经元和链接,其实引入了更多的曲率,即非对角海森矩阵。梯度下降法,作为一个一阶方法,会忽略这些曲率(它假设海森矩阵是单位矩阵)。所以神经元多了以后,梯度下降法就会在最小值附近跳来跳去,但总是不能有效的找到最小值。当然二阶方法也不是总有效果的。(译者注:可参考这篇文章) 问:我来自蒙特利尔,一个创业公司,我对您的工作非常感兴趣,一个问题,貌似机器学习专家以及学术界对那些工业界的竞赛,比如Kaggle,不是很感兴趣啊。我知道获胜的概率确实比较低,让投入的时间和产出不成比例。而且很多机器学习爱好者都对此趋之若鹜,没有专家的参与感觉很受伤。一个机器学习领域的专家,难道不是几个小时就可以做出来一个比较不错的结果么?有没有这么一个场景,开放,协同,专家和爱好者一起工作的? 答:这有几个专家赢得Kaggle和Netflix的例子:1,2。 机器学习专家不参与这种竞赛的原因,可能是他们那些好的解决办法,总是会有企业买单,不必参加类似的比赛来竞争。还有,专家从来都是乐于挑战极限的,而不是来面对日常生产环境里面那些非常令人烦躁的真实数据。参加这种竞赛,很大部分的时间都用来对数据进行预处理,而且,浅层模型如SVM、随机森林和boost方法很容易就能得出一个可接受的结果,这种做法没有什么学术价值。除了奖金方面,Kaggle这种竞赛的设置也是有问题的,可以参考这个非常有启发性的视频,大部分有能力可以独立思考的人都不会参与Kaggle。长话短说,竞赛只有能够彰显它在某个研究课题上的意义,才能吸引专家的参与。 问:我听说深度学习模型在训练过程中,很多地方都需要专家经验,手动调节,各种技巧,不知道有没有比较自动化的超参数学习方法呢? 答:超参数优化已经在深度学习领域中初见端倪,主要用在自动搜索模型的参数。所谓超参数,就是机器学习模型里面的框架参数,比如聚类方法里面类的个数,或者话题模型里面话题的个数等等,都称为超参数。它们跟训练过程中学习的参数(权重)是不一样的,通常是手工设定,不断试错调整,或者对一系列穷举出来的参数组合一通枚举(叫做网格搜索)。深度学习和神经网络模型,有很多这样的参数需要学习,这就是为什么过去这么多年从业者弃之不顾的原因。以前给人的印象,深度学习就是“黑魔法”。时至今日,非参数学习研究正在帮助深度学习更加自动的优化模型参数选择,当然有经验的专家仍然是必须的。 超参数的学习早已有之,但是直到最近才做出一点进展。这里面比较早期的主要贡献者(在应用到机器学习非参数学习领域之前)是Frank Hutter团队,他在2009年的博士论文就是关于软件系统里面如何用非参数学习来代替人手设定参数。我之前的博士生James Bergstra和我一起在这个问题上也研究过几年,我们提出了网格搜索的一种简单的取代方法,称作随机采样(random sampling),实验结果非常好,也很容易实现。 随后我们就将Hutter在其他领域使用过的非参数学习方法引入了深度学习,称作序列优化(sequential optimization),发表在NIPS 2011,我的另外一个联合培养博士生 Remi Bardenet和他的导师Balazs Kegl(前同事,现在法国)也参与了这个工作。 这个工作被多伦多大学的研究人员看好并继续深入,其中有Jasper Snoek(Hinton教授的学生),Hugo Larochelle(我毕业的博士生)以及Ryan Adams(哈佛大学教授),他们的工作发表在NIPS2012。文中展示了他们利用自动化的方法,改进了Krizhevsky,Sutskever和Hinton教授非常著名的ImageNet物体识别神经网络算法,刷新了这个数据集的学术记录。 Snoek等人开发了一个软件,被相关学者广泛使用,叫做spearmint,我最近发现Netflix在他们用深度学习做电影推荐的新项目中也用到了它。 网友补充答案:补充一点贝叶斯优化以及Hyperopt的相关内容,贝叶斯优化和专家参与相结合绝对是自动学习参数的好办法,参见这个和ICML调试卷积神经网络的内容。Hyperopt有个Python库,提供ConvNets,NNets以及未来会涉及到机器学习库scikit-learn中一批分类器的自动化参数学习方法。 查看英文原文:Ask me anything Yoshua Bengio
感谢吴甘沙对本文的审校。 给InfoQ中文站投稿或者参与内容翻译工作,请邮件至editors@cn.infoq.com。也欢迎大家通过新浪微博(@InfoQ)或者腾讯微博(@InfoQ)关注我们,并与我们的编辑和其他读者朋友交流。