第五章 深度突破(1 / 1)

2014年1月,英国的科技行业发生了一件前所未有的事情:谷歌在这儿收购了一家小公司。虽然以硅谷的标准来看,这次收购很不起眼,但是在相对平稳的英国计算机行业来说,这是非同寻常的。这家被收购的公司名叫“深度思维”(DeepMind),是一家新成立的公司,当时的员工不足25人,收购报价高达4亿英镑[62]。在外界看来,深度思维公司被收购时似乎没有任何产品、技术或者商业计划,它几乎不为人所知。甚至在它的专业领域——人工智能,亦如此。

谷歌斥巨资收购这家小小的人工智能公司上了新闻头条,全世界都想知道这家神秘的公司有些什么人,以及为什么谷歌认为一家名不见经传的小公司有着如此高的价值。

人工智能突然成了新闻热点——以及商业热点。全球对人工智能的兴趣激增,媒体也注意到了这股热潮,关于人工智能的报道频频见诸报端。各国政府也注意到了,并开始询问应该如何应对。一系列国家人工智能发展倡议很快接踵而至。科技公司都争先恐后投入这个领域,生怕被历史车轮甩落。随之而来的还有投资浪潮,虽然深度思维是人工智能领域最引人注目的收购,但也不乏其他案例。2015年,优步公司从卡内基-梅隆大学机器学习实验室揽获了至少40名研究人员。

在不到10年的时间里,人工智能突然从一潭计算机科学的死水变成最炙手可热、被炒作得最厉害的领域之一。人们对人工智能的态度发生突如其来的巨大变化,是由一项核心人工智能技术——机器学习的快速发展所推动的。机器学习是人工智能的一个分支领域,但在过去60年的绝大部分时间里,它一直在一条独立的道路上发展,正如我们即将在本章看到的,人工智能和这个突然爆发出魅力的分支学科之间,有时候关系会变得挺微妙。

在本章中,我们将了解21世纪机器学习革命是如何发生的,我们会从简要回顾机器学习开始,重点看一下机器学习的一种特殊方法——神经网络是如何在该领域占据主导地位的。就像人工智能本身的故事一样,神经网络的故事也充满了跌宕起伏:它曾经度过了两次寒冬,就在世纪之交的时候,许多人工智能研究人员还把神经网络视为一个毫无希望的研究领域。但是,神经网络最终迎来了胜利,而推动其复兴发展的新思想是一种被称为深度学习的技术。深度学习正是深度思维公司的核心技术,我将告诉你深度思维的故事,以及深度思维构建的系统是如何引来全球赞誉的。但是,虽然深度学习是一门强大又重要的技术,但它并不是人工智能的终点。因此,正如对其他人工智能技术所做的那样,我们也将讨论它的局限性。

机器学习概述

机器学习的目标是让程序能够从给定的输入中计算出期望的输出,而不需要给出一个明确的方法。举个例子,机器学习的一个经典应用是文本识别,即获取手写文本并将其转录成文字。在此,给定的输入是手写文本的图片;期望的输出是手写文本表示的字符串。

任何一位邮政工作者都可以告诉你,文本识别挺难。每个人的字迹都不同,而且还有人笔迹潦草,有时候钢笔墨水会漏在纸上,有些书写的纸又脏又破。回顾一下第一章里面的图1,解读图片是一个未曾解决的问题。这不像玩棋盘类游戏,我们有理论上可以实现的步骤,只是需要启发式应用。我们并不知道图像识别的步骤是什么,所以需要一些特别的方式——这就让机器学习有了用武之地。

对于文本识别的机器学习程序,我们通常需要给它提供许多手写字符的范例来进行训练,每个范例都标有对应的实际字符,如图13所示。

图13 程序训练数据

识别手写字符(本例中为数字)的机器学习程序训练数据,训练目标是这个程序能够自动识别手写数字。

刚才描述的这种机器学习类型被称为监督式学习,它有一个至关重要的要点:机器学习需要数据,大量的数据。事实上,正如我们即将看到的,提供精心制作的训练数据集合对机器学习的成功至关重要。

