程序员讨论《黑客帝国》(二)平衡和进化
接上一篇《真实与虚拟》。
我有点纳闷,机器之主在他创造的虚拟世界中拥有无上的能力和权威,那他想解决任何问题不都轻轻松松吗?他想毁掉Zion,一个命令而已,就如同拔掉自家后院的杂草一样简单,又何必让机器如此大动周章,甚至屈膝让尼奥去帮忙?
这让我想起了一个有意思的问题,在我们设计的程序中,能量和物质是守恒的吗?
绝大多数人会拍脑袋说,当然不守恒,我设置一个变量value,可以让它等于任何值,从0到正溢出皆可。不过,当设计一款网游的时候,你会发现一些有趣的事实,如果玩家数量不变,而新的更好的装备不断刷出来,那么这个虚拟世界会发生“通货紧缩”的。 如果有黑客入侵了系统,使游戏中涌入大量金钱,则会迅速通货膨胀,如果数额超过一定界限,这个系统会失去平衡而走向崩溃。
我猜想,这就是所谓平衡的世界,但凡有死亡与变革的系统,都会开始产生属于自己的运行规则,而保持在一种动态平衡的过程中,而即使是这套系统的设计者,依旧不能为所欲为,除非他希望自己亲手打造的系统立刻毁于一旦。
这就是神奇的复杂系统,平衡是它的一大重要特性,它是去中心化的超级复杂系统,中心即使存在,也只能以一种影响者而非管理者的形式存在。复杂的蜂群行为,并非由一只聪明的蜂王负责,而是靠着无数小蜜蜂组成的。想想人脑,过去几千年来,有很多人都认为人的至高无上的灵魂处于脑中一块特别神秘的微小区域。于是有人把大脑一点点的分解开,尝试找出所谓的“脑洞”,结果可想而知。每一个细胞,每一条神经都没有智能,但是几千亿的神经汇总起来,便拥有了智能!
平衡的另外的一个意思,就是这样的复杂系统在背后肯定有问题和缺陷。每个程序员都惧怕自己系统中的问题或者bug。每一条语句都经过了仔细的检查,每一个子模块都经过了完整的测试,每一个子系统都经过了完整的联调,那么最后的系统一定没有问题吗?一定是稳定的么?
这样的系统还是会存在问题,有智慧的系统就会出问题甚至导致崩溃和死亡,而简单系统因为简单,就根本没资格进化,更没资格死亡。个体的”死亡“状态是个体极大进步的钥匙,想想电影中尼奥两次能力突飞猛进,都是因为死亡或者眼睛瞎掉;系统的崩溃是系统恢复和更新到全新状态的必由之路,所以母体才要经历六次重启。
不仅如此,完美的系统在数学上就是不存在的,这就是所谓的哥德尔定理。这个定理有很多版本,我把其中的一个我觉得还不错的版本抄在下面:
“任何一个相容的数学形式化理论中,只要它强到足以在其中定义自然数的概念,就可以在其中构造在体系中既不能证明也不能否证的命题。”
本人数学学得不够好,很难准确理解这个定理,但大概意思就是让一个行动如计算机的机器(或者某数学家)按照它自己订立的体系一点点的往前论证时,总有一天它会把自己搞停机或者疯掉的。而一般的人,仿佛不会被这个定理所限制住,大妈的首要目的是养活自己的几个孩子,囚犯的想法是如何逃出囚笼... 普通人根本就谈不上完美,也根本不想去解决那些”让人抓狂的“哲学或数学问题,所以人家活得好好的,也不会象数学家或者哲学家因为搞自己的理论到崩溃自杀。所以机器一定需要人类的这种”特性“,同时再一次印证了那句话,”无知是福“。
回到我们的第一篇文章结尾的那个问题,人类在第一代母体内所谓的“完美世界”中水土不服,导致大量与之连接的人类死亡。“完美的世界”首先就不应该存在,当人类一切的要求都满足的时候,他还期待什么呢?只期待死亡了。完美的世界就是不平衡的,它必然会迅速崩溃。史密斯说的话很对,人类通过苦难认识自己,苦难是必备的,没有苦难,幸福就没有了意义。
出现在我们眼前的有这些词:复杂,平衡,去中心,崩溃,更新和进化。
就像电影里指出的,尼奥和史密斯就是这个复杂系统中的”崩溃和更新“。它们是同一块硬币的两端,都是由于整个世界(绝不仅仅限制在母体里)这一超级复杂系统的错误累积产生的。尼奥是正面,是这场变革中积极的成分,而史密斯却代表了相反的破坏力量。它们在电影里几乎一直都是平衡且在不停的进化,但其各自的进化过程有所不同,是很有意思的。
史密斯作为特工,它从头到尾只是一段程序,再牛也只能是一段程序。但尼奥不同,它既是人,又是程序。这个不难理解,整个电影中,尼奥应该一直接在整个系统中(参考第一节,锡安也是虚拟的),它拥有人的一切特征,融合在系统之中,”甚至经历着爱“,同时还携带了甚至高于造物主级别的”系统之源的源代码“,这些代码包含些什么呢?
武功,IFight接口,在电影中程序和人类间的攻防之战使用了具象化的武术形式,谁都能说谎扯淡的, 但牛不牛逼打一架就知道了,这个设定我很喜欢。尼奥的战斗力曲线简直就是指数形式狂飙啊。
瞬移的能力,这能够直接忽视系统时空的限制,我们可以称其ILighting接口 。
复制的能力,接口ICloneable,电影里真是浅拷贝啊。尼奥应该包含这个能力,但不会让他现在就用,我觉得后面23人重建锡安的时候用得着。史密斯从尼奥这里获得了如此强大的能力,并应用的如此彻底,不仅拷贝了整个母体,连锡安里的人都未能幸免。
预测的能力,IForecast接口。尼奥和史密斯两人都没有,但先知有。其实电影里的预测绝非魔法,而是推理。先知作为如此强大的世界之母,她能读取任何连在计算机的人类的想法,综合它已掌握的信息,就能推断的相当准确。但她不能推断人没有做出的选择。如同天气预报,太长的预测没有意义。但最后,史密斯复制了先知后,便拥有了一定的预测能力(在第三部电影的最后打斗说,”我预测过这个场景,就是这里,你躺在这里,安德森先生“)。
尼奥和史密斯的进化,实际上代表了系统到后来的错误累积的越来越多。但他们的进化方式完全不同。
尼奥原本就拥有这些能力,因为他是the one. 只不过被一层层的保护覆盖起来,而他的能力取决于对自身的认知(”认识你自己“)。每当一次严重的伤害甚至死亡,他的保护就会少一层,其能力就会释放出来一些。
而史密斯的进化,则来自于一种类似”基因编程“的技术,模仿了真实生命中染色体的作用。它被尼奥撕碎后却获得了尼奥潜在的复制能力。于是这种能力便为他获得了大量的收益。通过重组获得了先知的预测能力。 事实上,基因编程已经在机器学习界由来已久,通过对计算表达式不断的组合和变异,实现对复杂问题的自动求解。(.NET程序员可以参考著名机器学习库AForge.Net下的Gene库,这个库提供了写的非常清晰完善的基因编程实现,同时提供源代码和样例)。
想想看,史密斯获得了无数的能力,在自己的那个类后面跟了一排实现的接口:Public class AgentSmith: Agent, IForecast, ICloneable, ILighting...如同获得了众多的成就勋章一样看着非常酷炫碉堡。但他就没有尼奥隐藏在人类本性的那个接口:ILove。
在最终,尼奥和史密斯互为镜像,尽管史密斯看起来甚至更强一些,但实际上尼奥有爱和对全人类的责任心支撑着。这种力量是史密斯这种追求所谓最大化效益的程序不能想象的。所以最终如同正负粒子湮灭,正反两端合并,系统重启,人类和机器社会进入了新的纪元。
锡安的人民因为能够提供自圆其说的故事,所以应该不会再像前五次一样做记忆清空和重写了,正好有一个完整的英雄故事值得称颂,而在母体中的人类,思维已经被史密斯烂虐过一次了,估计还得重新选择性清空一下。虽然第二天的晨曦很美好,可是大白胡子要干的事情也不少呢。
在电影中, 出现了大量的隐喻和文字游戏。比如崔尼蒂,墨菲斯,尼奥这些人名,洞穴和飞船的隐喻等等,这些都有介绍。值得注意的有那些千奇百怪的门,门就是系统和场景间的接口和通道,钥匙就是这些接口的权限。墨镜就是人或机器对自己的防御和装饰,两个人都摘下墨镜时,才能开诚布公的交流。而大胡子这种级别的人,根本不需要装饰,这也挺符合真实人类社会的情况的,除了遮阳,墨镜就是为了掩饰身份或装逼用的,而真正牛逼的人根本用不着。电影里有数不清的程序与真实世界的隐喻,品味起来入木三分。真是”程序如人生,人生如游戏”啊。
本系列后面应该还有一节,但估计写起来难度非常大,我先做做尝试。这个命题就是”爱“。如同电影中,拥有爱的程序一定要在第三集体现一样,这是最难但也最有想象力的一个“字”。
作者:热情的沙漠
出处:http://www.cnblogs.com/buptzym/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。