上一节在“人的思想”这个题目下再次探讨了思维活动的微观结构与过程,重点仍然是介绍算法框架理论。有读者可能会说,这个理论依旧是相当含糊的,它能有什么用处呢?笔者的回答是:一个理论,即使在细节上有些含糊不清,它的用处也可以很大。这是因为,据之进行的后续推演,并不涉及这些细节;就好像数学演算中的工具变量那样,这些细节(主要是指令清单)在我们的推理中被约掉了。请记住,就眼下来说,算法理论其实并不进行通常所谓的“计算”!
一个具有上述头脑的当事人,现在将在这个世界中接收信息、进行思考并展开行动——这就是本节的主题。由于个人首先是一个肉体上的存在,他只能处于广袤空间中的某个地点,他也就只能接收那个地点及其周围有限范围内的信息;又由于个人的感觉器官的功能有限,这个范围也就是相当狭小的。现代通信技术固然可以帮助个人接收来自遥远地方的信息,但是,距离与通信成本的制约因素仍然是相当显著的,其显著程度可能超过了一般人的印象。强调一下,通信技术的进步并不改变人脑的计算速度。
信息的获得可以是被动的,也可以是主动的。接收到信息之后,个人就要开始对之进行处理与计算。假如个人的头脑中事先储备了相应的知识,计算就会比较容易;可是,反过来,倘若知识存量为零,当事人将如何是好呢?这是算法进路的社会科学所要面对的一个基本问题。对此,《算法》第4.2 节已经提供了答案,这就是,我们可以简单地认为,计算首先是以随机的方式展开的。指令与信息毫无规则地进行结合,甚至连“抽签”这个人工指令也是随机地(而不是刻意地)进行运用的。我们称此为“纯粹简单计算”。这是一个重要的概念。通过与之进行对比,就可以更好地理解知识存量指导下的计算的性质。这是一场事先没有约定的“遭遇战”。在这种“遭遇”发生之前,当事人对于指令的性能以及所要加工的信息的性质毫无所知,所以计算的展开不可能是适当的,甚至连指令格式的使用都不可能正确。可以设想一下,在人类历史的初期,必定由此产生了大量的计算结果,在这些结果中,必定有相当高比例的结果是“错误”。这些错误结果形成了记忆,给当事人做出了提示,叫他下一次不要再这样来计算;另有一些结果并不是错误,当事人将会继续加工它们。为了便利起见,任何计算结果,我们都可以称作“知识”。“知识”有广义和狭义之分,我们可以把传统的知识概念作为狭义的概念来看待。
“纯粹简单计算”是一种理论上的想象。借助这个假想的情况,我们可以理解通常所谓的“知识”(也即狭义的“知识”)是怎样在人脑中逐渐形成的,也就是知识将如何在人出生后“内生地”形成。如上所述,我们同意“人脑中先天地预存了某些程式”的看法,然而,先天预存的程式是不敷使用的,它远远不能够独立引导当事人做出成功的决策,只要我们对于任何实际问题稍作分析,就都可以得出这个结论。所以,我们必须单独考察思想系统的发育过程。最初,各个元计算都是完全独立而盲目地进行的,由于每个时刻只能进行一个计算,所以这些元计算之间只能按照时间顺序逐个地排列,这就形成了一个纵向的序列。这个序列能否称作一种程式呢?当然这是没有多大意义的。因为大脑具有记忆力,所以一些结果得到了保存,它们与原始信息混合在一起,又再次进入了随机过程,于是,这些结果就有可能得到进一步的深加工。可以设想,较早期的深加工所产生的结果,大部分仍然没有多少价值;然而,在较低的概率水平上,一些有意义的计算结果会被发现,并得到记录和重视。用来评价计算结果是否有意义的技术和标准(例如实用性、一致性等)也是作为一种知识而逐渐发展起来的。演变与发展的形式多种多样。凡是我们能够推测到的,很可能就是实际发生的。所以,在我们的方法之下,对于“知识发展”的理解和解释都是相对容易的。关键在于我们建立了“最小单位思维活动”(元计算)的概念。解释发展,就是解释为什么时间上较晚的计算结果一般会优于时间上较早的结果。这个解释就是,因为较晚的计算所加工的是较早计算的结果,是在较早计算的基础上进行的,元计算的计算能力没有改变,但它所加工的数据的内容变化了,质量改进了。这就好比爬梯子,每向上攀登一步,所登上去的仍然只是一个格子,但格子的位置改变了。用牛顿的话来说,我们之所以站得高,是因为我们站在前人的肩膀上。这是知识发展的一个最为基本的道理——后人站得高与前人站得低是同一回事。只要我们理解了最初的计算是如何地初级、简陋和无助,也就自然地理解了发展。
程式是知识的核心形态,因此这里要穿插说明一下它是如何形成的。初学者很容易迷惑于为什么元计算会在不同的指令之间自动地跳转,自动地运行,以为这里有什么神秘的机制存在;其实,这个说明可以是十分简单的。个人的身心结构可以在时间上延续,因此,有了元计算的概念之后,个人就要在不同时刻进行不同的计算,这是很自然的事情。时间就是这种自然形成的“程式”的自动编辑器。对程式的解释的核心是要解释为什么两个元计算之间具有必然的联系。如上所述,元计算最初只是在客观上被动地排列成一个序列而已,内部并无必然的联系。随机发生的再计算产生了有意义的“结果”,这种“结果”的内涵可以是多种多样的;它可以是某种信息,某个决策,也可能随机地包括关于指令如何进行排列的知识;这是容易理解的。这种知识本身可以告诉当事人,在什么样的情况下,先计算什么,再计算什么;总之,它是关于计算的时间安排的。当事人的记忆力是可以记忆任何数据的,当然也可以记忆这种关于时间安排的知识。当这种数据被调用和读取时,它就“告诉”了当事人如何来做。这就好比打开了诸葛亮盛装妙计的锦囊,当事人照做就是了。这样的步骤不断重复,链条不断延长,程式于是就一步步建立和发展起来了。除了记忆力,这里不需要任何神秘的“机制”存在;即使大脑里有某个神秘的机制,我们也不需要它。程式发展得越来越多,加上先天的“硬软件”的协同作用,计算将变得越来越有秩序性和方向感,个人的生存和发展也就越来越有保障。(www.xing528.com)
程式的发展意味着数据之间联系的加强,而程式抽象程度的提高则意味着数据可以被以相同的方式批量化地进行处理,这就节约了需要存储的程式及其相关中间数据的数量,使得知识的形态变得简洁而高效——而计算结果的品质同时也可能取得了进步。这就给我们提出了一个课题,即知识的数量(或者数据量)与质量之间的关系问题。首先,知识的发展可以采取非常简单和“傻瓜”的线性方式,即主要进行数据的存储和积累。比较典型的例子是语言文字的发展,发明一个字就记住一个字,学一句话就记住一句话。某个字不认识,打开字典查询一下就可以了。字典里怎么规定就怎么来,没有多少联想和发挥的余地。许多知识都可以这样来发展,即人们仅仅积累一个个具体的经验(也即在各个具体情况下具体的算法、计算结果和决策),然后再在类似的情况下照猫画虎般地运用这些经验。这种方法会导致数据存量近乎直线地增长。另一方面,由于人具有抽象和推理的能力,他会在经验中寻找联系,进行抽象,以图实现计算的批量化。实际上,在上述方法的运用中,归纳与抽象也是难以完全避免的,否则就无法回答诸如“什么叫做类似”这样的问题。这个过程是我们所熟知的,但现在可以把它转入算法的分析轨道。这里尤其要强调一下,抽象化和批量化的过程既可以理解为对记忆空间的节约,也可以理解为对运用该等知识所进行的临时计算中的计算量的节约。要是没有这些经济性,抽象(以及为此所进行的深思)就是不必要的,人们就可以任由数据量无限度地进行线性的扩张,知识就会泛滥到让使用者无法有效地进行存储、搜索和学习的地步。这种视角让我们看到数据量的极端重要性:理论的意义之一就在于减少数据量,在数量上无法被记录、交流和传承的知识难以成其为“知识”。
但是,抽象化是有限度的。这就好比我们压缩一包行李,行李的“收缩率”会呈现出边际性的递减趋势。我们固然不能说“收缩率”存在某个极限,但是,这种递减趋势一定会存在。这是异质性的算法世界中必然会发生的现象。由于经济条件的制约,提炼知识的人不一定要寻求某种最大的“收缩率”,而是只把数据提炼到可接受的程度之内。他将在数据的扩张与提炼之间寻求一定的平衡。如此一来,隶属于任何个人或组织的知识库都将会呈现出这样一种状态,即数据与程式是相混合的,其规模既不像没有任何提炼的情形那样大,也不会简单到只剩一句话或者一个公式,而是介于两者之间。它是线性与结构的混合。于是,对于这种知识的学习者来说,他既要对特定的数据进行死记硬背,又要理解和掌握另外的一些关系,以便进行推理。
这是一个重大的原理。假如知识只是原始数据,那么它根本就无法再利用;假如只是一个公式,它也就没有多少重要性可言了——因为对它的复制与学习就会变得很容易。鉴于唯理论者通常都把数学公式推崇为他们心目中的知识的理想模型,我们不妨再以此为例,多说几句。承接5.2.9 节,代数的发展其实主要只是基于自然数的简单规则,但是,它通过引入众多的实际问题而具有了更为丰富的经验内容,于是,许多新的数学问题就在这种混合性的基础上重新提出来了。“计算规则”(例如除法规则)是什么呢?其实只是关于如何节约计算时间和提高计算效率的技巧,因而相对于相关基本计算的定义来说,它近似于同义反复。它虽然没有引入新的前提,但却需要学习者进行死记硬背。因为,假如不死记硬背,学习者不可能在具体计算时临时把这些规则都推导出来(即使我们可以承认,只要给予足够的时间,学习者总是能够自行推导出这些规则来)。特定的题型及其特定的解法也是需要进行记忆和积累的,这是数学研习者们往往重视不够的。研习者们先建立记忆存量,到了具体解题的时候,就像查字典一样,在记忆库中搜索类似的题型,回忆它的解答方法;再将之与所要解答的问题相比较,辅之以适当的推导,从而得出答案。一个人对题型的积累越多,他的解题能力就越强。反之,凡是不重视记忆和积累的,由于过度自信而以为他的聪明头脑总是能够临时想出解题方法的学生,他的数学成绩往往并不怎么好。
某些具体或极端问题的解答,常常能够给数学家带来灵感,从而使他们开辟出一个新的领域。例如,“极限”概念的建立,最终导致了微积分。这就好比通过一扇小门,进入了一个大房间之中。这种情况说明,以演绎推理作为主要手段的数学,其推理进行得多么艰难。演绎推理也是具有主观性的,这种主观性就是指把已有的命题与其他什么样的命题相结合;结合的命题不同,知识发展的方向就不同。数学越发展到高深的层次,其论域也就越狭小,这是数学研习者们的一个共同感受。实际问题构造了一个环境,它作为唐突的闯入者,为数学发展提供了前提。这些前提往往并不是推理者们十分明确地意识到的,也不是他们可以予以全面而清晰地表述的。这些经验因素与所谓的“公理”一起,作为数学发展不证自明的基础。这些情况都表明,数学与常识思维并没有本质的差异,而只有技术的、细节的和程度上的区别。数学的基础并不是完全牢靠的,其内容也不是完全准确无误的,其发展则是持续性的。它经历了一个发展的历史,也将延续发展的未来。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。