我们训练程序进行机器学习时,必须仔细设计训练数据集合。首先,我们通常只会使用一小部分可能的输入和输出来训练程序,在手写数字识别示例中,我们不可能向程序展示所有可能存在的手写字符,那根本不现实。再说了,如果我们可以向程序展示所有可能的输入集,那么就根本不需要机器来学习什么了:机器只需要记住每一个输入对应的输出就行了。无论何时对它进行输入,它只需要查找相应的输出即可——这不算机器学习。因此,一个程序必须只能使用可能存在的输入输出集合的一小部分进行训练,但是如果训练数据量太小,那么程序没有足够的信息来学会人们所期望的输入到输出的映射。

训练数据的另一个基本问题是特征提取。假设你在一家银行工作,银行需要一个机器学习程序来学习识别不良信贷风险。程序的训练数据是过去许多客户的记录,每个客户的记录上会标注他信贷记录是否良好。客户记录通常包括他们的姓名、出生日期、住址、年收入、交易记录、贷款记录和相应的还款信息等。这些信息在训练数据中被称为特征。不过,所有的特征在程序训练中都有意义吗?其中某些特征可能和该客户的信贷风险毫无关系。如果你事先不知道哪些特征和机器要学习的目标有关系,那么你可能试图将所有特征都放入训练数据中。但是,这样就会产生一个很严重的问题,被称为维度诅咒:训练数据包含的特征越多,你需要给程序提供的训练数据量就越大,程序学习的速度也就越慢。

最简单的应对方式就是只在训练数据中包含少量的特征,但这也会引起一些问题。一方面,你可能不小心忽略了程序正确学习所必需的特征,即确实标明客户信贷记录不良的特征,另一方面,如果你没有合理地选择特征,可能会在程序中引入偏差。例如,假设你给不良信贷风险评估程序训练数据里面导入的唯一特征是客户地址,那么很可能会导致程序在完成机器学习以后带有地域歧视。人工智能程序或许会变得有偏见,这种可能,以及它所引发的问题,我们将在后面详细探讨。

在另一种机器学习方式——强化学习中,我们不给程序任何明确的训练数据:它通过决策来进行实验,并且接收这些决策的反馈,以判断它们是好是坏。例如,强化学习被广泛应用于训练游戏程序。程序玩某个游戏,如果它赢了,就会得到正反馈,如果它输了,就会得到负反馈。不管正负,它得到的反馈都被称为奖励。程序将会在下一次玩游戏的时候考虑奖励的问题,如果它得到的是正面的奖励,那么下一次玩的时候它更倾向使用同样的玩法,如果是负面的,那它就不太可能这样做。

强化学习的关键困难在于,许多情况下,奖励反馈可能需要很长的时间,这使得程序很难知道哪些行为是好的,哪些行为是坏的。假设强化学习的程序输了一场游戏,那么,究竟是游戏中的哪一步导致了失败呢?如果认为游戏中的每一步都是错误的,那肯定算总结过度。但我们怎么分辨究竟哪一步是错的?这就是信用分配问题[10]。我们在生活中也会遇见信用分配问题。如果你抽烟的话,很可能在未来收到与之有关的负面反馈,但是这种负面反馈通常会在你吸烟很久以后(通常是几十年)才会收到。这种延迟的反馈很难让你戒烟。如果吸烟者在吸烟以后立即就能收到负面反馈(以危及生命和健康的方式),那么我认为,烟民数量一定会锐减。

到目前为止,我们还没提到程序是怎样进行学习的。机器学习作为一个学科领域,拥有同人工智能一样长的历史,也同样庞大。在过去的60年里,人们发展过各式各样的机器学习技术。不过近年来机器学习的成功源自一种特殊的技术:神经网络。其实,神经网络是人工智能中最古老的技术之一:1956年,约翰·麦卡锡在人工智能暑期学校里提出的最初建议就包括神经网络。但直到本世纪,它才再度引起了人们的广泛关注。

神经网络,顾名思义,灵感来自大脑内组成神经系统的神经细胞——神经元的微观结构。神经元是一种能够以简单的方式相互交流的细胞,自神经元发起的纤维突起,被称为轴突,与其他神经元进行连接,连接的“交叉点”被称为突触。一般来说,神经元通过突触连接来接收电化学信号,并且根据接收的信号,产生输出信号,然后由其他神经元通过突触连接接收。关键的是,神经元接收到的输入有着不同的权重:有些输入比其他的更重要,有些输入甚至可能抑制神经元,阻止它产生输出。在动物的神经系统中,神经元组成的网络是相互联系的:人脑大约有1000亿个神经元,人脑中的神经元通常有数千个连接。

