雷锋网 AI 科技评论按:在今年的谷歌 IO 2019 大会上有个环节,邀请了「深度学习教父」、也是 2018 年图灵奖获奖者之一的 Geoffery Hinton 聊一聊学术、非学术的各类话题。整个过程很轻松,就是聊聊各种话题,不过 Hinton 老爷子一如既往地学术风气十足。雷锋网 AI 科技评论根据视频回放把访谈内容听译整理如下。有小部分删节。
主持人:大家好,我是 Nicholas Thompson,Wired 记者。今天我们要和 Geoffery Hinton 面对面聊一聊。说起 Hinton 他身上有两件事让我很敬佩,第一件当然是他很能坚持,即便所有别的人都说他的想法很糟糕,他也坚持相信自己,坚持一直做下去。别的「有很糟糕的想法」的人很受到他的鼓励,包括我自己。第二件就是,我做了大半辈子管理者,可以说收集了各种各样的职位头衔,而当我看到 Hinton 的简介的时候,他的头衔简直不能更加平庸 —— 就是谷歌工程 Fellow(Google Engineering Fellow)而已。让我们邀请他上台。
Hinton:谢谢,很高兴来到这里。
为什么要坚持神经网络
主持人:那我们开始吧。我记得大概是 20 年前,你开始写一些最早的产生影响力的论文,别人看了以后觉得「唔,挺聪明的想法,但是我们没办法设计这样的电脑」。跟大家谈谈你为什么能一直坚持、为什么那么相信自己找到了很重要的东西?
Hinton:首先纠正你一下那是 40 年前。在我看来,大脑没办法以别的方式运转,它只能是学习连接的强弱。那么,如果你想要制造一个能做智能的事情的机器,你面前有两个选择,给它编程,或者让它学习。显然我们人类的智慧不是被别人编写出来的,所以就只能是「学习」。只有这一种可能。
主持人:那你能再给大家解释一下「神经网络」这个概念吗?在场的多数人应该都是知道的,不过我们还是想听听你最初的想法,以及它是如何发展的。
Hinton:首先你有一些非常简单的处理单元,可以看做是神经元的简单形式。它们能接受传入的信号,每个信号都有权重,这些权重可以变化,这就是学习的过程。然后神经元做的事情就是先把传入的信号值乘上权重,再把它们全都加起来得到一个和,最后再决定是否要把这个和传送出去;比如这个值足够大,就传送出去,不够大或者是负数,就不传送。就这么简单。你只需要把成千上万个这样的单元互相连接起来,里面有成千上万的成千上万倍的权重,然后学习到这些权重,那你就可以做到任何事了。难点只在于如何学习权重。
主持人:你是在什么时候开始觉得,这种做法和人类大脑的运转方式差不多的?
Hinton:神经网络一开始就是仿照人类大脑的样子设计的。
主持人:比如在你人生中的某个时候你开始意识到了人类大脑是怎么工作的,可能是在 12 岁的时候,也可能是在 25 岁的时候,那么你是在什么时候开始、以及如何决定了你要仿照人类大脑的样子设计神经网络的?
Hinton:差不多一知道人类大脑是这么工作的就决定了吧。做这个研究的整个思路就是模仿人类的大脑的连接,然后试着学习这些连接权重。我其实不是这个思路的创始人,图灵就有过同样的思路。虽然图灵为标准计算机科学的发展做出了很大贡献,但是他就认为人类大脑是一个没有什么明确结构、连接权重也都是随机值的设备,然后只需要用强化学习的方式改变这些权重,它就可以学到任何东西。他觉得「智慧」的最好的模式就是这样的。还有很多别的人也都有差不多的想法。
主持人:上世纪 80 年代的时候你在这方面的研究让你变得小有名气,但后来,从什么时候开始其它的研究者就开始放弃这个方向了呢?只有你一个人坚持下来了。
Hinton:(停顿了一下)总有那么一小拨人是坚持相信、坚持到了今天的,尤其是心理学领域里。不过计算机科学这边能坚持的就少一点,因为上世纪 90 年代的时候,领域内的数据集很小、计算机也没有那么快,这时候还有其它类型的方法出现,比如支持向量机(SVM),它们在那样的条件下效果更好,受到噪声的影响也没那么严重。这就开始让人感觉到沮丧了,虽然我们在 80 年代开发了反向传播,我们也相信它能解决任何问题,但那时候我们搞不清它「为什么没能解决任何问题」。后来我们知道了让神经网络发挥实力需要数据和计算力都有很大的规模,但当时没人知道。
主持人:你们当时以为它效果不好的原因是什么?
Hinton:我们以为是算法不好、目标函数不好等等各种原因。我自己很长时间内都有一个想法,觉得是因为我们在做监督学习,需要标注很多数据;那么我们应该做的是无监督学习,从没有标签的数据中学习。但最后我们发现主要原因还是在规模上。
主持人:听起来很有趣,其实只是数据量不足,但是你们当时以为数据量够了,但是标注得不好 —— 你们找错了问题了对吗?
Hinton:我当时觉得「用有标注的数据」就是不对的,人类的大多数学习过程都没有用到任何标签,就只是在建模数据中的结构。其实我现在也还相信这个,我觉得随着计算机变得越来越快,给定一个足够大的数据集以后就应该先做无监督学习;无监督学习做完以后,就可以用更少的标注数据学习。
主持人:到了九十年代,你还继续在学术界做研究,还在发表论文,但是没能继续解决越来越多的问题。你当时有没有想过,觉得我受够了、我要做点别的去?还是就是很坚定地要一直做下去?
Hinton:就是要坚定做下去,这是一定能行的。你看,人类大脑就是通过改变这些连接来学习的,我们去研究、去模仿就好了。学习这些连接的强弱可能会有很多种不同的方式,大脑用了某一种,但是其他的方法也有可能是可行的。不过你总是需要找到一种学习连接权重的方法。这一点我从来没有怀疑过。
看到希望
主持人:大概在什么时候看起来好像行得通了?
Hinton:八十年代的时候其实有件事让大家很头疼,就是如果你设计了一个有很多隐层(中间层)的神经网络,你没办法训练它们。有一些很简单的任务里的神经网络是可以训练的,比如识别手写字体,但是对于大多数比较深的神经网络,我们都不知道要怎么训练。到了大约 2005 年,我想到了一些对深度神经网络做无监督训练的点子。具体来说是,从你的输入,比如说是一些像素,学习一些特征检测器,学习过之后它们就可以很好地解释为什么这些像素是这样的。然后你把这些特征检测器作为数据,把它们作为输入再学习另一批特征检测器,就可以解释那些特征检测器之间为什么会有关联性。那么就这样一层又一层地学。很有趣的是,你可以通过数学证明,当你学的层数越来越多的时候,你不一定得到了更好的数据模型,但是你会知道你当前的模型的比较结果。每当你增加一个新的层,你就会得到更好比较结果。
主持人:能多解释一下吗?
Hinton:当你得到一个模型以后,你会问「这个模型和数据的相符程度如何?」你可以给模型输入一些数据,然后问它「你认为这些数据和你的想法相符吗?还是说你感到很意外?」你可以对这个程度做出一些测量。我们想要的效果是,得到一个好的模型,它看到这些数据以后会说「嗯,嗯,都是我很熟悉的」。准确地计算模型对数据有多熟悉一般来说是很难的,但是你可以计算一个模型和模型之间的相对高低,就是比较结果。那么我们就证明了,当你增加的额外的特征检测器层越多,新模型对数据的熟悉程度就会越高。(雷锋网 AI 科技评论注:这部分的具体技术细节可以参见 Hinton 在 NIPS 2007 上介绍深度信念网络的教学讲座
http://www.cs.toronto.edu/~hinton/nipstutorial/nipstut3.pdf )
主持人:在 2005 年有这样的建模想法挺好的,那你的模型开始有好的输出大概是在什么时候?你又是在什么数据上做的实验?
Hinton:就是手写数字数据集,非常简单。差不多也就是那个时候,GPU(图形计算单元)开始快速发展,做神经网络的人大概从 2007 年开始使用 GPU。我当时有一个很优秀的学生,他借助 GPU 在航拍图像里找到公路,他当时写的代码有一些后来被其它学生用在语音的音位检测里,也是借助 GPU。他们当时做的事情是预训练,做完预训练之后把标签加上去,然后做反向传播。这种做法不仅确实做出来了很深的、经过了预训练的神经网络,再做了反向传播之后还能有不错的输出,它在当时的语音识别测试中打败了不少别的模型,数据集是 TIMIT,很小,我们的模型比当时学术界的最好的成果好一点点,也比 IBM 的好一些。这是一开始,提升不算多。
然后其他人很快就意识到,这种方法再继续改进一点就能取得很好的成果,毕竟它当时打败的那些标准的模型都是花了 30 年时间才做到这种效果的。我的学生毕业以后去了微软、IBM、谷歌,然后谷歌最快把这个技术发展成了一个生产级别的语音识别系统。2009 年有了最初的成果,2012 年已经来到了安卓系统上,安卓系统也就在语音识别方面遥遥领先。
主持人:那时候你有这个想法都 30 年了,终于做出大众认可的成果,而且也比其他的研究人员效果更好,你的感觉如何?
Hinton:感觉真的很开心,终于发展到了解决实际问题的阶段了。
主持人:那么,当你发现神经网络能很好地解决语音识别问题以后,你是什么时候开始尝试用它解决其他的问题的?
Hinton:嗯这之后我们就开始在各种问题上尝试这个方法。最早用神经网络做语音识别的是 George Dahl,他又开始用神经网络预测一个分子是否会连接到某些东西上面然后起到治疗的作用。当时有一个做这个的竞赛,他就直接把用于语音识别的标准方法用来预测药物分子的活性,然后就这么赢了竞赛。这是一个很积极的信号,神经网络的方法似乎有很高的通用性。这时候我有一个学生说,「Geoff,我感觉用这个方法去做图像识别也会效果很好,李飞飞也已经创建了一个合适的数据集,还有一个公开的竞赛,我们一定要去试试」。我们就参加了,得到的结果比标准计算机视觉方法好很多。(AlexNet 在 2012 年的 ImageNet 大规模视觉识别挑战赛 ILSVRC 中以远好于第二名的成绩取得第一,下图中 SuperVision 团队)
主持人:说了不少的成功案例,对化学分子建模啊、语音啊图像啊什么的,有没有什么失败的案例?
Hinton:失败都只是暂时的,你能明白吗?
主持人:那么,有没有哪些领域特别快就成功,有的领域里就慢一些?我的感觉好像是视觉信号处理、语音信号处理这些人类的感知器官的核心任务是最先攻克的,是这样吗?
Hinton:不完全对,感知的确实攻克了,但还有运动控制之类的事情没有那么大的进步。人类的运动控制能力非常高,也非常轻松,很显然我们的大脑就是为运动控制设计的。一直发展到今天,神经网络在运动控制方面的表现才开始追赶上此前就有的技术。神经网络最终会赶超的,但现在才刚刚出现小的胜利。我觉得,推理、抽象推导这些人类也最后才学会做的事情,也将会是神经网络最难学会的事情。
主持人:你们总说神经网络最后能搞定所有的事情?(笑)
Hinton:这个嘛,我们人类就是神经网络啊。所有我们能做的,神经网络就能做。
主持人:没错,不过人类大脑也不见得就一定是世界上最高效的计算机器。有没有哪种机器比人类大脑的效率更高的?
Hinton:哲学上来讲,我并不反对「存在一种完全不同的方式来达成这一切」这样的观点。比如有可能你从逻辑开始,你就会尝试研究自动逻辑,会研究出什么特别厉害的自动定理证明机器;如果你从推理开始,然后你要通过推理做视觉感知,可能这个方法也可行。不过最后这些方法没做出好的效果。我从哲学角度上并不反对其它的方式也能达成这些。只是目前来看,我们知道大脑、也就是神经网络,是确实可以做出这些的。
我们理解神经网络吗?理解我们的大脑吗?
主持人:下面我想问另一个角度的问题,那就是,目前我们并不完全清楚神经网络是如何工作的,对吗?
Hinton:对,我们不太清楚神经网络是如何工作的。
主持人:我们很难从结果推理出神经网络的工作方式,这是我们对神经网络的不理解的关键之处对吧?详细谈谈吧。以及显然我还有紧接着的下一个问题:如果我们不知道他们是如何工作的,那么我们把它们造出来以后是如何得到好的效果的?
Hinton:如果你观察一下当前的计算机视觉系统的话,它们大多数都只有前向传播,没有反馈连接。当前的计算机视觉系统还有一个特点,就是他们对于对抗性错误非常敏感,比如你有一张熊猫的图像,轻微修改了其中几个像素以后,在我们看起来仍然是熊猫,但计算机视觉系统就会一下子认为图中是火鸡。显然,这个修改像素的方式是需要经过精密的设计的,是对计算机视觉系统的误导或者欺骗。但重点是,在人类看来它仍然是熊猫,不受影响。
所以一开始我们以为基于神经网络的计算机视觉系统工作得挺不错的,但是后来当我们发现这样的对抗性修改(攻击)可以起到这样的作用以后,大家都会开始有点担心。我觉得这个问题有一部分原因是因为网络并没能从高级别的表征进行重建。现在有研究者开始尝试做判别式学习,就是学习很多层的特征检测器,然后最终目标是改变不同特征检测器的权重,更好地得到正确的结果。最近我们团队在多伦多也有一些发现,Nick Frost 发现,如果你引入了重建过程,它能让网络面对对抗性攻击的时候更稳定。所以我觉得人类视觉系统中,学习的过程就带有重建。而且我们人类除了视觉之外,很多的学习过程都是带有重建的,所以我们面对对抗性攻击的时候要稳定得多。
主持人:就是说,你觉得神经网络中从后往前的连接可以帮你测试数据的重建的过程?
Hinton:对,我觉得这非常重要。
主持人:那么脑科学家也持有同样的观点吗?
Hinton:脑科学家们全都同意这个观点,就是如果感知信号通路要经过大脑皮层的两个不同区域,那一定会有反向连接。他们只是还没有在这个连接的作用上达成一致。它的作用有可能是注意力、有可能是为了学习、也有可能是为了重建,甚至有可能三者都是。