1928 年, David Hilbert 提出了一个著名的问题:是否存在一系列有限的步骤,它能判定任意一个给定的数学命题的真假?这个问题就叫做 Entscheidungsproblem ,德语“判定性问题”的意思。大家普遍认为,这样的一套步骤是不存在的,也就是说我们没有一种判断一个数学命题是否为真的通用方法。为了证明这一点,真正的难题是将问题形式化:什么叫做“一系列有限的步骤”?当然,现在大家知道,这里所说的“有限的步骤”指的就是由条件语句、循环语句等元素搭建而成的一个机械过程,也就是我们常说的“算法”。不过,在没有计算机的时代,人们只能模模糊糊地体会“一个机械过程”的意思。 1936 年,Alan Turing 在著名的论文《On computable numbers, with an application to the Entscheidungsproblem》中提出了一种假想的机器,第一次给了“机械过程”一个确凿的含义。
Turing 提出的机器非常简单。假设有一张无穷向右延伸的纸条,从左至右分成一个一个的小格子。每一个小格子里都可以填写一个字符(通常是单个数字或者字母)。纸条下方有一个用来标识“当前格子”的箭头,在机器运行过程中,箭头的位置会不断移动,颜色也会不断变化。不妨假设初始时所有格子都是空白,箭头的颜色是红色,并且指向左起第一个格子。为了让机器实现不同的功能,我们需要给它制定一大堆指令。每条指令都是由五个参数构成,格式非常单一,只能形如“如果当前箭头是红色,箭头所在格子写的是字符 A ,则把这个格子里的字符改为 B ,箭头变为绿色并且向右移动一格”,其中最后箭头的移动只能是“左移一格”、“右移一格”、“不动”中的一个。
没错,这意味着,或许一个人的语言、计算甚至学习能力,完全等价于一个 Turing 机,只不过这个 Turing 机的指令集可能异常庞大。1950 年, Turing 的另 一篇经典论文《Computing Machinery and Intelligence》中正式把人和机器放到了相同的高度:让一个真 人 C 先后与一台计算机 A 和另一个真人 B 进行聊天,但事先不告诉他 A 和 B 哪个是机器哪个是人;如果 C 无法通过聊天内容分辨出谁是机器谁是人,我们就认为计算机 A 具有了所谓的人工智能。这就是 Turing 测试。
计算机拥有智能?这岂不意味着计算机也能学习,也能思考,也拥有喜怒哀乐?人类似乎瞬间失去了不少优越感,于是不少科学家都旗帜鲜明地提出了反对意见。其中最为经典的恐怕要数美国哲学家 John Searle 在 1980 年提出的“中文屋子”思想实验了。把一个不懂汉语的老外关在一个屋子里,屋子里放有足够多的草稿纸和铅笔,以及一本汉语机器聊天程序的源代码。屋子外面则坐着一个地地道道的中国人。屋里屋外只能通过纸条传递信息。老外可以用人工模拟程序运行的方式,与屋外的人进行文字聊天,但这能说明老外就懂中文了吗?显然不能。每次讲到中文屋子时,我往往会换一种更具戏剧效果的说法。一群微软研究员在小屋子里研究代码研究了半天,最后某人指着草稿纸一角的某个数字一拍大腿说,哦,原来屋外的人传进来的是一段笑话!于是,研究员们派一个代表到屋子外面捧腹大笑——但是,显然这个研究员是在装笑,他完全不懂笑点在哪儿。这个例子非常有力地说明了,机器虽然能通过 Turing 测试,但它并不具有真正的智能。