因此,神经网络的构想,就是在机器学习的程序中引入类似的结构。毕竟,人类大脑已经充分证明了神经系统能够有效地学习。

感知器(神经网络1.0)

神经网络的研究起源于20世纪40年代美国研究人员沃伦·麦卡洛克(Warren McCulloch)和沃尔特·皮茨(Walter Pitts),他们意识到神经元可以用电路建模,更具体地说,是用简单的逻辑电路,他们用这个想法建立了一个简单但非常通用的数学模型。到了50年代,弗兰克·罗森布拉特(Frank Rosenblatt)对这个模型进行了改进,创造出了感知器模型。感知器模型意义重大,因为它是第一个实际出现的神经网络模型,时至今日,它仍然有存在的意义。

图14展示了罗森布拉特的感知器模型,中间的方块代表神经元本身,左边指向方块的箭头代表神经元的输入(对应神经元的突触连接),右边的箭头代表神经元的输出(对应轴突)。在感知器模型中,每一个输入都跟一个被称为权重的数字关联,在图14中,与输入1相关的权重为w1,与输入2相关的权重为w2,与输入3相关的权重为w3。神经元的每一个输入都呈激活和未激活两种状态,如果一个输入被激活,它就会通过相应的权重“刺激”神经元。最后,每一个神经元都有一个触发阈值,由另一个数字表示(在图14中,触发阈值用T表示)。感知器的运作模式是神经元受到的刺激超过了触发阈值T,那么它就会“启动”,这就意味着它的输出被触发。换句话说,我们把激活的输入的权重加在一起,如果总权重超过阈值T,则神经元产生一个输出。

图14 罗森布拉特感知器模型中一个简单的神经元结构

具体来说,假设图14中神经元每个输入的权重都为1,阈值T为2。如果其中任意两个输入被激活,神经元就会启动输出。换言之,在这种情况下,超过半数的输入被激活,则神经元就会被触发。

我们再假设输入1的权重为2,而输入2和3的权重都为1,阈值T为2。在这种情况下,如果输入1激活,或者输入2和3共同激活,或者三个输入都激活,神经元就会被触发。

当然,真实存在的神经网络包括许多神经元,图15展示了由三个人工神经元组成的感知器。注意每个神经元都是完全独立运作的。此外,每个神经元能“看到”每一项输入——然而,对于不同的神经元,输入的权重可能不同。也就是说,输入1对于三个神经元分别有各自的权重值,可能它们并不相同。另外,每个神经元的触发阈值也可能并不相同(图15中分别为T1, T2和T3)。所以,我们可以想象为三个神经元在各自计算不同的东西。

图15 由三个人工神经元组成的单层感知器

然而,图15所展示的感知器并没有反映出大脑高度互联的结构,一个神经元的输出会反馈给其他许多神经元。为了更清楚地反映人脑结构的复杂性,人工神经网络通常是分层组织的,如图16所示,即多层感知器结构。图16的感知器由9个神经元组成,分为3层,每层3个神经元。每一层的每个神经元都接收上一层神经元的输入。

图16 由9个神经元组成的3层感知器

需要注意的是,即使在这个非常简单的感知器中,事情也开始变得复杂了:我们的神经元之间已经有27个连接了,每个连接都有对应的权重,9个神经元都有自己的触发阈值。虽然麦卡洛克和皮茨就在模型中设想了多层神经网络结构,但在罗森布拉特的时代,人们主要关注单层网络,原因很简单:没有人知道如何训练具有多个层面的神经网络。

每个连接所对应的权重值对于神经网络的运行至关重要,事实上,这就是神经网络分解下来的全部内容:一堆数字列表。对于任何一个大小合理的神经网络来说,这个数字列表的长度都相当可观。因此,训练一个神经网络需要用某种方式找到适当的权重值。通常的寻找方式是在每次训练以后调整权重值,试图让网络产生正确的输入到输出的映射。罗森布拉特试验了几种不同的技术,并为一个简单的感知器模型找到了一个被他称为纠错程序的技术。

