1952年仲夏的一个夜晚,已经凌晨两点钟了,我和我的合作者阿瑟·塞缪尔(Arthur Samuel)仍在建立模型。我们是受雇来做这项工作的。
我们的工作场地是一间有很多笨重大柜子的房间。这些柜子比冰箱还大,大部分装满了发光的真空管。其中一个柜子里装着发光的阴极射线管阵列,它们就像一个个小的电视屏幕,显示着一行行的点。还有一个柜子上配有一块很大的控制板,上面布满了可拨动的开关和小小的橙黄色二极管指示灯。所有的这些柜子都用很粗的电缆相互连接,这些电缆又都嵌在活动地板下的电缆槽中。房间里到处都是大量精心设计的电路,它们是IBM公司研发的早期纯电子数字计算机的原型。在早期的使用手册中,它被称作防务计算器(Defense Calculator)。与同时代的科幻电影中的计算机相比,这个大块头要引人注目得多。
对于我和合作伙伴塞缪尔来说,计算机拓宽了我们探索模型的可能性,其中有很多情况无法依靠铅笔、纸和计算器完成。在可编程计算机出现之前的科学模型,几乎都很简单,因为那时科学家无法分析和探索复杂的模型。一些重要的物理定律都可由几个基本的方程表达出来,如牛顿方程和麦克斯韦方程组,这一事实导致人们更注重追求简单性。可编程计算机则开辟出一种新的可能性,因为它可以高速执行长指令序列,能够在短时间内探索以往无法比拟的复杂模型。这值得庆贺,但也带来了一个问题:你可能会太着迷于细节,以至于完全丧失发现重要原理的可能性。虽然存在这个问题,但可编程计算机带来的机会仍然令人着迷。
由于我和塞缪尔都直接参与了这台计算机的设计,所以我们控制这个电子巨物时得心应手。尽管防务计算器个头很大,但它只能存储几千个数字。它的运行速度虽然达不到今天的水平,但在当时已经算相当快了。它能以每秒10万条指令的速度执行指令序列。更重要的是,在计算过程中,条件指令支持根据计算结果在一定条件下改变执行顺序,并且不需要费时的人工干预。这些程序以及我们的模型,可以在程序执行时修改它们的计算,甚至修改定义计算过程的指令。这就是能对自身进行修改的程序吗?!这个想法令人兴奋,马上就会让我们想到自我复制、自学习以及自适应的种种愿景。我们当时觉得要慎重对待这些可能。
能够马上亲眼看到我们所建立的模型的各种结果,确实是件令人鼓舞的事。对于传统模型,即那些由一组方程定义的模型,人们通常需要花几个月甚至几年的时间进行大量研究,才能理解它们的行为。而由计算机程序实现的模型更像一份菜谱。计算机更像一个自动化的炉子,只要输入这个菜谱或说明书,它就会按照规定做出美味佳肴。用程序定义模型,再把它们输入到计算机中,我们就能依靠计算机来揭示模型定义中所隐含的行为。
计算机模型对建模者提出了严格的要求。用语言描述的模型,其结论经常是通过修辞得来的。对这样的模型,即使使用完全相同的论据也经常产生相互矛盾的结论,如全球变暖或物种保护方面的主张。那些传统的数学模型有时也是如此,甚至是最为严格的数学证明过程,有时也会跳过“显而易见”的步骤。但是计算机程序不可能跳过任何一步而继续向下执行。计算机要按照程序指定的序列执行每一条指令,一条指令的丢失或不正确就会导致整个程序的运行结果违背建模者的初衷。这样看来,计算机模型很像美国专利局早年间要求的可实现的机械模型,即无论专利模型描述是多么巧妙和令人信服,如果依照这个模型不能产生它所声称的结果,该专利申请就会被拒绝。同样,一个计算机模型既要有精确的描述——可以用程序设计语言来实现,又要能够实际运行。
下一节我会简单地回顾我和塞缪尔当时所做的建模工作,为说明模型与涌现研究之间的联系提供一些明显的例子。我们会进一步仔细考察三个人造模型:棋类游戏、数字和积木块。棋类游戏是古老而又最显而易见的例子,表明由简单的几条规则就可以衍生出大量复杂现象;数字表明了如何删除细节部分,抓住基本原理;积木块则给出了一种从简单构件直接产生复杂和涌现的方法。棋类游戏、数字、积木块所表达的概念正是本书的主要议题。
本章的最后一部分将重新回到计算机建模的话题上来,因为这正是将这些议题整合到涌现现象科学研究中的一种方法。在第4章和第5章,我将再次研究我和塞缪尔构建的这些模型,以便给这些基础议题提供一些可供实际使用的定义,这些定义反过来又能帮助我们构建一个普适框架。依托这个普适框架,我们可以观察那些展现涌现现象的各种各样的系统。
国际跳棋与神经网络
我和塞缪尔认为,如果能够充分利用防务计算器的种种潜在能力,我们就能够写出一些可以自适应的程序。这些程序能够通过学习来改变自身,就像前面提到的那样。用塞缪尔的话说就是,我们可以设计出一些程序,实现“只告诉计算机做什么,而不告知它怎么去做”这一目标。计算机模型现在已经很常见了,电子游戏只不过是其最典型的例子,但当时它们还只是处在发展初期。自学习程序可以通过不断收集经验数据来改变自身的运算流程。人们已经用了半个多世纪去研究这样的程序,但是到现在它们还是很少见,而且我们依然还没有什么理论和工具去从事这方面的研究。我写这本书的目的之一,就是阐述建立这种计算机自学习模型的困难之处。虽然自20世纪50年代以来,计算机的处理能力有了巨大的发展,但这些困难依然存在。
虽然我和塞缪尔在同一个房间,使用同一台机器工作,但我们俩脑海中的模型截然不同。塞缪尔想设计一种可以自己学会下国际跳棋,能与一系列对手比赛,并能从中提高自己技能的模型(Samuel, 1959)。当时我觉得塞缪尔的自学习国际跳棋程序很有趣,而且很具挑战性,但它太特殊,不容易体现基本原理。我真是大错特错!我稍后再讨论塞缪尔的发现,因为我们需要了解更多模型和建模过程,才能领会他的发现的重要性。现在完全可以说,塞缪尔的研究成果直接推动了人们对他命名的领域——机器学习的基本认识以及该领域的发展。他的研究具有相当的深度,继他之后这一领域几乎没有进一步的发展,或者说直到现在还没有人超越他的研究成果。
时任美国国防部高级研究计划局主任的约瑟夫·利克莱德(J.C.R. Licklider),就心理学家唐纳德·赫布(Donald Hebb)于1949年提出的“学习行为的神经心理学理论”所做的演讲,使我深受启发。赫布的目标是建立一套以中枢神经系统中神经细胞的相互作用为基础的行为理论。他提出了改变神经网络中神经细胞间连接强度的机制,这种机制使得产生成功行为的细胞连接的强度得到加强。因为我读过神经学家沃伦·麦卡洛克(Warren McCulloch)和数学家沃尔特·皮茨(Walter Pitts)(Kleene, 1951),以及尼古拉斯·拉舍夫斯基(Nicolas Rashevsky)关于神经网络逻辑的论文,听了利克莱德的演讲,我的第一反应就是“我必须试试”。我的老板纳撒尼尔·罗切斯特(Nathaniel Rochester)同意了,因此我们就按照利克莱德描述的机制建立了少数几个模型。
本书后面会详细讨论神经网络,现在只做个简单的介绍。中枢神经系统由神经元细胞组成。当一个神经元被充分刺激时,它会被激发(fire),产生一个电脉冲,这个电脉冲会沿着神经元延伸出的轴突扩散(见图5-1)。轴突会与许多其他神经元相接触,接触的部分被称为神经元的突触。当一个脉冲到达突触时,会刺激与它相接触的神经元。如果在很短的时间间隔内,有足够的脉冲通过突触刺激一个神经元的表面,这个神经元就会被激发。如果人们沿着中枢神经系统中神经元之间的连接把神经元依次连起来,就会发现这个连接将形成一个回路,最后将回到初始神经元。也就是说,位于这种连接初始位置的神经元产生了一系列脉冲,而这一系列脉冲最后会返回并且再次激发该神经元。这种反馈使得脉冲在这个连接回路中振荡——形成一种“环”,而不会进一步激发这个连接回路外的其他神经元。因此,中枢神经系统会由于这些活跃的、大量循环的脉冲而处于持续兴奋状态,即使在熟睡和无意识的状态下也不例外。
运用这些基本的事实,罗切斯特构建了一个模型,模拟一个含有69个神经元的神经网络模型,并跟踪由这些神经元产生的每一个脉冲。我则建立了一个含有512个神经元的神经网络模型,这个模型仅用到了那些受到刺激的神经元的激发频率。我经常忙到深夜,其中一个原因就是我想方设法要把这512个神经元都塞到当时那台计算机有限的存储空间中。我骄傲地给这个模型取了个名字,叫构思者(Conceptor)。罗切斯特和我的模型都是基于复杂、相互连接成回路的神经元而设计的,目的都是验证赫布最初的推测:在一系列重复刺激下,神经元间的连接会加强,会形成神经元组。在中枢神经系统中,这些组被称为细胞集群(cell assemblies),它们对来自环境的不同刺激做出反应,并成为这些刺激的象征。接下来,这些细胞集群还可以作为积木块,描述对环境刺激做出的更复杂反应的行为。我的模型可以演示细胞集群的形成,却很难描述环形神经网络的情况。
在这里,我们又一次遇到了这个历时半个多世纪的科学断层:赫布的理论仍然是神经心理学的理论,尽管环形神经网络是这个理论成立的基石,但我们实际上并不十分了解它的具体行为。由于“前馈”神经网络避开了这些内部循环,因此它与赫布理论看起来毫不相干。