美文网首页我喜欢的文业余知识动脑,思考
图灵,蔡汀,达尔文:计算中的上帝

图灵,蔡汀,达尔文:计算中的上帝

作者: LostAbaddon | 来源:发表于2015-02-07 01:25 被阅读2317次

    卷首语

    几天前把刚买的《证明达尔文》看完了。
      没有即可就写书评,主要是因为手头上的事太多了,各种各样的事情。
      今天在外面忙完,终于可以写点东西了。

    本文是关于《证明达尔文》的。内容虽然围绕这本书,但基本都不在这本书里,所以,其实你可以认为这篇东西和这本书一点关系没有……


    关于《证明达尔文》

    先来说下这本书吧。

    实话实说,这本书不咋地。
      这本书最大的毛病,就是前面一半给人的感觉是带球在对方门前盘带,盘带了45分钟,球就是不被你抢走,但我就是不射,就不射呀就不射,气死你!
      尼玛,这段话说得让我想到了某些很不好的东西。。。
      可以说,第四章后半部分之前的所有内容都可以几句话交代清楚,但作者——著名数学家,可计算理论开创者,蔡汀常数的发现者,格雷戈里·蔡汀——愣是用了三章半的篇幅来反反复复。
      好吧,可能是因为我个人因为比较忙所以希望可以快速看完这本书的缘故所以这部分没有耐下心,如果你打算看这本书的话,可以不用理会我上面这段的吐槽。

    就核心思想来说,这本书的内容可以归纳为以下这几点:

    1. 冯·诺依曼提出DNA就是代码;
    2. 蔡汀提出了基于代码的DNA演化模型,并利用蔡汀停机概率与忙海狸问题证明了累积演化过程远优于随机选择,且足够接近神创论。

    第一点到第二点似乎很跳跃哦。

    本文从下面开始的内容,就是围绕上述两点展开的——然后基本就开始脱离那本书了。


    构型空间中的演算

    有一个问题是曾经困扰我很久的,那就是,如何证明遗传算法为代表的高级算法的确“足够优秀”?
      和这个问题相关的另一个问题是这样的:高级算法在多大程度上能找到全局最优解而非局部最优解?
      虽然我并没有学过计算理论,对遗传算法等高级算法的认识也有限,但凭借着多年常开不闭的脑洞,我还是鼓捣出了一个解决这些问题的思路。

    让我们来构思一个态空间C,或者说是构型空间Configuration Space(物理上也称为模空间,反正就是个名字),它是离散的。
      这个空间是D维的,每个维度都可以分为N个格子,于是这总共ND个格子就是整个空间的所有可能状态。
      每个状态或者说是格子就代表了一种参数配置,在遗传算法中可以近似地看作是基因配型。
      因此,我们可以说,这个空间的每一个格点,就对应了算法所要解决问题的一个“解”,只不过显然其中绝大部分的解都不是最优解,无论是全局最优还是局部最优。
      接着,所有遗传算法或者退火算法或者蚁群算法,等等等等,所做的事可以分解为以下几步:

    1. 为该构型空间建立可控势函数V(q∈C, t),其中q是空间中格点,t是全局时间,可通过调节t来调节整个势,并要求问题的局部最优解或者全局最优解是势V的极小值点;
    2. 对空间中给定点集{q_i},构造依赖势V的步进函数S,使q_(i+1) = S({q_i})满足某个泛函不等式:F[q_(i+1),{q_i},V]≤0。

    根据上面两个基本构造,我们可以证明,上述点集序列{q_i}最后肯定会停在某个确定的q上,使得泛函不等式取到=0这个停止条件(但=0并不必然代表点集序列停止在某个确定的q上)。

    用直观的方式来说,这就等于在D维空间上增加了一维,形成一个D+1维空间,而V构成了这个空间上的一个曲面,这个曲面对应了原本所求问题对各可能解的匹配程度,从而真正好的解都是这张曲面上的“谷”——其中,绝大部分的谷是局部最优解,而那个最低的谷是全局最优解。
      接着,第二条就是构造在这张曲面上从给定点出发,下一步怎么走,才能更接近我们所要的谷。

    这么说太抽象了,我们以经典的最短路径问题来看一下一些常见的高级算法是如何实现上述两步的吧。

    最短路径问题

    所谓最短路径问题,是指,如果存在N个点,有M条线段连接着N个点,求从指定的点A到指定的点B的最短路径。

    这是学习高级算法的入门问题。

    在利用电脑构造的高级算法解决这个问题之前,我们先来看一下物理上是如何解决这个问题的:

    建造一个固定比例的模型,用N个圆环代表那N个点,然后用一跟线连接点i和点j对应的圆环i和圆环j,线的长度等比于问题中点i和点j的距离。模型全部制作完成后,你一手拿点A对应的圆环A,一手拿点B对应的圆环B,然后两手张开,当A和B之间的线都绷直不能再拉的时候,你就得到了从A到B的最短路径。

    搞算法的人是不是被吓尿了?
      曾经某次学习算法的时候看到这个著名的问题,我第一个反应就是动手做这么一套模型,然后一起学算法的同学直接说我离经叛道这辈子都当不了软件工程师。

    为什么我们的高级算法不能像上面的动手做模型一样简单明了?
      为了分析这个问题,我们先要理清上述动手做模型中,当你最后将A和B左后拉开的时候到底发生了什么——
      这里实际发生的,是每个圆环,每条线段,实际上都在你拉开的过程中进行着自适应的调整与改变——也就是说,我们这里有总共N+M个作出应急反应的计算单元,所以在你拉开的时候,整个模型其实正在进行一场高效的并行计算。
      而作为比较,我们的计算机,无论算法多牛逼,计算机的芯片有多少核,是否采用超线程技术,本质上还是串行计算,而非并行的。

    现在回到算法上来。
      如果我们用遗传算法或者退火算法来解决这个问题,是一个怎么样的过程?

    首先,退火和遗传,或者别的什么算法,解的形式肯定是开头为A结尾是B的一个字符串或者说是点集,而算法所需的适应函数的最合适选择,就是这个点集对应的折线的长度。
      用我的模型来说,此时构型空间总共有N-2维,每个维度都有N-2个独立格点,整个构型空间的势能函数V就是一个给定点q=(q_1,q_2...q_{N-2})就是这个序列对应的折线的长度——很显然,此时势V的最低点就是我们这个问题的解——这个格点对应的序列给出的就是连接A和B的最短路径。
      PS:这里需要注意,优于连接N个点的路径只有M条,而M可能不是N(N-1)/2,所以可能有些点之间没有路径连接,此时如果在构型空间中出现一个格点代表的点集序列要求这样的点相连,那么就给出一个无穷大势,表示断开。
      因此,现在的一条基因的长度是N,其中开头是A,结尾是B。如果一条实际路径不需要通过所有N个节点,那么可以认为在某一位开始都是B,或者在某一位之前都是A。

    接着,退火算法给出了一个从一个点扩散出一群点的(燃烧)策略:
      对一个点集序列做随机的改变——这里的改变就是改变(除了起点和终点)某一点的值——并将改变后的点记录下来,每一轮产生V个点,接着将这V个新点和老点一起排序,根据时间来决定保留多少,留下的点进行下一轮扩散。
      遗传算法在这方面其实本质上是相同的,但对于什么是改变则略有不同。
      遗传算法中的基因改变分为变异和交换两部分。而在通常情况下,变异又分为点突变和段交换及段反序,这都发生在一条基因上,不与别的基因交互。而交换过程则是两条基因之间交换彼此的(对位或非对位)基因段。
      在最短路径问题中,遗传算法的变异中的点突变等于退火算法的燃烧。段交换和段反序顾名思义,不需要太多解是。基因交换则是遗传算法所特有的,两条基因G1和G2交换一段等长的点序列。

    现在,从我的构型空间的角度来复述一下上述过程。
      退火算法可以看作是在已知点的邻域内随机选择V个点,然后选择包括旧点在内的V+1个点中势最小的前P(t)个保留,进入下一代继续燃烧。从而是一个在邻域内通过随机行走找到势更小位置的算法,类似蒙特卡罗(好吧,也不是那么类似)。
      而遗传算法的行为则有四类:

    1. 邻域内的随机行走(对应点变异);
    2. 旋转(对应段交换);
    3. 反射(对应段反序);
    4. 两个点之间取一个中点(对应基因交换,当然,并不真的是中点,而是“中间区域内的某个点”)。

    可以看到,遗传算法中点扩散的手段明显多了很多。
      好了,现在如果来演化这两个算法,我们实际上看到的就是这样的——
      退火算法看上去就是在一座山上,一群人靠着随机行走,不断地往谷底走去,最后走到了谷底。
      而遗传算法,是一群人,不断通过随机行走、乾坤大挪移(旋转与反射)以及和朝着别的人的瞬间移动(基因交换)来走向谷底。。。
      这么说很抽象,而且,就一般的最短路径来说,第一种随机行走就足够走到谷底了。但是,如果现在整个构型空间中除开存在一个全局最低点,还存在很多局部最低点的话,随机行走就不是好主意了——随机行走很容易走近了某个局部最低点,然后就走不出来了,因为它的行为逻辑就是随机行走,然后保留走向势能低的那些点,从而如果一个局部最低点距离全局最低点以及该点所影响的开始下落的坡区足够远,那么通过局部的随机行走是很难走出的。
      当然,退火算法中点变异的范围可以不是“邻域”,这在一定程度上缓解了这个问题,但这导致的副作用是当足够靠近最低点的时候,往往会由于步子迈得太大而错过——所以退火才有一个降温函数,来逐渐缩小变异或者说燃烧范围,最后凝结到最优点。这种前期高温后期降温的方法,就是希望前期广撒网,将点散布到所有局部最优点的坡区,然后通过降温来冻结在每个局部最优点上,从而通过比较来找出全局最优点。不得不说这个想法很好,但降温函数或者说熄火函数需要选择得好,不然还没找到所有局部最优点的坡区就降温的话,那就可能漏掉解。
      而遗传算法由于不单单是随机行走,还存在别的方法来“绕出”局部谷底,所以相对退火算法来说就有了更多的离开局部最优解陷阱的途径——也所以遗传算法不需要退火。
      可以看到,退火算法的高温期的作用就是为了避免局部谷陷阱,低温期的作用是凝结到谷底。而遗传算法点变异的作用是为了凝结到谷底,段交换、段反序和基因交换的作用是为了避免局部谷陷阱——特别是基因交换,只要初始基因足够多样性,那么最后就可能行为包围全局最优点的局面,然后通过基因交换来寻找中间区域,便有可能找到全局最优点。

    算法比较

    通过分析,我们知道,对于这类算法所处理的问题,往往具有如下难点:

    1. 构型空间庞大,且不存在解析手段;
    2. 存在多个局部最优解,从而存在局部谷陷阱;
    3. 有可能难以精确找到谷底。

    所有遗传算法这样的高级算法都是通过各种方式来绕开上述三个问题——事实上,这些算法的诞生本身就是因为第一个问题,否则就可以使用暴力穷举了。
      面对第二和第三个问题,归根到底,其实可以总结为两点:
      如何更好地评价一个解“有多接近最优解”,另一个就是“如何从一个解生成另一个解”
      而,第一个问题就是构型空间中的势能V的选择问题,第二个问题则是点生成函数S的选择问题。因此,所有问题归根到底都是V和S的选择问题。

    OK,关于如何选择V和S更好,这个问题这里不谈,让我们回到本文最开始的目的——如何评价一般而言的V和S下,遗传算法等算法在结局问题方面的优秀程度?

    好了,现在让我们先看两个极端。

    在最短路径问题中,最快的方法,就是我所提到的“物理方法”,或者说是“动手做模型法”。
      这里,你只需要一次操作:拉开A和B(前期准备不算)。
      由于物理模型的并行性,直接上的运算量是N+M,或者说就是O(N)的计算量。
      而,如果使用暴力穷举破解,由于构型空间总共有(N-2)^(N-2)个状态,所以计算量就是O(NN)。
      那么,遗传算法和退火算法等的计算量是多少呢?
      如果只考虑随机行走,那么从一个点出发,随机行走到谷底,所需要的计算量差不多为O(N log(N))。

    哈,可以看到,虽然高级算法找到最优解(不考虑是否是全局最优解)所用的计算量比物理手段多,但明显远优于暴力穷举(废话,不然还要这些“高级”算法干嘛?)。
      而且,更有意思的是,比较这两个手法的计算量,我们发现,这些高级算法的计算量“足够接近”物理手段。
      而这个,就是蔡汀所力图证明的东西。

    再谈基因

    在继续下一个篇章的东西前,让我们回头来看看遗传算法与退火算法。

    重温一下我们所面临的三个问题:

    1. 构型空间庞大,且不存在解析手段;
    2. 存在多个局部最优解,从而存在局部谷陷阱;
    3. 有可能难以精确找到谷底。

    第一个问题是高级算法的使命,我们不谈。
      为了解决第二与第三个问题,退火算法采用的是高温燃烧与退火凝结,分别应对这两个问题。而遗传算法的手段是利用点变异来解决第三个问题,而通过基因段的反序、基因内交换以及基因间交换这些手段来解决第二个问题。
      但,除了上述这些内容,有一个很有趣的特色我们都没有提及,那就是——每次都保留一组基因,而不是只选择唯一的最优基——无论是遗传算法的基因池还是退火算法的燃点集。
      这个基本特点为什么一定要存在——当然了,对于遗传算法,必须要有超过一个基因才能实施基因间片段交换,这个理由我们不考虑。
      让我们构思一个充满局部谷陷阱的问题的构型空间,如果我们每次只保留一个最优点,那么如果我们一开始不在局部最优解所在的坡区,那么下一步通过随机行走可以走到最优解所在坡区的概率,等于最优解坡区中比当前所在位置低的区域的“面积”S(q)与随机步行范围Q(t)的交集S(q)∩Q(t)与Q(t)的比。而如果已经在最优解的坡区,那么下一次通过随机行走离开的概率就是局部非全局最优解坡区地狱当前点位置的“面积”O(q)∩Q(t)与Q(t)的比。
      可见,如果问题足够特殊或者V选择不佳,导致S(q)很小的话,那么只保留一次最优点就很可能导致错过全局最优解。
      因此,之所以不只保留一个最优点,而是保留一批较优点,其根本原因就是为了避免一个点落入坑里爬不出来的情况发生。
      也就是说,所有那些非最优的备胎点的存在,就是为了避免最优的高富帅出家当和尚——所以,女生们,知道了不?多备点备胎总是没错的!【哎?似乎什么不对的东西混进来了……】

    如果将最优点视为“正确”的,那么这种保留一堆非最优的“错误”点的容错手段,也可以看作是将未来的希望寄托在不够完美的“错误”之中——因此,从这点我们回过头来看上个世纪的经典科幻阿西莫夫的《永恒的终结》,我们可以发现,修正错误从某种程度上来说也可以看作是扼杀未来。

    这点非但在遗传算法之类的高级算法中很重要,在描述和解决和演化相关的问题时,也很重要。


    信息空间中的演化

    上面所描述的构型空间作为解决问题,特别是数学问题或者工程问题,是很好的。
      但,构型空间本身也有很大的局限性。
      比如,构型空间中的每个构型都是表现性,因而,所有无表现的基因就无法在构型空间中被体现出来——这也就是说,构型空间无法合理体现基因中“备而不用”的那些预备信息。
      其次,构型空间是固定的,不具备“创造性”——而这就是蔡汀利用图灵机在证明进化论的过程中所构造出来的东西。

    上述这两个问题,归根到底都表示一个意思:构型所能蕴含的信息量太低。
      为此,我们就必须使用比构型空间更优的对象,那就是:信息空间。

    按照蔡汀的思路,我们更应该使用“图灵机空间”或者“代码空间”,但我个人认为使用信息空间这个名词就足够了。

    信息

    先来说一下什么是信息。

    对于信息的定义,其实还是存在着一些模糊性的。
      比如,物理上的信息最初被看作“熵”的对立面,也就是无序的对立面:有序。

    数学家兼信息论创始人香农在题为“通讯的数学理论”的论文中指出:“信息是用来消除随机不定性的东西”。
      控制论创始人维纳认为“信息是人们在适应外部世界,并使这种适应反作用于外部世界的过程中,同外部世界进行互相交换的内容和名称”,它也被作为经典性定义加以引用。
      向量分析方法创始人美国著名物理化学家吉布斯则认为“熵”是一个关于物理系统信息不足的量度。

    有序即信息,负熵即信息,这是信息论创立初期在物理上的反映。
      对于最新的现代信息论中的信息为何,这个定义就太丰繁复杂了,流派繁多。
      当然,虽然我们说不清信息的具体定义,但这倒并不妨碍数学家物理学家信息论学家坚信信息是世界的基础——著名物理学家约翰·惠勒(也就是费曼的老师,多宇宙理论创始人Everett的老师,《星际穿越》科学顾问、《黑洞与时间弯曲》的作者、广义相对论圣经MTW的作者基普·索恩的老师,当然,他本身也是MTW的作者之一)在晚年提出的“It From Bit”也可以被认为是现代信息物理流的前身(当然了,IFB所提出的位宇宙还不完全等同于信息宇宙),进而现代很多人甚至认为信息是万事万物的基础,物理的本质就是研究信息。

    就个人来看,信息的意义有两层:一层,信息反应了对象的结构以及对象间的联系;另一层,信息体现了创造的可能性。

    而,无论是描述性的信息,还是创造性的信息,最能合理体现信息的,便是图灵机。

    图灵机的世界

    我们构造一个信息空间,其中每个格点都代表一个图灵机。
      但并非任意的图灵机,而是一种特殊的通用图灵机,其中包含了各种可以生成的别的图灵机——无论能否停机。
      事实上,这种图灵机可以根据基因来实现各种任务,包括生成多台别的图灵机(Y算子,当然了)。
      这么一来,我们也可以说信息空间的每个格点都是一段基因,然后这台通用图灵机根据基因完成各种任务,包括生成可以完成特定任务的图灵机——哪怕是预期要完成某个人物但当前还没完成故而不会停机或者以错误停机的图灵机。
      这就是信息空间中基因的创造性的体现。
      现在,信息空间的基因已经可以很好地解决之前提出的第一个任务了——蕴含非表现型的基因片段,从而使得备而不用备战未来的基因成为可能。
      另一方面,由于图灵机本身的强大,现在的信息空间可以说容纳了一切可计算的问题,这个空间已经足够庞大与强大,当然,如果要考虑的是生物的演化的话,这个可计算看空间显然还不够强大与庞大——当然,站在It From Bit的位宇宙的角度,也许已经足够了。
      从而,第二个问题虽然不能算是很完美地解决,但至少现在的信息空间已经蕴含了“创造性”。

    演化

    描述完了作为背景的空间,现在来回过头来看看我们的问题。

    在态空间中,遗传算法等算法要研究的问题往往都具有若干个全局最优解,以及更多的局部最优解。但这个提法在描述实际的生物演化时却变得不可行——生物的演化并不存在最优解。
      所以,如果我们要考虑的是信息空间中的演化的话,我们就不能继续认为还存在全局最优解,从而演化的目的不似之前是找到全局最优解,而是能找到局部最优解就足够了。
      而,现在信息空间中的势V,也不再简单的是关于空间中位置的函数了。
      现在信息空间中存在一系列特定的任务{T},每个任务都需要图灵机来完成。因此,现在信息空间中的每个点所对应的基因都将生成图灵机来完成各任务,并根据完成的情况来确定势能V——这就是现在的势能的定义。
      而,各种不同的演化方案,就和此前的遗传算法或者退火算法一样,所要做的就是不断利用已有的点来生成或者说到达新的点,从而尽力到达一个“安全”的区域,不被淘汰(是否被淘汰以每个点的势V及其构成的集合{V}决定)。
      因此,其实问题本身没有变——在一个空间中,存在势V与演化函数S,然后来查看S是否可以确保“演化”持续进行,并能以多快的速度实现某个预定的目标——比如“演化出眼睛”或者“征服宇宙”。
      而真正发生改变的,只不过是我们现在是在信息空间中完成这项任务,而每个点都依靠生成的图灵机来解决问题。
      因此,本质上来说,生命的演化(在这个理论中)就可以被描绘成信息空间中的通过已知的点来获得下一点点群的过程——事实上,蔡汀第四章的标题就是:软件空间中的随机行走。

    让我们回到《证明达尔文》这本书。
      这本书中的内容,其实就是上面所提出的这个范畴中的一个问题——现在在信息空间中我们要解决的问题是“获得更精一位的忙海狸问题的解”。
      因此,可以说,蔡汀所证明的就是在上述大背景下的一个特例中,累进式演化足够接近神创——而这点其实就类似在最短路径问题中我们所证明了的遗传算法与退火算法的“演化”速度足够接近物理模型方法。

    虽然对上述模型我们不能给出足够精确的证明——事实上我们所能做的也不过是和蔡汀所作的一样,针对某个特定的问题来给出准确且精确的证明——但并不妨碍我们去相信,在信息空间中的这个演化问题,应该可以获得和构型空间中的演算问题一样的结论:
      神创和物理模型法一样,所需的演化步骤为O(N);
      暴力穷举法需要的演化步骤为O(整个空间的大小);
      累进式演化所需要的演化步骤为O(N log(N))(当然,这个结论和蔡汀所给出的N log(N)2已经明显不同了)。
      从而,我们差不多可以认为,累进式演化在单位时间里具有差不多可以匹敌神创的威力(好吧,其实差距还是很大的。。。因为N本身超级大。。。),至少也比暴力穷举高效了很多很多(这句是废话)。

    小结

    上面的讨论基本完全是脱离了蔡汀的那本《证明达尔文》而作的,所以,其实和我看不看这本书没啥关系。。。看这本书只不过是给了我写这篇文章一个借口而已。

    这里有几个概念是最核心的:

    <big>1. 数学本身蕴含了无穷的创造性</big>
      这点是蔡汀在前三章里不断强调的,也是一个和我们日常生活的经验相近又相远的一个概念。
      从那个著名的数学不可思议的有效性的哲学论题中,我们已经可以感受到数学本身所蕴含的无穷创造性,但同时另一方面,数学作为一门学科给人的感觉是在不断构造数学概念解决数学问题,但似乎并不具备创造力——具有创造力的是数学家,而不是数学。
      这种观念(也许存在,也许不,反正我个人认为数学本就具备无穷的创造性潜力)在图灵与冯·诺依曼等人所建立的杰出的开创性工作后其实就已经被终结了。
      事实上,图灵机本质上可以归结为数学上的函数——对,图灵机最早被提出时就是一个七元函数——从而图灵机的创造性与创造力本质上也只不过是数学的创造性与创造力的一部分而已。

    <big>2. 基因蕴含了创造的可能性</big>
      就如在构型空间中的演算的末尾所提及的,非最优解的保留就是为了提供不一样的演化可能,从而为获取别的局部或者全局最优解保留可能性。
      在信息空间中,这种保留更体现为这么一种保留——如果一个基因所蕴含的所能生成的图灵机中,有些还没有演化完毕,从而是要么不可停机的要么能停机但不能解决任务的,那么这显然是非最优解。但如果我们将这些非最优解都剔除,那么还没演化到能解决问题的图灵机就永远不可能演化到能解决问题的那一天——这就是累进式演化的本质,将暂时的错误保留下来,只要剩下的部分能正常工作,留下的错误在未来就有可能演化出更好的结果。
      真实生物的基因中有很多是无效基因,垃圾基因,要么不产生可表达的基因序列,要么就是产生了也没用。
      但,这些基因难道就应该被剔除么?显然未必如此——其中很多现在无用的基因段,未来完全就有可能在偶然意外的激发下,从中出现有用的基因。
      留着现在看来是错误的东西,就是为了将来能获得更好的回报。
      虽然这种思想在人类社会中属于投机倒把,但,你瞧,奇货可居其实也就是一种投机倒把,而它的结果是成就了吕不韦与秦嬴政这两代雄霸。
      因此,如果演化要保持创造力,那么演化就不能对不够适应的基因赶尽杀绝。

    <big>3. 生命的本质,就是V与S</big>
      站在死硬理性派的角度,生命与演化的本质与神创一点关系都没有,其强大的来源完全是前面所提到的势能函数V与演化函数S——V决定了演化的方向,S决定了如何前往这些方向。而生命,不过是V和S在恰当调配下所得到的结果。
      这个结论当然是充满了冷冰冰的GEEK感的,想来大家看着也不舒服,特别如果你信教的话——不管拜的是哪位神仙大神。
      从这个角度来说,所谓上帝,很有可能不过是为了计算一个超级复杂的问题而设立的超高级计算机程序;而所谓生命,也不过是这段程序跑出来的一个结果。
      这让我想到多年前我写的科幻小说了。。。。。。


    生命的演化

    前面所得到的结果,当然不是无懈可击的。
      如果你要站在有神论的角度来反驳攻击的话,其实也容易得很。

    首先,信息空间本身只蕴含所有可计算的可能性,从而其创造力是可计算的——于是,第一个反驳点就是:莎士比亚是可计算的么?那你给我算一部《哈姆雷特》出来。
      这个说法当然是糙了点,但问题的本质却是一样的:上述模型仅仅给出了可计算的创造力,而人类世界的大量行为大量成果是不可计算的,甚至很多仅仅只是一种感觉,连可靠定义都没有,这样的东西显然是超出了这个模型的可论述范围——从而可能是神创的。
      而,站在进化论的角度,神创者的这种反驳也不是完全没有反击的余地——生物分子或者生物官能团之间的行为并不单纯的是图灵机,所以上述模型仅仅是一种类比来给出累进式进化的强大,并不是说生物就是图灵机。既然如此,生物的演化就不会受到所用模型中图灵机只具有可计算创造力的限制,从而可以实现不可计算的创造力。
      对此,神创论者的进一步反驳可以从既然模型并不全然相等因此说生物演化的累进式所获得的创造力完全有可能不足以形成当下的人类社会。
      这个问题就瞬间上升到形而上的信仰层面了,因为除非你能回到过去浏览时间,否则就算理论再完美你依然可以用理论和现实不是完全匹配的来反驳,于是就成了从一个不可知来推论另一个不可知,纯粹的信仰问题,不用继续争辩下去了,你信就信,我不信就不信,这事就这么简单,没有争的必要。

    第二个攻击点比上一个温和,那就是累进式的O(N log(N))的进化步骤所需要消耗的时间是否能被人类当下历史所容纳?
      这个问题也是演化支持者很难回答的,因为N被预设为很大,但是多大算很大呢?完全有可能发生N log(N)远超人类历史的情况,这么一来,要么归功于纯粹的侥幸,要么归功于神来之笔的帮助,这事就瞎了。
      对此,如何估算一个合理的N是一个很直面问题但几乎不可能成功的方案。于是,说到底又成了信仰问题。。。

    这么看来,既然无论如何都是信仰问题的话,我只能说,现阶段其实这套模型这套理论依然无法说是完全证明了进化论或者说是证明了达尔文,只能说是提供了一套看上去很不错的理论模型框架。

    而,如果我们纠结一下蔡汀本人的态度的话,他的态度是既说自己不算无神论,又各种暗示他的上帝是数学。
      这个其实蛮呵呵的。
      这里岔开一下。多年以前和北京的集智俱乐部的成员有过一次争论。他们认为图灵机尤其是Y算子体现了某个(上位)观测者的存在;而我的观点是:这不过就是数学。站在蔡汀的角度,这个争论倒是没有必要了,我们在讨论的恰好在他看来是同一样东西。

    当然,我所关注的倒不是这货对神创论者有多大冲击——不管你是告诉我我是从猴子累进演化而来的还是告诉我我是克苏鲁捏出来的,反正我都没差,我还是我。
      我所关心的是另一个层面的问题——生命是什么,生命的演化会如何走下去。

    人择演化,与,进一步演化

    从前面的分析我们可以看到,生命不过是V与S的结果,仅此而已。

    这个命题其实蕴含了很多可以讨论的东西,比如,人择原理就冒了出来,进一步演化的方向也冒了出来。

    人择原理

    人择原理有很多版本,最常见的几个版本人择原理是这样的:

    弱人择原理:宇宙偏爱演化出碳基智慧生物的状态。
      强人择原理:宇宙的演化必然允许人类的出现。
      最终人择原理:宇宙的演化必然导致人类出现,且一旦出现就不会消失。

    当然,个人比较喜欢的人择原理的版本是这样的:

    我们所在的宇宙为什么允许我们这样的生物被演化出来?因为如果不允许的话,就不会有人在这里提这个问题了。

    这个问题非但在宇宙学与粒子物理中存在,对生物进化也一样适用——为何人类能在地球上演化出来?
      我们都知道,人类的演化是充满随机性的,比如如果当年恐龙不被一块板砖砸死,说不定就没人类鸟事了。
      而,这样的事实如果我们沿用人择原理的话,就成了要么恐龙偏爱被一块板砖砸死,要么恐龙必然会被一块板砖砸死。而人的出现则如上帝的选民一般充满了必然性或者偏爱情。
      这样没节操的自恋我是无法接受的。

    让我们来对比一下。
      宇宙可以进化出人类,与生物可以进化出人类,其实是两件非常类似的事情——一样都充满了各种侥幸与随机。
      如果说人类在地球上被进化出是一个随机事件,那么宇宙中物理参数可以组合出人类的存在,也是一个随机事件——反之,如果宇宙人择,那么恐龙必须被一块板砖拍死,这是上帝的质疑,物理的规律,不可避免——哦,这是瞎扯淡。当然,站在神创的角度,这倒的确是必然。
      因此,人择原理所反映出的,其实就是人的一种“选民心态”,或者说是“人类中心论”。
      宇宙为何一定要有人类出现?就如地球上为何一定要进化出人类一样,仅仅是一个概率问题。
      那么,让我们更进一步——我们已经知道,进化并不是单线程的,而是多线程的——多路并进,且每一路都充满了备而无用的垃圾基因,而恰恰就是这些垃圾基因,其中有些在漫长的时间出恰好进化出了人所需要的那些生物特征,最后产生了人类。
      这里的核心有两点:多线程,携错。
      那么,宇宙是否如此呢?

    要说宇宙的多线程,这事倒是很好理解——多宇宙。
      让我们试想,如果宇宙只有一个,那么一旦演化错了,那也就不存在人类了——当然,现在的你不会遇到这个问题,因为如果遇到,也就不存在现在的你了,而一个不存在之人当然不可能思考“我为何不存在”这个问题了。
      而,如果宇宙不是单一的,而是复数的,甚至是不可数的,那么这事就有趣了——终将有一个宇宙的参数“恰好”合适,诞生出人类。
      这就和此前的演化模型一样,多路并进,总有一款适合你。
      而且,从物理上来说,两者的确足够相似——信息空间对应希尔伯特空间,图灵机对应宇宙波函数及其量子化后的产生湮灭算子(理论上所谓的三次量子化或者说宇宙量子化、时空量子化),演化的目标就是来一个人类冒傻气。
      你看,从这个角度来看,生命的演化和物理的演化是多么类似啊。
      当然,要说差别也有,那就是自然常数与物理定律不可能改变(也许),所以不存在累进式演化,从而致使一个自然选择过程。
      当然,我们也可以更激进一点,认为自然常数和物理定律也是可以改变的(比如莱姆在《新宇宙演化论》中提出的,也比如《猎户座防线》),从而也就存在了某种意义上的自然演化。

    因而,从这个角度来说,什么是人择原理?
      宇宙的人择原理,就是在多宇宙中演化出我们这样的人类的一个自然选择/演化过程。
      而生物的人择原理,就是在地球上演化出我们这样的人类的一个累进式自然演化过程。

    因此,个人一贯认为对于人择原理的争论很无聊。。。

    进一步演化

    我们除了可以将宇宙看作是某种意义上的图灵机,还存在另外一些东西也可以这么来看待。

    事实上,如果将生命看作是V与S的结果,即一切能描述成一个信息空间中V与S的过程的系统都能视为生命——蔡汀在书中讨论过,生命可以被看作是具有演化能力的一种模式。
      从这个意义上来说,纯数学上的图灵机当然也可以被视为生命了——我们就是利用图灵机来论证演化的啊!
      进一步,人工智能,如果存在的话,当然也可以被视为生命。
      甚至于,我们可以更加激进地扩大化地认为,模因也是一种基因,从而社会乃至科技都可以视为生命。
      这些东西又将如何演化呢?

    这么一看,V与S的演化问题不单单包括了生命的论题,也包括了宇宙、社会、科技,以及,人工智能为代表的超人。

    那么,这些东西的出现是否如人择所说的一般是一种必然或者偏好呢?
      这倒是不重要。

    重要的是——

    <big>下一步,路在何方?</big>

    请看几年前写的:《演化之路》


    卷尾语

    终于写完这篇东西了,呼呼~~

    一本正经说《证明达尔文》这本书的倒是没几行字,哎……

    前面的内容还敢自称比较硬,最后的一部分,这个,似乎是水了点。
      找个机会写个续章,就最后的几个问题好好展开一下,应该很有意思。


    如果你觉得这篇东西写得还行,愿意打赏我一口咖啡,请戳打赏页~~
    本文遵守创作共享CC BY-NC-SA 3.0协议**

    相关文章

      网友评论

      • 50640ecb666b:确实吓尿了!
      • 萧牧寒:看读懂。。。。。。。。
      • 江寒园:计算中的上帝,,,好像是一本书名?
      • 我的名字叫清阳:试图读完。
        然后读完了。
        然后,就没有然后了。我去上上算法课吧。
      • 十酒三:额……关注Chaitin的话看他的算法信息论文章吧。他的元生物学的思路让人不敢苟同。但是算法信息论里面“复杂度决定概率”(Levin编码定理)可以对自然科学本身很有影响力的结论啊、
      • 易江禾:你这个写作效率实在太狠了!我的感觉从某种意义上讲,宇宙本身是一个运算能力无穷大的计算机,物理定律就是它的算法,无论多么复杂的系统,演化本身就是计算,瞬时完成。

        另外我不觉得《哈姆雷特》是不可计算的。可以这么理解,某种算法算出人类这么个东西,又算出一个字符串,然后这个字符串有一个性质,叫做“对人类有意义”。

        算法我是外行,纯属瞎扯哈。
      • LostAbaddon: @Yunen 我是学理论物理的

      本文标题:图灵,蔡汀,达尔文:计算中的上帝

      本文链接:https://www.haomeiwen.com/subject/xdydxttx.html