现在我们知道罗森布拉特的方法肯定是有效的,它可以正确地训练一个网络。但是在当时,存在一个强烈的异议。1969年,马文·明斯基和西摩·帕普特(Seymour Papert)出版了一本名叫《感知器》的书[63],书中指出单层感知器网络有着非常大的局限性。事实上,如图15所示的单层感知器确实如此,它们甚至连许多输入和输出之间的简单关系都学不会。但当时吸引大多数读者注意力的,是明斯基和帕普特的研究表明,感知器模型不能学习一个很简单的逻辑概念——异或(XOR)[11]。举一个例子,假设你的网络只有两个输出,当其中一个输出被激活时,异或函数应该产生一个输出(但当两个输入同时被激活的时候,则不会产生输出)。要证明单层感知器无法表示异或状态很容易,感兴趣的读者可以在附录D中找到更多信息。

明斯基和帕普特的书似乎给出了相当全面的结论,不过时至今日仍然存有争议。该理论结果证明了某些类别的感知器在基础结构层面具有严重局限性,这似乎就意味着基于感知器的通用模型存在局限性。而如图16所示的多层感知器并不受这些限制:从精准的数学定义来说,可以证明多层感知器完全能够普遍适用。然而,在当时,没人知道该如何训练一个具有多层感知器的网络:它只是一个理论上可能出现的网络结构,在现实中无法构造。20年后,随着科学的发展,它才从理论走向实践。

我很怀疑,当年对感知器太过激进的宣传间接导致了对它的负面结论下得如此武断。比如,1958年《纽约时报》上某篇文章兴奋地报道[64]:

美国海军今天公布了一个电子计算机雏形,人们期望它能够行走、说话、视物、书写、自我复制,并且意识到自己的存在。

对于神经网络研究衰落的确切原因,我们可以展开各种辩论,但不管是什么,到了20世纪60年代末,神经网络研究急剧衰落。人们转而支持麦卡锡、明斯基和西蒙倡导的符号人工智能的方式(讽刺的是,神经网络研究的衰落仅仅发生在人工智能寒冬——我们在第二章里提到过——出现的前几年)。1971年,罗森布拉特死于一次航海事故,使得神经网络研究领域失去了一员主力大将。如果他能活下来,人工智能的历史也许会有所不同。总之,在他死后,神经网络的研究被搁置了十多年。

连接主义(神经网络2.0)

神经网络研究领域一直处于休眠状态,直到20世纪80年代才开始复苏。一本分上下两册出版的书籍《并行分布式处理》[65],预示着神经网络研究领域的复兴。并行和分布式处理(简称PDP)是计算机科学研究的一个主流领域,它主要研究如何建立能够并行运算的计算机系统。乍一看,这本书跟人工智能或者神经网络毫无关联,而且我想某些看了书名就买书的人,在发现本书的内容和神经网络有关的时候,会感到无比困惑。或许作者选择这个标题就是为了跟之前的神经网络研究撇清关系吧。

从某种意义上来说,新兴研究的最重要部分也没那么新颖:它主要研究多层神经网络,可以轻易克服明斯基和帕普特所断定的简单感知器系统的局限性。不过跟之前的研究仍然有一点关键的区别。以前关于感知器的研究主要集中在单层网络上,因为当时没有人知道如何“训练”多层神经网络,也不知道如何找出神经元之间连接的权重值。PDP以一种被称为反向传播的算法为这个问题提供了解决方案,这或许是神经网络领域中最重要的一门技术。

就如科学研究中经常发生的情况一样,反向传播似乎在过去的几年里被发明和重新发明过很多次,但是PDP研究人员引入的特定方法最终确定了它的地位[66]。

如果要完整地解释反向传播算法,我们必须引入本科水准的微积分知识,这远远超出了本书设定的范围。不过反向传播算法的基本思想很简单,它的工作原理是收取神经网络出错的反馈,这里的错误是在网络的输出层的输出(比如网络输入了一张猫的图片,而输出层将其归类为一条狗)。反向传播算法将错误从输出端向输入端逐层逆向修正(算法也是因此而得名的)。它首先计算误差值(即输出的数据和期望得到数据之间的差值),在给定输入和输出的情况下,误差是一个和权重有关的函数,需要通过修正权重值使得误差值达到极小(即尽量减少误差)。根据误差值能够得到等值线图,在等值线图上体现为最陡的下降路线,即为从当前的误差到我们期望的最小误差的方法。这个通过调整权重值来减少误差值,最终接近极小误差(即输出结果尽量接近期望输出)的过程被称为梯度下降。然后,调整完最后一层权重以后,逐级往前调整,以此类推。

