第3章 你好,人工智能

字数:5690

前面已经讲过了硬件、软件和编程,接下来要进入更高级的编程主题:人工智能。对大多数人来讲,“人工智能”这个词听起来就是电影里的意象。比如电影《星际迷航:下一代》中栩栩如生的机器人“数据少校”,或者电影《2001太空漫游》中的哈尔9000,电影《她》中的人工智能系统萨曼莎,还有漫威系列漫画和电影中钢铁侠的管家贾维斯。但话说回来,有一件事情要记住:这些都是虚构的。遇到这些东西——尤其是自己特别想要得到的东西,人们就很容易将想象和现实混为一谈。许多人希望现实世界中能有人工智能的东西出现——他们多半就是想要一个能满足所有需求的机器人管家。(我承认,我在读大学的时候也常常跟同学深夜卧谈机器人管家的可行性和伦理考量。)有太多的人对于技术的期待,是极度希望好莱坞机器人的想象能够成真。脸书的马克·扎克伯格就曾开发过一个基于人工智能的家庭自动化系统,他将其命名为“贾维斯”。

我曾在纽约媒体实验室的一次年度研讨会上遇见过一个混淆人工智能的现实和想象的绝佳例证。那是一个适合成人的科学展览,当时我正在展示我做的一个人工智能模型。我有一张桌子,上面有一台显示器和一台笔记本电脑。离我大概一米远的地方,有一个艺术院校的本科生在演示他做的数据可视化作品。当人群散去时,我们闲了下来,于是开始聊天。

“你那个是什么项目?”他问。

“是一个人工智能工具,可以帮记者在竞选财务数据中快速高效地发现新的报道切入点。”我回答。

“哇,人工智能!”他说,“这是那种真正的人工智能吗?”

“那当然了。”我说。他这句话说得让我有点不高兴,我想:如果我没有做出一款真正能用的软件,怎么会花一整天在这儿摆摊演示呢?

他走到我的展示台边,开始近距离观察我那台连着显示器的笔记本电脑。“它是怎么工作的?”他问。我用了三句话向他解释我的作品(本书第11章中会做详细的解释)。他看起来很疑惑,而且有一点失望。

“哦!所以这并不是真正的人工智能?”他问道。

“不,这就是真正的人工智能,”我说,“而且做得相当好。你应该知道,人工智能不是做一个仿真人放在机器里面。那种东西是不存在的,从计算上讲是不可能实现的。”

他的脸一沉。“我还以为人工智能是那样子的。我听说过IBM的沃森系统,还听说过一台打败围棋冠军的计算机,还有自动驾驶汽车。我以为他们发明了真正的人工智能。”他看起来很沮丧。我意识到,他一直在看着我的笔记本电脑,因为他以为机器里面有东西——他以为的那种“真正的人工智能”。一想到我用几句话就打破了他的幻想,我感到很抱歉,于是赶紧把对话转移到一个比较中立的话题——即将上映的《星球大战》这部电影上,才让他高兴起来。

我一直忘不了那次谈话,因为它帮我记住了计算机科学家和普罗大众(包括从事技术工作的大学生)对人工智能的看法的不同。

广义人工智能是好莱坞式的人工智能,与好莱坞电影里那些有知觉的机器人(有些可能想要统治世界,有些可能不想,它们都属于这一类人工智能)、内置意识的计算机、永生,或者那些像人类一样“思考”的机器有关。狭义人工智能则不一样,它是一种用于预测的数学方法。很多人会将两者混为一谈,甚至那些专门搭建技术系统的人也时有混淆。我再强调一次:广义人工智能是人们想要的,是梦想;狭义人工智能是我们真正拥有的,是现实。

我们可以这样理解人工智能的概念:狭义人工智能能回答任何一个答案基于数字原理的问题,而且可以给出最有可能正确的答案。人工智能的一切都跟定量预测有关,它其实就是加强版的统计工具。

