有一个非常著名的讨论题:
为什么生物可以进化出复杂的眼睛,而没有进化出机关枪?
六管加特林机关枪结构示意图眼睛的复杂性比机关枪高出不止一个数量级。
某种生物如果进化出机关枪(类似)这种器官做武器,它肯定成为地球霸主。“机关枪太精巧了,不可能进化出来”的理由不被认可,是因为眼睛的精巧度,远远高于机关枪,既然眼睛可以完美进化出来,机关枪为什么不可以呢?
原因应该是:
- 机关枪是设计后制造出来的。设计讲究效率和效用最大化。作为机械装置的机关枪为了可靠往往做“减法”,剔除任何多余低效的部件。
- 眼睛是生物进化自然选择的产物。进化讲究适应和实用。作为生物器官的眼睛为了确保有效和实用在演化过程中一直做“加法”,为了“兼容”保留了大量冗余。
机关枪需要有用,进化过程中只是进化一个枪管、或者一根弹簧没有意义。生物,首先要生存,其次才进化,等你进化出一个枪管或者一根弹簧,不单没用反而成为生存的累赘,那么这种生物很快就灭绝了。
而眼睛不同,首先进化出几个感光细胞,单单有感觉环境亮度功能,这也是有用的,然后再慢慢进化出可以调焦的眼球,可以扩缩的瞳孔等等,每一步进化都是有用的。
这说明了一个很好玩的道理,通过进化出来的东西,不单进化的最终结果是有意义的,而且进化的过程,必须每一步都有意义的。进化不是追求最终的效用最大化,而是最求过程每一步的效用最大化。
- 过程每一步效用最大化,不是可以形成最终效用最大化吗?这个提法局部正确。就像积分计算,只要切分成无限小累积才是最正确的结果。进化是路径积分,设计是企图直接得出结果。
完美主义者解决问题喜欢精确的“工程算法”,执行“最优算法”。核心是需要了解所有细节,经过策划和计算获得最优解,然后按此行事。
还有一种算法是实用主义者喜欢的,叫做“贪心算法”,核心是不对所有环节做精确计算,而是有大致规划,然后每步执行的时候追求局部最优。这样可以得到比较满意但不是最优的解决方案。
机关枪是精确算法的产物,眼睛是贪心算法的成果。有一个例子可以用于理解这两种算法:
向集装箱内装大小不一的长方体包装箱
-
采用精确算法需要知道集装箱和包装箱的精确尺寸,然后计算出最优解,按此解执行即可。这样可以达到最大空间利用率,但也会导致时间成本和搬运成本提高。因此,精确算法往往作为理论参考,而不是执行方案。
-
采用贪心算法往往就近搬运大的箱子装进去,塞到集装箱最角落;把次大的箱子,塞到它的旁边……直到把集装箱塞满。贪心算法优点是大大降低了计算的难度和非就近搬运的成本。但缺点也很明显,并不能取得最佳结果。即“由大量经验所得,贪心算法不能取得最好的结果,但是通常能取得满意的结果”。
这两个算法,分别追求最终结果最大化和追求过程效率最大化。
-
一种可以取得最优结果,需要精密的计算和规划,还要忍受漫长过程和曲折。这是机关枪的套路。人类计算能力增强和大数据应用,会越来越靠近“精确算法”。
-
一种无需详尽计算与规划,每一步都能看到明显进步,最终结果只能是“比较满意”。这是眼睛的套路。人工智能发展,可能让贪心算法接近“精确算法”的结果/
生物演化过程与自由经济(市场经济)类似。
在自由经济系统内,所有市场参与者看似盲目,追求自己利益最大化,但在市场这个“看不见的手”的推动下,在每个参与者和每个步骤都实现局部利益和局部效用最大化的情形下,经济总体也可以增长,也可以让社会整体获得福利提升。自由经济的过度冗余和盲目,让自由经济要面对周期性危机。
机关枪设计生产过程与计划经济类似。
在计划经济系统内,所有生产者、交易者、消费者都经过设计,按设计好的计划执行。理论上可以达到效果和效率最大化。计划的系统应该尽量减少复杂性,以此获得计划的可靠性。计划经济的精确控制欲望,面对复杂性的时候遭遇巨大的挑战。
进化(演化)产生的事物,必将伴随冗余与不完美。
《失控》作者,凯文凯利凯文凯利《失控》里有这样的观点:
眼睛是进化论下诞生的非常精巧的事物了,但是它也有很大不完美性,例如盲点,假如对神经穿过视网膜的位置有一点改变,盲点就不会出现;或者说DNA,是已知的生物携带自身信息的最精简的方法,但是DNA上依然大部分是“垃圾DNA”(非代码基因)(这些空白DNA为很多科幻小说家创造了丰富的想象空间)。同样地,为了解决一个复杂问题,通过“进化算法”而筛选出来的编码程序,与高级工程师通过头脑精密规划而成的编码程序,显得更繁琐与冗余。
“进化算法”是“优胜劣汰”的核心,通过选择、重组和变异这三种操作实现优化问题的求解。《失控》中预言这些“算法”将取代工程设计。刘欣慈在《三体》中写道“这种方法虽然简单,却展示了数学中的一种用随机的蛮力对抗精确逻辑的思想方法,一种用数量得到质量的计算思想”。
《失控》中有列举很多进化算法得到程序,往往繁琐冗余,丑陋累赘,看起来逻辑迷乱,但能解决问题。
“工程算法”和“进化算法”都可以解决复杂问题。前者是做好详细计划、每一步都精密计算,把整个问题当做一个整体来解决,试图追求“局部终极”;后者是则得过且过,走一步算一步,只要大方向正确即可。工程算法可以得出最优解,缺乏经济效率。精巧的的往往脆弱不健壮;进化算法得出的结果,则是不够整洁不够精致,充满冗余、非常健壮。
科学的发展历程就是就是用工程算法穷就进化算法的过程。
数学史上圆周率PI值计算就是一个典型标本,从大致为“3”,到“3.14”,再到“3.141592与3.141593之间”,再到后来确定PI值是一个无理数。之间走过的路径就是进化算法过渡到工程算法的经历。
人类制造的工程机械、电子设备、建筑工程等繁多的技术产品,都是工程算法的丰碑。但是工程算法还是用于相对简单的领域。比如说一个土木工程,往往采用“工程算法”,设计好“蓝图”,然后精密地按照策划来实施。
但如果面对复杂问题,比如有机体或者“生命体”,往往采用“进化算法”,没啥好规划的,走好眼前每一步就好。这不是不负责任,而是有理论支持。
阿兰图灵,天才的解谜者,因同性恋被歧视而早亡如果把生命体当成一台极其复杂的“计算机”,那么这台计算机在运行时出错是无法避免的。一个生命体的运行状态只有运行起来才可以完整了解。计算机领域最高奖叫做“图灵奖”,以阿兰图灵命名。图灵最有名的一个知识遗产叫做“图灵机”,那是一个极其简单但可以完成任何计算的“原型计算机”,图灵用他的图灵机证明过图灵机“停机”问题不可解。
通过对进化过程和进化结果的讨论,我们可以得出一碗最有用的人生鸡汤:
- 人生是经历,把人生运行起来才最有意义;
- “走一步看一步”是务实的进化算法;
- 工程算法非常有用,但还不能用于人生规划和生命进化;
- 复杂系统如果没有工程算法,那么不要犹豫选择“进化算法”。
4.解剖、器官、细胞、亚细胞结构
4.6 为什么可以进化出眼睛,而不是机关枪?
网友评论