PDP还提供了比感知器更适用的神经元模型。感知器模型本质上还是二进制的计算单元(状态为开或者关),而PDP的神经元模型更具备通用性。

反向传播算法的发展和PDP研究界引入的其他创新,使得神经网络具备广泛应用的可行性,这远远超出了20年前感知器模型的简单演示,人们对神经网络的发展兴趣倍增。但事实证明,PDP的泡沫也没有持续太久。到了90年代中期,神经网络研究再次失宠。事后看来,神经网络车轮从PDP研究这辆马车上脱落的原因,并非研究基础有固有缺陷这类硬伤,而是源于一个平淡无奇的理由:当时的计算力不够强大,无法承载新技术。并且,PDP的进步似乎十分缓慢,而机器学习的其他领域又在飞速发展,因此,机器学习的主流热点,又一次从神经模型上转移开了。

深度学习(神经网络3.0)

我想起2000年前后参与的一个学术人工智能特派专家组的经历。小组的一位成员试图说服我们拒绝任何从事神经网络研究的申请人。“这是一个富有影响力、充满机会的领域,”他辩称,“我们为什么要雇用一个研究夕阳产业的人呢?”不过我们忽视了他的意见。但公正地说,在2000年,你必须具备非凡的远见卓识才能预测到神经网络即将再次复兴。到了2006年前后,一场复苏确实开始了,它引起了人工智能史上规模最大、宣传最广的爆发。

推动第三次神经网络研究浪潮的关键技术被称为深度学习[67]。我倒是很乐意告诉你深度学习可以用某个单一的关键理念描述出来,可惜,事实上,这个术语指代的是一系列相关思想的合集。深度学习至少可以从三个不同的方面解读。

其中最重要的,顾名思义,就是网络要具备“深度”,即多层结构。每一层可以在不同的抽象层面上处理一个问题——靠近输入层的层面处理数据中比较低级的概念(例如图片的边缘之类),而越是到了深层网络,就处理越为抽象的概念。

深度学习不仅仅体现在“深度”上,还能够享受神经元数量剧增的益处。一个典型的1990年的神经网络可能只有大约100个神经元(如果你没忘的话,人类的大脑大约有1000亿个神经元)。这样的网络在处理具体问题上显然十分具有局限性。到了2016年,先进的神经网络已经拥有大约100万个神经元了(这个数量和蜜蜂的大脑大致相同)[68]。

最后,深度学习使用的深层次网络中,神经元本身的连接数量也十分可观。在20世纪80年代出现的高度连接神经网络中,每个神经元可能与其他神经元产生150个连接。到了撰写本书的时候,最先进的神经网络中的神经元,已经和猫的大脑神经元连接数相当了。而人类的神经元平均拥有10 000个连接。

现在,深度神经网络拥有更多的网络层次结构、更多的神经元以及每个神经元拥有更多的连接,为了训练这样的网络学习,就需要比反向传播算法更先进的技术。杰夫·辛顿(Geoff Hinton)于2006年提出了这一观点,他是一位英国出生的加拿大研究员,比任何人都认同深度学习的改革。不管怎么说,辛顿是个了不起的人,他也是20世纪80年代PDP运动的领导人之一,同样也是反向传播算法的创始人之一。我个人认为他最了不起的一点在于,当PDP研究失宠后,辛顿并没有灰心丧气,而是坚持下来,并以深度学习的形式将神经网络带入另一个辉煌,他也因此受到了国际社会的赞誉。(很凑巧,辛顿正好是乔治·布尔的曾孙,我们在第三章里提到过布尔,他是现代逻辑的奠基人之一。不过,辛顿声称,或许这是他和逻辑派传统人工智能唯一的关联。)

更深的网络层级、更庞大的神经元结构、更广泛的神经元连接,是神经网络深度学习模式成功的一个关键因素。而辛顿和其他人在关于训练神经网络方面提供的新技术是另一个关键因素。但深度学习真正获得成功,还需要另外两个因素:数据和计算能力。

数据对机器学习的重要性可以用ImageNet项目的故事来说明[69]。ImageNet来自华裔研究员李飞飞的创意。1976年她出生于北京,80年代随父母移居美国,学习物理和电气工程。2009年,她进入了斯坦福大学,并在2013年至2018年间带领斯坦福大学人工智能实验室。李飞飞认为,机器学习需要大型的、维护良好的数据集,这可以为新系统的训练、测试和比较提供一个通用的基线,也将使整个深度学习研究界受益匪浅。因此,她启动了ImageNet项目。

