deeplearning.ai 人工智能行业大师访谈
Geoffrey Hinton
1. 怀揣着对大脑如何存储记忆的好奇,Hinton本科最开始学习生物学和物理学,然后放弃,转而学习哲学;然后觉得哲学也不靠谱,转而学习心理学;然后觉得心理学在解释大脑运作方面也不给力,转而做了一段时间木匠(木匠?!木匠是什么鬼。。。要不要这么洒脱!),然后决定去试一试人工智能,跑去爱丁堡和Longuet Higgins学人工智能。
(感觉Hinton一直带着兴趣和使命感,这是最终目的,而具体学科都只是手段,这个不行就换下一个,市面上找不到就自己造一个。想到现实中很多人因为本科填报了一个专业,就把自己限制在这个专业里,实在是很愚蠢。学习的本质是掌握某种看世界的角度,不同的学科意味着不同的看世界的角度,世界会变得更立体更有层次。当然这不能只是完全割裂式地均分精力,必须带着一个主题,比如解释大脑之于Hinton,如此在不同学科之间游走也就不叫通而不专了,专的是关于这个实际问题,而不是某个具体学科。在采访中经常可以看到Hinton从心理学的角度来分析问题。)
2. Higgins在神经网络方面做了很好的工作,但是决定放弃了,所以他认为Hinton应该搞符号主义人工智能(symbolic AI),Hinton拒绝了。两人争论了很多,但是Hinton坚持己见。
3. Hinton博士毕业后在英国找不到工作,然后争取了一个奖学金跑去加州,如鱼得水。在英国,神经网络被认为很蠢,加州的环境更开放,神经网络就被接受的多。Hinton也非常享受和David Rumelhart一起工作。
(哈,所以人啊不要太限制自己的活动范围,抽象的说是学科,具体的说是地域、社群。找到和自己有相同价值观的一拨人,一起好好做事。不要把自己局限在某个环境里给自己找不自在。}
4. 1982年Hinton和Rumelhart、Ron Williams发明了反向传播算法。Hinton说:“这主要是Rumelhart的想法,而且不少人在之前也提出过,只是没有清晰的提出“反向传播”的含义,但用链式法则求导,并不是很新的想法。”
(清风道骨!也是他现在已经足够功成名就,一些小的glory也没那么care。)
5. NG问为什么是Hinton的论文被大家广泛的接受。Hinton说因为论文是发表在《Nature》上(1986),而为了能发表,他做了很多人事工作。。。1)直接跑去和审稿人聊了好久,当面给审稿人解释论文的想法;2)用审稿人能理解的例子展示了算法,并且给他看到惊艳的结果。
(论社会活动能力的重要性,论表达能力的重要性。)
6. Hinton认为自己提出的这么多理论里,最有美感的是和Terry Sejnowski做的Boltzmann machines,它能用非常非常简单的学习算法应用到密度很高的连接起来的网络里,这些网络中只有一些节点能被看到,这种隐藏的结构可以用非常简单的算法学习出来。这套理论被脑科学很好的验证。后来Hinton又改进了算法,化繁为简,在更简单的网络结构里仅用一个循环,提出了restricted Boltzmann machines,实际中反而更有效。NG点评说2007年开始很多深度学习神经网络都受此启发。第三件让Hinton觉得很感兴趣的是他做过的一些变分法(variational methods),让EN更有效。
7. Hinton证明了在restricted Boltzmann machines上,ReLU等价于一叠logistic单元。Hinton提到ReLU的一个优点是如果不断复制隐藏层,又用单位矩阵初始化,可以直接复制下一层的内容。这一段没太听明白,大概就是ReLU和单位矩阵初始化的关系。
8. NG问反向传播和大脑的关系。Hinton说了一大堆理论的东西,没太听明白,大意是反向传播能部分的表征大脑行为,但大脑有其他的不是反向传播的方式,他也在设计新的算法。NG还问他胶囊(capsule)的进展,Hinton自己写了很多论文都被拒了,但他自己深信不疑,持续的投入研究。Hinton解释胶囊可以表征一个且只有一个特征,但这可以是任何特征,胶囊比普通的神经元可以表示更多的性质,普通神经元只可以表示一个度量上的属性。
9. Hinton认为GAN是深度学习新想法中最重要的,他希望自己提出的胶囊的概念也能如此成功。
10. Hinton认为建模型的基本原则:先做测量,对其应用非线性变换直到可以表示为状态向量,然后进行线性操作。不应该像一般的filter,仅仅对观测做线性假设,而是应该找到一个非线性变换把观测真正变换到线性空间。比如图像里变换视角,我们要做的是从图像的像素转化到坐标系,有坐标之后可以用矩阵乘法变换视角,然后再变换回像素。
11. NG问给初学者的建议。Hinton回答:1)多读文献,但不要读太多。。。对于有创意的人,最好是读一部分文献,然后发现一些你认为所有人都错了的东西,你只是感觉有点不太对,然后想怎么做才能做对。当人们反对的时候,要坚持自我。Hinton表示他支持人们坚持自我,不管你的判断直觉是对还是错。如果你的直觉是对的,那么你当然应该坚持;如果你的直觉是错的,你做什么都无所谓。。。。。。。(- -!)。一定要相信自己的直觉,不相信,直觉就没有意义了。2)永远不要停止编程,只有实践了才知道里面的小技巧和坑。3)阅读足够多直到你可以产生直觉,然后相信直觉,自己动手,不要担心别人有反对意见。当你觉得是个超好的主意,而其他人都觉得荒谬极了,那你就真的找对东西了,这就是一个好想法的信号。。。Hinton真是超级超级自信啊。4)NG问给PhD的建议。Hinton对现阶段学校能给的教育不抱有太大希望,因为他认为现在还是只很少的一部分人认识到现在世界发生的改变。他认为这一次没到第二次工业革命的地步,但也规模接近,这一次不再是编程,而是向计算机展示东西,然后计算机自己搞定。现在大学里的计算机学科还是基于以前的计算机知识,而现在向计算机展示东西会和编程一样重要。
Yoshua Bengio
1. 如何走上人工智能的研究的?Bengio说他小时候读了很多科幻小说,1985年(64年出生,21岁)研究生阶段开始阅读神经网络方面的论文,对这个领域产生了热情。
2. 如何看深度学习这些年的发展?Bengio说他们从实验、直觉入手,然后才提出理论,比如为什么反向传播有效,为什么深度这么重要。2000年开始研究深度神经网络的时候,他们只是很直觉的认为神经网络更深才会更强大,并不清楚怎么论证,最初的实验也没有成功。
3. 和30年前相比,有哪些东西是很重要的,它们后来被证明是以正确的,又有哪些最终被证明是错误的?Bengio说他犯过最大的错误是认为反向传播需要光滑的非线性激活函数,2010年前后他们开始尝试ReLU时,结果比sigmoid好很多,这让他很惊讶。
4. 哪项研究让他最自豪?1)长期依赖(Long term dependency)的研究。2)维数灾难(curse of dimensionality)。3)神经网络的联合分布。4)深度学习在自动编码器和RBMs上的应用。5)更好地理解初始化对于训练深度网络的重要性,包括梯度消失的问题,这个研究最终论证了分段线性激活函数的重要性。6)无监督学习中,降噪自动编码,GAN等很流行的生成式对抗网络。7)机器翻译里的注意力机制(Attention),原先只是把机器学习看作向量和向量之间的映射,借助注意力机制,可以处理任意形式的数据结构。
5. 无监督学习:现在业内的系统都是基于监督学习,这需要人们先定义出当前问题的一些重要概念,并在数据集中标记出来。但人类可以做更多的事情,可以探索世界,可以通过观察发现新的概念。这不是简单地在数据集做不做标记的问题,而是如何构建一个心智结构可以通过观察解释世界。Bengio说他还在研究如何把无监督学习和增强学习结合起来,希望能解释人类或机器如何通过与世界互动来学习。
6. Bengio觉得现在的深度学习研究已经远离了他希望的方向。机器对于世界的认知还很表面化。最让他兴奋的是,他现在的研究不是要让系统实现什么有用的功能,而是回归最本质的原理,如何让计算机观察这个世界,如何与世界互动,如何发现世界是如何运行的。现在的深度学习主要实现的是感知(perception),下面的方向是在抽象层面明白事物的原理,或者说如何让机器理解高级别的抽象概念,或者说认知。
7. 从研究方法的角度说,Bengio更喜欢研究“玩具问题(toy problems)”,这可以很快速的做实验看结果,同时它的结果是可以迁移到更大的问题上去。Bengio说这相当于是分而治之(divide and conquer)的研究方法。
8. 深度学习不仅仅是一门工程学科,而是需要去了解真正的原理。Bengio说现在的研究方式有点像盲人走路,碰运气发现了一些不错的结果。如果能稍微停一停脚步,想一想如何迁移结论。并不一定都需要数学抽象,但至少要逻辑化的。然后再用数学来精炼。研究的目的不要总想着做一个baseline、bench mark,打败其他实验室、公司之类的,更多的是要思考提出哪些问题可以帮助我们理解我们感兴趣的现象。所以我们设计实验,可以不为了获得更好的算法,而是为了更好的理解现有的算法。“为什么”是非常重要的。
9. 给深度学习学生的建议:每个人目的不同,做研究和做应用所需的对深度学习的理解是不同的,但不管哪种情况都需要实践。需要大量阅读,阅读大量代码,也需要大量动手编程。不要只满足于调用现成框架的接口,如果可以的话,尽量从基本原理入手获取认识。真正理解自己在做的每一件事情。Bengio推荐度ICLR的proceeding,NIPS、ICML和其他一些会议当然也有很好的论文,但还是从最近几年的ICLR的proceeding入手最好。不要被数学吓到,只需要锻炼直觉,一旦形成直觉,数学上也就很容易理解。有良好的数学和计算机背景,上手深度学习非常快。
Pieter Abbeel
1. Pieter Abbeel小时候想做一个篮球运动员 - -!上学的时候喜欢数学和物理,上大学之后很自然的学工程。Pieter定义工程问题是“解决实际中应用物理和数学的问题”。pieter电子工程系毕业的时候不知道该干嘛,因为所有的工程学科都很有趣。最后选择AI是因为他感觉AI是一切东西的核心,可以帮助所有学科。
2. Pieter Abbeel主要的贡献是在深度增强学习。在此之前,他研究了很多增强学习。他觉得传统增强学习的问题在于不但需要机器学习的知识,还需要特定领域的知识。2012年AlexNet给他很大启发,AlexNet的工程量很小,可能可以用类似的深度学习的方法来处理增强学习的问题。Pieter认为增强学习的乐趣在于某种程度上比监督学习有更多的问题,在监督学习中大家考虑的是输入和输出之间的映射关系,而在增强学习中关注的是数据从何而来。完全依赖系统自己去找数据是很危险的,比如自动驾驶,不可能放任系统去找负面的例子,否则会创造事故。增强学习最核心的问题在于如何represent数据。他觉得增强学习最大的挑战在于如何让系统在长时间线上保持推理能力。
3. Pieter Abbeel回忆自己在斯坦福读博士和Andrew NG共事,他觉得NG给他最有影响的一个建议是:不该去检验你研究里的度量是否正确,而是去看你做的事情和它影响的东西之间的联系,或者说你的研究实际改变了什么,而不是研究里具体的数学。
4. NG问Pieter给AI初学者的建议。Pieter说现在是进入AI的好时机,因为人才需求量太大了。网上课堂是很好的学习途径,包括NG的课、cs231n、伯克利的课。最重要的是,要自己真正着手去做,不能只是看视频。NG问是去读博士还是去大公司工作。Pieter说取决于能得到的指导,学校和公司都有很好的指导的人。但最主要的还是自学。
5. 监督学习和增强学习的区别:监督学习像是一种对过去数据的模仿,增强学习是可以思考的更长远。
Ian Goodfellow
1. Ian Goodfellow之前是做神经科学研究,在斯坦福上了Andrew NG的课之后,Ian决定投身AI。在寒假他和小伙伴读了Hinton的论文,然后搭了一台用CUDA跑Boltzmann machine的电脑,然后他意识到深度学习是未来,因为他看了很多算法比如支持向量机,觉得它们不是那么靠谱。
2. Ian提出了生成对抗网络(GAN)。他研究生成模型很久,非常了解其他框架的优缺点,像找一个可以同时避免所有现存算法缺点的算法。GAN是在有很多数据的基础上制造更多类似的数据。
3. 关于GAN的未来,Ian觉得很重要的是找到方法让GAN稳定。
4. Ian说他从Andrew NG的课程学到的很重要的事情是线性代数和概率论非常重要。除了阅读之外,实际着手做项目非常重要。NG总结说:读Ian写的deep learning那本书,在各种材料上联系,把代码发到github或者arXiv上。
5. 关于对抗性样本(adversarial examples),Ian解释说这涉及到机器学习算法的安全问题。攻击者可以欺骗机器学习算法。
Andrej Karpathy
1. 本科的时候在多伦多大学上Geoffrey Hinton的课,在MNIST数字数据集上训练受限玻尔兹曼机,觉得很有趣。后来在UBC读硕士,上了另一门机器学习的课,那是他第一次深入了解神经网络的相关知识。他对人工智能很感兴趣,上了很多相关的课,但是对那些知识听不太懂,不是非常满意。他觉得神经网络才是AI,才是真正有趣的东西。于是他走上了这条路。
2. Karpathy认为神经网络是一种新的编程方式,我们定义好输入和输出,喂给程序很多例子,然后它会自动写程序。
3. NG觉得Karpathy对于深度学习很重要的两项工作:1)建立ImageNet;2)上cs231n的课。
4. 关于这些年深度学习的发展,Karpathy说自己最开始接触受限玻尔兹曼机时也没想到它会这么大规模应用,现在大家可以把某些数据集上训练的结果迁移到其他应用上,发展非常快。ImageNet比赛的网络已经成了很好的特征提取器。
5. 目前监督学习表现的非常好,而无监督学习还是原始状态。
6. Karpathy说自己花了一年半在OpenAI思考深度学习未来的发展,在他看来,这个领域会分成两条路,一边是应用AI,或者说搭建网络并训练,主要是监督学习,也有可能未来无监督学习,慢慢提高性能。另一个方向,是更一般的人工智能方向,就是如何让神经网络编程一个完全动态的系统,可以思考,可以做人类能做的所有的事情。Karpathy认为人类以前处理计算机视觉的方式是错误的,把计算机视觉分割成一个个子任务(比如识别物体、识别人脸等等),我们研究人类一项项的能力,一旦做出来了,就分成了各种不同的子领域;有了一个个子系统之后,我们在把它们组合起来。Karpathy更感兴趣的领域,不是这种分解式的,而是希望构建一个单一的网络,可以动态处理各种问题。问题在于如何构造目标函数去优化权重,才能得到真正的智力。
7. Karpathy给初学者的建议:必须接触到底层,知道一切程序背后的原理,必须充分了解整个流程。从零开始去实现,这很重要,这样学习的性价比最高。不要一开始就用现成的框架,比如TensorFlow,可以自己写最底层的代码。
林元庆
1. 读博士之前,林元庆是学光学,他自认为数学基础非常好。在宾夕法尼亚大学上课认识了他的博士导师Dan Lee,转学机器学习。他从头开始学了很多算法,甚至PCA,之前他完全不知道这些,他觉得非常兴奋,每天都能学到好多新东西。博士毕业后去了NEC做研究员(2008年),在NEC后期才开始进入计算机视觉领域,做的第一件事情就是参加第一届ImageNet比赛(2010年)获得了第一名。2011年的AlexNet给了他很大震撼,“哇,深度学习如此强大!”从那之后,林元庆进入深度学习领域。
2. 林元庆在深度学习技术及应用国家工程实验室的主要工作是建立一个巨大的深度学习平台,这个平台会提供深度学习框架,类似于PaddlePaddle,也提供大规模的计算资源、庞大的数据库和很多应用机会。传统的学科是线性增长的,而相比之下现在深度学习的领域是爆发式发展。
3. 给深度学习初学者的建议:现成的开源框架对初学者的帮助非常巨大,他自己学习深度学习时并没有那么多开源资源可以用,现在也有很多好的学习资源。总的来说,现在是接触深度学习的好时机。林元庆说自己的学习是反着来的,他学习了PCA、LDA等东西之后,才开始学习深度学习,他觉得这样也不错,打下了很多基础,知道这些规则可以提供理解深度学习的运作模式的直觉。深度学习和这些规则之间有联系。所以他除了建议利用开源的资源,还建议学习一些有关机器学习的基础知识。
Ruslan Salakhutdinov
Ruslan Salakhutdinov一方面是苹果的研究主管,另一方面是CMU的教授。
1. Ruslan说自己进入深度学习完全是运气,他在多伦多大学读硕士,然后休学了一年,他在金融领域工作,那时候他不确定是否要去读个博士。有一天早晨,他在路上遇到了Geoffrey Hinton。Geoffrey Hinton跟他说他有个好点子,然后两个人一起散步讨论,Geoffrey介绍了玻尔兹曼机之类的东西,Ruslan说自己当时没听懂Geoffrey在说什么,但他听了觉得很激动。。。于是就跟着Geoffrey读博士了。。。那是2005、2006年左右,深度学习的框架慢慢开始成熟。
2. 关于受限玻尔兹曼机(RBM)和深玻尔兹曼机,Ruslan说模型非常好,在GPU大规模应用之前,预训练非常有效,是替代反向传播的手段。GPU大规模应用之后,计算能力得到很大提高,反向传播被大规模应用。
3. Ruslan觉得无监督学习(包括半监督学习)的发展空间非常大,对于初学者来说,这是很好的切入点。
4. 对于初学者的建议:1)多尝试不同的事情,不要害怕尝试新的东西,不要害怕挑战难的问题。2)不要只是使用现成的框架,而是要写底层代码,知道系统背后的运作原理,知道如何在GPU部署。3)在学术界,有更多的自由来处理长期的问题、更疯狂的问题;在工业界,可以开发技术直接影响百万用户,而且有更多的计算资源;学术界和工业界都很好,关键是早点进入深度学习领域。