狭义人工智能的工作原理是分析一个已知的数据集,在数据集中识别数据模式和事件概率,并把这些数据模式和事件概率编写成计算模型。所谓计算模型,就是这样一种黑盒子——只需扔数据进去,它就能吐出答案。我们可以用人工智能编写的计算模型来处理新数据,从而得出可做预测的数值解。比如,纸面上这个潦草的字母有多大可能是“A”,或者一个已知客户有多大可能会准时还银行贷给他的按揭款,又或者在某局井字棋、跳棋或国际象棋里,怎么走下一步棋是最好的。机器学习、深度学习、神经网络和预测分析都是时下流行的狭义人工智能概念。现今每一个人工智能系统的工作原理都有合乎其逻辑的解释。理解它们的计算逻辑就能揭开人工智能的神秘面纱,就如拆开电脑可以了解硬件一样。

人工智能多用在游戏领域。这倒不是因为游戏和人工智能之间有什么内在联系,只是因为计算机科学家们对某些游戏和解谜游戏有偏好而已。比如国际象棋、围棋和双陆棋就都很受他们的欢迎。上维基百科网站随便翻看一些著名的风险投资家、科技巨头的介绍页面,你会发现,他们大部分人从小就是《龙与地下城》的游戏迷。

自从艾伦·图灵在一篇发表于1950年的论文中首次提出“图灵测试”的概念之后,计算机科学家们都用国际象棋作为机器“智能”的标志。半个世纪以来,人们一直在尝试制造一台可以打败人类棋手的机器。最终,IBM的“深蓝”在1997年击败了国际象棋冠军加里·卡斯帕罗夫。2017年,人工智能程序AlphaGo以3比0打败围棋世界冠军柯洁,它常常被当作例子,以佐证广义人工智能将在未来若干年内实现。但是,如果仔细观察AlphaGo的程序以及它的文化背景,就会发现事情绝非如此。

AlphaGo是由人类编写的、在硬件上运行的程序,就像你在第2章中写的“Hello,world”程序一样。AlphaGo的开发者在2016年发表于国际科学期刊《自然》的论文中解释了它的工作原理。[1]论文开篇就说道:“所有完美信息博弈都有一个最优值函数v*(s),它能从玩家落子的位置(或状态s)推断出在所有参与博弈的玩家都做到了完美表现的情况下,博弈的结果将是什么。要解决这些博弈游戏,可以通过在搜索树中递归调用最优值函数(搜索树含有大约bd个可能的行动序列,其中b表示博弈的宽度,即每一步棋的合法落子个数,d则表示博弈的深度,即博弈的步数长度)。”对于受过多年高水平数学训练的人来说,这段表述非常清晰,但大多数人还是希望能用更加浅显直白的语言来解释。

要理解AlphaGo的原理,可以从井字棋下手。大多数小孩子玩这个游戏都很厉害。如果你开局先落子,并且选择落在九宫格中间的那一格,通常最终要么是你赢,要么是和局。先落子的一方有先发优势:你有五步棋,对手有四步棋。很多小孩子就很直观地抓住了这个要领,每次跟容宠他的大人下井字棋,都要抢做先手。

要编写一个井字棋游戏程序让人类棋手玩,也相对简单。第一个井字棋程序诞生于1952年。你可以部署一个算法模型,即一组规则或步骤,让计算机在游戏中一直赢棋或和局。跟“Hello,world”一样,编写井字棋程序在基础计算机课程中也是常见的练习。

围棋跟井字棋一样,也是在网格上玩的游戏,但围棋要复杂得多。两位棋手分别执黑子或白子。初学者通常使用9路棋盘,即纵横各9条垂直交叉的平行线;高阶棋手则使用19路棋盘。执黑子的棋手先下,将棋子落在两根垂直线的交叉点上。执白子的棋手后下,将棋子落在其他交叉点。两位棋手轮流落子,目标是将对方的棋子围住,踢出棋盘外。

围棋已经有3 000年历史了。至少从1965年起,计算机科学家和围棋爱好者就一直在研究围棋的技巧模型。第一个计算机化的围棋程序诞生于1968年。现在,计算机科学界有一个子领域专门研究围棋。这个领域的名字毫不出奇,就叫计算机围棋。

