上帝的程序(下)

请先阅读:上帝的程序(上)

而这些程序,是如何诞生的?

 

有神论者认为动物精妙的构造、绝妙的本能,完美地印证了上帝的存在。那么,基于这样的认知,这些程序被看作是上帝编写的。仁慈的上帝编写这样的程序是为了保证每一种动物在自然界的存活繁衍,因此,他将生存繁衍作为这段程序的总体目标,将自然环境等外部因素作为程序的限制条件,并将总体目标一步一步细化,最终设计出生物的每一个细节,正如前面所说,这是自顶向下的设计方法。

 

而无神论者会认为,这个特定的上帝、造物主不是别的,正是自然界。这精妙程序的形成,不是基于特别的设计,而是源于基因的交叉变异优胜劣汰。基因上的每一位,可以看作是一个最为本原的语句。这些语句是如此本原,它们能仅仅通过交叉变异优胜劣汰就组合成有意义的程序并完成强大的功能吗?这听上去像天方夜谭。交叉和变异看上去毫无理由:交叉是两个基因选择一个特定交点,交换遗传物质;变异是基因上某一位突然发生改变。这样没有理由的行为所缔造的后代真能比前代强吗?能。因为交叉变异的同时,还有优胜劣汰。交叉和变异可能使得后代弱过前代,也可能强过前代。但适应能力弱的后代都被淘汰了,在残酷的环境和有限的资源中,仅有适应能力强的后代能存活下来。也就是说,只有那些交叉变异得最为适应环境的后来挑选了出来。正是在这样残酷的挑选中,上帝的程序越来越精妙。从最为本原的语句一层一层组合上去,使得实现的功能越来越复杂,各个功能相互协作,最终实现一个强大的目标,这其实是自底向上的设计方法。

 

说到交叉变异,不得不说说遗传算法。美国密歇根大学心理系和计算机与电子工程系教授约翰·霍兰(John Holland)将自然界生物的交叉变异与优胜劣汰引入程序设计之中,从而形成了遗传算法。对于一个待解决的问题,遗传算法首先确定问题的编码方式以及适应度函数。编码方式其实是将问题的可能解变型成一条类似自然界的基因,而适应度函数则用于衡量当前基因适应环境(目标问题)的优劣程度。经过初始群体的选择,一代一代交叉变异优胜劣汰下去,算法中的基因朝着越来越优秀的方向进行迭代,最终找到满意的解。在优胜劣汰的作用下,交叉变异大放异彩,交叉是在现有基因基础上进行各种组合尝试,挑选出最为优秀的基因组合,而变异,则是独辟蹊径的创新,它制造出了前所未有的基因形式,增加了群体的多样性,为进化到一个死胡同的群体辟出前进的新方向。对于找到最优解的必然性,遗传算法有理论上的证明。但我更愿意从另一个角度去理解,遗传算法其实是对自然界生物进化的模拟,它其实通过计算机验证了这样一个事实:在自然界中,最为本原的基因组经过足够多代交叉变异的尝试、优胜劣汰的挑选之后,能过组合成精妙的生命程序,仿佛出自上帝之手。如果我们依旧将它称之为上帝的程序,这上帝不是别的,正是自然界。

 