ImageNet是一个大型的在线图像档案库,在撰写本书时,已经拥有大约1400万张图片。ImageNet的图片仅仅是照片而已,你可以下载为普通的数码格式,比如JPEG。不过,最重要的是,这些图片被详细分为22 000种不同的类别,使用一个名为“词汇网”[70]的在线语义词库标注。词汇网的单词被仔细分类过,例如可以识别具有相同或者相反含义的词汇等等。现在查看ImageNet的图片,我们可以看到它包含1032张标记为“火山口”的图片,122张标记为“飞盘”的图片,诸如此类。我们需要了解的一个重点是,数据库中特定类别的图像并非人工分类的,也不是因为看上去很相似所以列入分类——恰恰相反,举个例子,飞盘类的图片唯一的共同点是它包含飞盘。其中某些图像是一个人朝另一个人扔飞盘,也有图像是静止在桌面上的飞盘,没有任何人影。每张图片都不一样——除了它们都包含飞盘这个要素。

2012年是技术图像分类发展的最佳时机,当时杰夫·辛顿和他的两位同事亚历克斯·克里泽夫斯基(Alex Krizhevsky)、伊利亚·苏茨科弗(Ilya Sutskever)一起展示了名为AlexNet的神经网络系统,它在国际图像识别比赛中有着亮眼的表现[71]。

使深度学习发挥作用的最后一个要素是计算机的处理能力。训练一个深度神经网络需要大量的计算机处理时间,训练本身要做的工作并不太复杂,但是数量庞大。21世纪初开始流行的一种新型计算机处理器被证明是计算繁重任务的理想选择。图形处理单元(GPU)最初是为了处理计算机图形问题而开发的,例如为电脑游戏中提供高质量的动画。但这些芯片被证明是训练深度神经网络的完美工具。现在,每一个名副其实的深度学习实验室里都有GPU群——然而,不管它们拥有多少GPU,实验室的工作人员都会抱怨还不够。

毋庸置疑,深度学习和神经网络取得了成功,但它们也存在一些众所周知的缺点。

首先,它们所体现的智慧是不透明的。神经网络所获取的知识体现在神经元之间相互连接的权重值上,到目前为止,我们还没有办法解析这些知识。一个深度学习的程序可以告诉你在X光扫描图片中哪里有肿瘤,但它无法证明它的诊断是正确无误的。一个拒绝为客户提供银行贷款的深度学习程序无法告诉你它拒绝客户的原因。在第三章中,我们看到类似MYCIN这样的专家系统能够对系统结论做出粗略解释——专家系统得出结论的推理依据是可以追溯的,但神经网络无法做到这一点。目前有许多研究人员正在致力于解决这个问题,但是,到现在为止,我们还不知道如何解释和表达神经网络所包含的知识。

另一个关键问题是神经网络的稳定性,这是个不易察觉但非常重要的问题。例如,如果对图像进行细微的修正,对人类而言,这种修正完全不会影响图像识别,但会导致神经网络错误地将其分类,如图17所示[72]。图a是熊猫的原始图像,图b是经过修改的。我想你会认为这两张图没什么差别,而且你肯定会认同它们都是熊猫图片这个结论。可是神经网络能够正确地将图a分类为熊猫,但对图b,它则错误地将其分类为长臂猿。为了解决这类问题而进行的研究被称为对抗性机器学习——这个术语源自一个观点,即有对手故意通过修改图片参数的方式来试图蒙骗程序。

图17 熊猫还是长臂猿?

神经网络可以正确地将图像a分类为熊猫。然而,以人类无法察觉的方式调整过图像以后,同一个神经网络会错误地将图像b分类为长臂猿。

图像分类程序认错了动物,倒不是什么要紧的事情,但对抗性机器学习已经昭示了一些令人惶恐的案例。例如,事实证明,同样的改图方式可以影响程序对路标的识别,虽然人类肉眼看来没什么区别,但是在无人驾驶汽车中,神经网络就可能误读路标。所以,我们要在敏感的应用程序中使用深度学习算法,就需要详细了解这方面的问题。