多年来,计算机围棋棋手和研究者收集了大量棋谱。一份典型的计算机棋谱,大概是下面这个样子:

(;GM[1]

FF[4]

SZ[19]

PW[Sadavir]

WR[7d]

PB[tzbk]

BR[6d]

DT[2017-05-01]

PC[The KGS Go Server at http://www.gokgs.com/]

KM[0.50]

RE[B+Resign]

RU[Japanese]

CA[UTF-8]

ST[2]

AP[CGoban:3]

TM[300]

OT[3x30 byo-yomi]

;B[qd];W[dc];B[eq];W[pp];B[de];W[ce];B[dd];W[cd];B[ec];W[cc];B[df];W[cg];B[kc];W[pg];B[pj];W[oe];B[oc];W[qm];B[of];W[pf];B[pe];W[og];B[nf];W[ng];B[nj];W[lg];B[mf];W[lf];B[mg];W[mh];B[me];W[li];B[kh];W[lh];B[om];W[lk];B[qo];W[po];B[qn];W[pn];B[pm];W[ql];B[rq];W[qq];B[rm];W[rl];B[rn];W[rj];B[qr];W[pr];B[rr];W[mn];B[qi];W[rh];B[no];W[on];B[nn];W[nm];B[nl];W[mm];B[ol];W[mp];B[ml];W[ll];B[np];W[nq];B[mo];W[mq];B[lo];W[kn];B[ri];W[si];B[qj];W[qk];B[kq];W[kp];B[ko];W[jp];B[lp];W[lq];B[jq];W[jo];B[jn];W[in];B[lm];W[jm];B[ln];W[hq];B[qh];W[rg];B[nh];W[re];B[rd];W[qe];B[pd];W[le];B[md])

对人类来说,这些文本可能看起来像是天书。但它们是高度结构化的,非常方便机器处理。这种格式叫作SGF,即智能游戏格式(Smart Games Format)。这段文本表明了棋手的身份、棋局进行的地点、棋手每一步棋的落法和棋局的终局结果。

后面大块的文本区域记录了棋手的所有步数。棋盘上所有纵列从左到右、横行从上到下按顺序标上字母。在这局棋里,黑方(即B)先行,在列q和行d的交叉点落黑子,记为“;B[qd]”。后面的“;W[dc]”表示白方(即W)在列d和行c的交叉点落白子。后面每一步棋都以这种格式记录。这局棋的终局结果(RE)是“RE[B+Resign]”,表示黑方中途认输。

AlphaGo的设计者们积累了庞大的数据集,里面有3 000万个SGF棋谱文件。这个数据集不是随机生成的,而是由真人对弈产生的。只要有业余围棋爱好者或职业棋手在网上玩围棋游戏,他们落棋的数据就会被存储起来。要做一个围棋电子游戏不难,网上就有许多版本的教程和免费代码。所有电子游戏都可以保存游戏数据,这是毋庸置疑的。但是有些会保存,有些不会保存。有些游戏会将数据保存下来,在公司内部用作汇报材料。运营不同在线围棋游戏网站的人决定打包他们保存的游戏数据,在网上公开。最终,这些数据包被收集到一起,成了AlphaGo团队的3 000万局棋的数据。

程序员们就是用这3 000万局棋的数据,来“训练”这个被他们命名为“AlphaGo”的模型。要记住,专业的棋手会花大量时间在电脑上下围棋。这是他们的训练方式。因此,3 000万局棋的数据里面就有世界顶尖棋手的数据。人类投入了几百万个小时的劳动,才创建了这些训练数据。大部分关于AlphaGo的报道,却只关注它那神奇的算法,而不关注多年来在幕后默默无闻并且无偿创建训练数据的人。

程序员们让AlphaGo使用一种叫作“蒙特卡洛搜索”(Monte Carlo search)的方式,从3 000万局棋的数据中挑出一组比较可能赢棋的棋步。然后,他们让AlphaGo使用一种算法,从这组棋步中挑选下一个棋步。此外,他们还让AlphaGo使用另一种算法,计算出每一步可能的走棋导致赢棋的概率。这些计算的规模是人类的大脑无法想象的。围棋一共有10170 种可能的棋面。AlphaGo将大量计算方法层叠在一起,每一步棋都选择赢面最大的走法。设计师们就是这样,做出了这个打败世界顶尖围棋棋手的程序。

AlphaGo是不是很聪明?它的设计者肯定是很聪明的。他们解决了一个难度极高的数学题,几十年来,最聪明的人类都在试着解决这个问题。数学最了不起的一点,就是它可以让你看到这个世界运行的底层规律。许多事情的运行都是按照数学规律来的:水晶按规则的形状生长,蝉卵在地下休眠,直到土壤温度合适才出土,等等。AlphaGo得益于计算机硬件和软件的非凡发展,它是一个非凡的数学成就。AlphaGo的设计团队获得如此杰出的技术成就,值得称道。

但是,AlphaGo并不是一台智能机器。它没有意识。它只会做一件事:玩电脑游戏。它内置了来自业余围棋爱好者和世界顶尖棋手的3 000万局棋的数据。在某种程度上,它是极其愚蠢的。它利用蛮力和许多人的共同努力,来打败一个围棋高手。AlphaGo的程序及其底层的计算方法很有可能会被应用到其他涉及大规模数字处理的有用项目中。这样做对这个世界来说是好事。但是,并不是世界上的所有事情都跟计算有关。

一旦了解AlphaGo这种程序在数学和物理方面的本质,我们就会陷入对哲学和未来的思考。这是非常不同的知识领域。未来主义者希望历史进入人类与机器融为一体的新时代,而AlphaGo恰是他们眼中这一时代开始的标志。然而,特别想要某事发生,不代表这件事就真会发生。

在哲学领域,关于计算和意识之间的区别有许多有趣的问题可以探讨。很多人都熟悉“图灵测试”。虽然它的名称听起来像是一场为计算机设计的问答测试,只要计算机通过,就能被视作拥有智力,但事实并非如此。图灵在论文中提出了一个人类与机器对话的思想实验。他认为“机器能够思考吗”这个问题是无稽的,还说最好是用民意调查来回答这个问题。(图灵在数学方面有点自命不凡。跟当时许多数学家和现在少数数学家一样,在图灵眼里,数学要优越于其他知识学科。)因此,他没有给出答案,而是提出了一个游戏——“模仿游戏”。这个游戏需要三个人完成:一个男人(A)、一个女人(B)和一个询问人(C)。C单独待在一个屋子里,用打字机打印出问题,提交给A和B。图灵写道:

游戏的目标是询问人判断出外面的人哪个是男人,哪个是女人。询问人用标签X和Y表示那两个人。在游戏的最后,询问人要说出“X是A,Y是B”或者“X是B,Y是A”这样的结论。[2]

接着,图灵将询问人可以问的问题类别做了说明。其中有一道问题是头发的长度。A的目标是努力使询问人做出错误的假设,并且愿意说谎。B的任务是帮询问人获得答案,她可以告诉询问人她就是那个女人——但是A可以说谎,说同样的话。他们的回答是写下来的,这样就可以保证回答的声音和语气不会影响询问人的判断。图灵这样写道:

现在我们要问这样一个问题:“如果用一个机器人担当A的角色,会发生什么?”与跟两个人类玩这个游戏相比,询问人判断错误的频率会不会发生变化?这些问题取代了我们原先的问题——“机器能够思考吗?”

如果询问人无法分辨出某一个回答是来自人类还是机器,那么这台机器就可被视作“能够思考的”。多年来,这都是计算领域中的基础共识。有许多论文尝试对图灵在论文中提出的设想做出响应,也有人尝试制造一台能够按图灵的设想运行的机器。但是,图灵的问题规范跟我们如今对性别的理解有所出入。性别不再是二元的,而是一个连续体。头发的长度不再是男性或女性的标记,任何人都可以剪短发。图灵还写道:“第三位参与者(B)的任务是帮助询问人得到答案。”在这个游戏中,为什么非得要女性参与者来帮助询问人?这可太讨厌了。

图灵论证的哲学基础是不牢靠的。对此,最令人信服的反论证之一是哲学家约翰·塞尔提出的一个思想实验——中文房间(Chinese Room)。塞尔在1989年《纽约书评》杂志的一篇文章中总结道:

数字计算机是一种只会处理符号,但并不理解符号的含义或解释的设备。人类则不同,人类在思考时要做的事情远不止这些。笼统地讲,人脑中有带意义的想法、情感和精神内容。形式化的符号本身是不足以形成精神内容的,因为它们本质上就没有任何含义(或解释,或语义),除非在符号系统以外,由人类为它们赋予意义。

要明白这个道理,你可以设想这样一个场景:一个只会讲英语的人被锁在一个房间里,他随身有一本处理中文符号的规则手册。理论上,他可以通过图灵测试,让外面的人以为他懂中文,因为他能够使用中文符号回答中文问题。但事实上,他一个中文字都不懂,因为他根本不认识那些中文符号。但是,假如说运行这个“懂中文”的计算机程序(即规则手册)并不能使房中人懂得中文的含义,那么任何一台数字计算机也不可能获得理解力,因为计算机并没有比房中人多出什么能力。[3]

塞尔主张处理和运用符号不等于理解符号,这一点可体现在现今大热的语音交互技术上。语音接口在2017年非常时兴,但它们还远远不够智能。

亚马逊的Alexa和其他语音交互产品都不懂任何语言。它们只是按照预先编好的一系列规则,对用户的语音指令做出响应。“Alexa,播放《加州女孩》”就是一条计算机能够理解的口令。“Alexa”是一个触发词,它告诉计算机接下来有一条命令。“播放”也是一个触发词,它表示“在存储器里检索一个MP3文件,并且将‘播放’命令以及检索到的MP3文件名称一同发送给预先设置好的音频播放器”。程序还设定了让语音接口采集“播放”后面出现的内容,直到用户的语音出现停顿(表示语音命令结束)。“播放”后的内容会被放入一个变量中,比如“songname”(歌名)。然后,变量songname就对存储器进行检索,并且将结果传给音频播放器。这一切都是依照预编程序行事的,对人类不具任何威胁,人类也完全无须担心机器将崛起并接管世界。更何况,现在的计算机都无法准确地分辨出你所指的是凯蒂·佩里的《加州女孩》还是海滩男孩乐队的《加州女孩》。事实上,这个问题是以人气比拼的方式来解决的。在检索到的结果列表中,被Alexa用户播放的次数最多的那一首歌,就会被当作默认选项。这对凯蒂·佩里的粉丝来说是好事,对海滩男孩乐队的粉丝就未必了。

我希望你在阅读本书的过程中,将狭义人工智能和广义人工智能这两种不同的概念以及技术的局限性都熟记于心。在本书中,我们会一以贯之,待在现实的框架内:一个将不智能的计算机器叫作“智能机器”的世界。不过,我们也会探讨,我们对人工智能那种强劲、奇妙而又刺激的幻想如何在我们谈论计算机、数据和技术时把我们搞糊涂。另外,如果你碰到同事声称机器里有鬼的谬论,我希望你们不要像那位在科学展览上的艺术院校的学生那样对此感到失望。毕竟现实就是这样,计算机里面确实没有藏着小人,也没有什么仿真大脑。遇到这种情况,你可以为此难过,因为你一直梦想的东西是不可能实现的。你也可以为此激动,并且欣然接受人工设备(计算机)与真正的智能生物(人类)同步配合运行而给现实带来的可能性。我更喜欢后者。

[1] Silver et al., “Mastering the Game of Go with Deep Neural Networks and Tree Search,”484.

[2] Turing, “Computing Machinery and Intelligence.”

[3] Searle, “Artificial Intelligence and the Chinese Room.”


第2章 你好,世界第4章 你好,数据新闻学