上帝在每个生命个体的基因上编写绝妙的程序,这些程序,绝妙到了匪夷所思的程度。但更匪夷所思的是,个体基因上的程序,可能只是上帝程序的一个片断,上帝的整个程序,分布在整个群体的动物身上。在这样的群体当中,每只动物执行一段特定的程序,所有程序共同执行,相互通信,相互协作,结果超乎想象。这方面最具代表性的例子是蚁群,单只蚂蚁弱小而低能,只能执行简单的工作,一只离群的蚂蚁只能存活数天,因为其基因中的程序,还没强大到让一只弱小的蚂蚁自食其力的程度,但是在简单信息素的交流下,让每只弱小的蚂蚁都各司其职:工蚁生产劳动、兵蚁守卫家园、蚁后繁衍后代……整个蚁群,却产生了强大的智能。比如蚂蚁所筑起的蚁丘,就是建筑上的奇迹,简直就是一座精妙的蚂蚁城市,与蚂蚁的建筑本领相比,人类的建筑水平显得相当逊色。蚁群何以产生如此惊人的智能?科学家对此进行过大量的研究,下面给出一个最为简单也最好解释的例子:一只蚂蚁找到食物后返回蚁穴,由于地面状况复杂,可能走了不少弯路,它将食物信息传播给别的蚂蚁之后,随着前往食源的蚂蚁的增多,最终能找到一条从蚁穴到食源的直线路径。这是因为:每只蚂蚁在来回过程中留下信息素,走了近道的蚂蚁在相同时间里往返次数更多,留下的信息素也更多,也就能吸引更多的蚂蚁选择这条路,在这样的不断修正中,最终能找到最短路径。在简单的本能与交互之中,智能就这样诞生了。将这样的思想引入编程中,蚂蚁算法(Ant Algorithm)应运而生,此算法能用于有效解决许多实际的优化问题:路由、拥塞控制等等。人类社会又何尝不是这样,一个人比一只蚂蚁聪明多了,但能做的事依然相当有限。但当由一个个个体的人组合成了人类社会,各司其职又相互联系,所诞生的群体智慧远远超过了单个人的能力,至少,我们居住的地球已然在我们的改造下天翻地覆了。我们只能感受到自身的程序,也只能执行自身的程序,殊不知在更高的层面上,更为宏伟壮观的程序在有条不紊地运行,我们只是其中一个小小的程序片断。——将同样的思想应用到在计算机领域中,即为分布式计算:一个需要非常巨大的运算量才能解决的问题,经过一定的构造,它能等价于多个稍小的能与别的部分进行协作,同时依赖单个计算机的运算量进行处理的子问题,把这些子问题分配给不同的计算机进行运算,计算机之间相互通信同步,最终使得这个庞大的问题迎刃而解。

 

存贮在基因上的程序如此强大,大到超乎我们的想象。它让地球上的生命生机勃勃,生生不息。然而,这些程序并不万能,因为基因并非万能,本能也并非万能,它只保证了生命体基本的生存需求。要想过得更好,还需要除本能之外的更多尝试,在失败与成功之中将经验保存下来,这样的过程我们称之为学习。智慧的生命能将学到的知识一代一代积累流传下去,经过漫长岁月,知识积少成多,超越某个临界值,智慧的生命依仗着它崛起而区别于其它动物,文明由此诞生。

 

————————————————-
注:
 
本文灵感源自王晋康小说《论本能》和《洪荒孑子》。在论本能中,王提出本能靠DNA遗传的猜想,并让主人翁于哲实现了动物间本能的移植。《洪荒孑子》则是讨论群体智能。
 
由于自己的专业背景正是计算机,读完这两篇,反复思考,觉得无论是单个动物本能还是多个动物行为集合成的群体智能,都能从程序算法的角度进行统一的解释。从这个角度看,生命本身就像是上帝(自然界)的一段程序。于是写了这篇文章,文章先沿用王本能靠DNA遗传的猜想,并从更为细致的角度探讨本能以及动物群体行为的程序性。并更为详尽地解释这二者之间的对应关系:三条基本的语句能构成一切强大程序,基本的碱基对同样也应该能记录一切复杂本能;如果承认上帝的存在,这是一段自顶向下的程序,如果相信自然选择,这是一段自底向上的程序(而遗传算法实际证实了进化出本能程序的可能性);同一种群的群体智能,可以由分布式计算来解释,甚至连不同种群之间的协同进化,也能在计算机算法中找到对应——由于对协同进化不太熟悉,又没有足够的时间查找资料,文章最后舍弃了这一部分。非常遗憾。
 
时间有限,每一部分写得非常粗泛,如果每一部分都找到充足的资料并往细了写,就成一本书了。同样由于时间有限,没能查到生物上的一些例子,沿用了王采用的一些生物例子,虽然这是一些周知的例子,王用了自己再用,依然感到不安。
 
从这些角度看,其实本文还很不理想。等哪天有了充足的时间和精力,我没准会查阅充足的资料,重写此文。

上帝的程序(下)》上有 10 条评论

  1. 太强了呀,超赞!
    同是学计算机的,我就活得很懵懂,无论是对自己的专业的思考,还是对所在的世界。周围的基督徒们经常用深奥大自然作为上帝存在的证明来说服我,我在你这里打开眼界以后总算可以喘一口气了~~

尘网网晨 进行回复 取消回复

电子邮件地址不会被公开。 必填项已用 * 标注

*

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>