熟悉的积木块
任何人都能够很轻松地把不熟悉的场景加以分解,从而得到熟悉的物体——树、建筑物、汽车、其他人、特定动物等。到目前为止,计算机还无法模拟这种把复杂现实场景迅速分解成熟悉的积木块的能力。这项任务太复杂了,依靠蛮力是不能实现的。尽管计算机在速度上有无可比拟的优势,但我们至今还没有制作出较为合理的计算机模型来模拟人类的这个解析过程。缺乏这种模型肯定和我们对环形神经网络的活动缺乏足够的认识有关,所以这种神秘性就延伸到了一个更为广阔的领域。
不论这种解析过程具体是怎样进行的,我们肯定能用少量的积木块来构建或重建复杂的场景和配置。如果想一想看见物体的过程,我们就会理解为积木块赋予特征的重要性。外部场景在我们眼睛里上百万个视觉细胞上的真正投影没有两次是完全一样的,但每个场景总会同以前出现过的某些场景部分相同。从小到大,我们识别和对这些共同元素(积木块)进行分类的能力越来越强。而且,由于我们一次又一次地看到这些积木块,所以才能轻易地抓住它们的本质,了解到相关的细节。在更高层次上,同样的理论也可以用来解释更为复杂的表述现象:人们将几千个被称为单词的积木块串在一起,以此来表述各种各样的事物和观点。正是因为这种识别和利用积木块的能力,我们才可以认识并理解甚至预测周围不断变化的世界。
发现积木块是一项永无止境的任务。尽管我们可以掌握的积木块的数量,要比这些积木块可构成的构造物数量少得多,但我们总可以设法获得更多的积木块。其中的一项技巧就是简单精细地分类,从较一般的分类到更具体的分类。小孩子可能分不清牛和马,将它们都称为“像马的动物”,但有经验的农民却能辨别出不同种类的牛,并且知道其中的某一头叫作贝齐的奶牛在挤奶时会变得躁动不安。有经验的露营者会通过观察新翻乱的叶子或移动了位置的鹅卵石来辨别动物的踪迹,从而获得新的积木块,或在北极徒步过程中通过辨别不同类型的雪,来获得新的积木块。有时,积木块会显著增加。在大多数的人类活动中,重要的新积木块的发现往往会引发一场“革命”或开辟一个全新的领域。美术中的透视概念和科学中的引力概念就是两个很好的例子。
日积月累,人们越来越清楚应该抛弃什么细节。我们甄别出那些对理解和处理某些情况来说无关紧要的事物,并相应地完善积木块。另外,我们还学会了利用规则或定律来推演积木块随着时间的推移会如何改变或重组。也就是说,我们可以通过建模让模型帮助人类预测未来。我们甚至会改变一些设置或参数,重新推算,以便观察可能发生的情况和避免“跌落悬崖”。显而易见,人们在复杂的棋类游戏中使用了多种模型,不过模型在其他情况下也都发挥着作用,比如日常生活中由于道路施工必须改换回家的路线,或者复杂的科学假说的产生过程。
到这里,我们对建模过程和模型的普遍性已经有了更深入的理解。通过删除细节得到积木块,并且遵循限制条件将积木块进行组合,是获得建模过程的普适框架的关键因素。我们接下来将更深入地研究它们。
抽象且具体的计算机模型
计算机模型把棋类游戏、数字和积木块表现的主题很好地结合在一起。为了在计算机上实现一个模型,我们首先要确定这个模型主要的组件,即模型的积木块,接着在计算机中实现这些组件,方法是编写被称作子程序的一系列指令集合。最后,在计算机中将这些子程序根据相互作用的方式组合起来,产生一个完整的程序,新产生的程序定义了这个模型。这样,决定模型行为的那些规则就在计算机上实现了。
计算机模型同时具有抽象和具体两个特性。这些模型的定义是抽象的,同数学模型一样,是用一些数字、数字之间的联系以及数字随时间的变化来定义的。同时,这些数字被确切地“写进”了计算机的寄存器,而不只是用符号来表现。此外,这些数字能够完全按照计算机的指令明确地进行操作,就像在磨坊中磨制面粉一样。我们能得到这些操作的具体记录,这些记录与详细的实验记录十分类似。这样一来,计算机模型就同时具备了理论和实验两大特性。当然,这种抽象和具体的结合既有优点,也有缺点。
起初,人们没想到各种各样具体的事物和过程居然能通过数字和数字操作表示出来。计算机模型和数学模型都具有这种十分神秘的能力。例如,我们可以利用数字技术来模拟飞机飞行,比如某架飞机正在芝加哥上空飞行,并且给它设定一种特定的天气状况,比如在雷暴雨中飞行。这种类型的数字模拟已经十分普遍,甚至在家用计算机上就能实现飞行模拟。我们还可以进一步制造出成熟的工业级别的飞行模拟器。即使是那些有经验的飞行员,在模拟器设定的紧急情况下“飞行”时,也会有身临其境、异常紧张的感觉。这是如何实现的呢?我们将在本书后面直面并解决这个神秘的问题。