深度思维

在本章最开始提到的深度思维公司的故事完美地代表了深度学习的兴起,这家公司由人工智能研究人员兼电脑游戏爱好者德米斯·哈萨比斯(Demis Hassabis)和他的校友,企业家穆斯塔法·苏莱曼(Mustafa Suleyman)于2010年创立,公司还有哈萨比斯在伦敦大学学院工作时认识的计算神经科学家谢恩·莱格(Shane Legg)加盟。

正如我们所知的,谷歌在2014年收购了深度思维公司,我还记得在媒体上看到这则新闻时,惊讶于深度思维是一家人工智能公司。显然,在收购的时候人工智能成为新的热点,这不足为奇,我惊讶的是在英国竟然有一家我没有听说过的人工智能公司,价值4亿英镑,这真的让我困惑不已。和别人一样,我立马访问了深度思维的网站,但坦白地说,这并没有为我解惑。公司的技术、产品和服务都没有任何详细的说明。然而,它倒是提供了一个有趣的话题:深度思维公司公开宣称其任务是解决智能问题。我已经提到过,人工智能在过去60年里命运多舛,这让我对任何雄心勃勃预测人工智能进步的消息保持警惕:你可以想象,看到一家刚刚被科技巨头收购的小公司竟然发表如此大胆的声明,让我多么吃惊。

不过网站上没有提供更多细节,我当时也没能找到更了解它的人。人工智能界的同行大多对这个声明持怀疑态度,可能也带有一点职业嫉妒的色彩。直到2014年末,我碰巧遇见了一位同事南多·德·雷弗斯塔(Nando de Freitas),才打听到更多关于深度思维的消息。南多是深度学习领域世界级先驱之一,当时他是牛津大学的教授,是我的同事(后来他离开学校,去了深度思维工作)。他正好和学生们参加一个研讨会,腋下夹着一堆科学论文。显然他在为某件事情兴奋着,他告诉我:“伦敦有人训练出了一个程序,可以从头开始玩雅达利游戏。”

我不得不说,这有什么好兴奋的?可以玩电子游戏的程序又不是什么新鲜事。这种程度的挑战我们可能会布置给本科生作为毕业项目——我就是这么轻蔑地告诉南多的。他很耐心地给我详细解释,我们确实已经进入了人工智能的新时代。

南多提到的雅达利游戏系统基于早期的雅达利2600系列游戏机,那是1980年前后的产品,是最早获得成功的视频电子游戏平台之一:它支持210×160像素网格的大分辨率视频,支持128位颜色。用户通过一个带单独按钮的操作杆进行操作,游戏机使用插卡式游戏卡带,深度思维用的游戏卡带一共有49个游戏。他们对人工智能的描述如下[73]:

我们的目标是构建一个单一的神经网络游戏智能体,它能够学习玩尽可能多的游戏。神经网络没有提供任何特定游戏的信息或者额外加入的视觉要素,也不了解游戏机的内部状态。它只能从显示屏所反馈的东西进行学习(即游戏分数),以及弄清楚到底该怎么操作游戏——就像人类玩家一样。

为了理解深度思维成就的意义,了解他们的程序到底做了什么以及没做什么,这一点非常重要。或许最重要的一点是,程序对自己正在玩的游戏一无所知。如果我们试图用第三章中提到的基于知识的人工智能来构建一个雅达利游戏程序,首先会考虑从雅达利游戏机中提取的专家系统知识,并尝试使用规则或其他一些表示知识的方案对其进行编码(如果你想试试的话,祝你好运)。但是深度思维的程序根本没有任何关于游戏的知识,程序得到的唯一信息是出现在游戏机屏幕上的图像(以210×160彩色像素网格的形式)和游戏的当前分数。仅仅如此,这个程序压根没有其他的信息可以参考。这里要特别提出来讲一下,程序没有得到诸如“对象A在位置(x, y)上”之类的信息——任何类似的信息都需要程序从原始的视频数据中自己提取。

程序运行的结果简直令人惊讶[74],程序通过强化学习自学玩游戏:反复玩同一个游戏,在每个游戏中进行实验并获得反馈,并学习哪些行为会得到奖励,而哪些不会。雅达利游戏程序学会了游戏卡带中的29个游戏,表现出高于人类玩家平均水准的能力。在某些游戏里面,它甚至达到了超人的水准。