冗余的力量
在很多领域,有很多人一直都在积极追求简洁、消除冗余,并以此为豪,且深深地感受到了**“大繁至简”的——魅力、魔力与力量。**
因此,会有很多人觉得——简洁才是本质,简洁才是通向宇宙终极真理的唯一道路,尤其是那些描述宇宙的——数学公式与物理定律都是简洁、优雅与对称的,所以宇宙一定是简洁,而不是冗余的。
但,真的是这样的吗?——本文,将会探索冗余的力量、及意义所在。
主题目录如下:
- 冗余的形式与作用
- 冗余的意义与必然
- 结语
- 后记1:好奇心与冗余
- 后记2:简洁与复杂
- 后记3:简洁与简单
冗余的形式与作用
几十亿年的时间,足够任何脆弱的东西土崩瓦解,但大自然却越挫越勇地枝繁叶茂。
风险哲学家、随机性大师、黑天鹅之父——塔勒布,在**《黑天鹅》**一书中,曾说道:
“冗余是好的,大自然正是依靠冗余,才能在复杂未知的情况下保持稳定,人类是黑天鹅、环境变化是黑天鹅、陨石是黑天鹅、太阳风暴是黑天鹅、地壳变动是黑天鹅、气候骤变是黑天鹅、火山喷发是黑天鹅、生态破坏是黑天鹅、物种灭绝是黑天鹅——但大自然至今依然还算健壮稳定,不得不说,在地球上最善于对抗黑天鹅的就是大自然了(而不是人类,及人造之物)。”
这段话的重点,不是大自然善于对抗黑天鹅,而是大自然正是依靠冗余,才战胜了黑天鹅。当然,大自然也的确拥有无比强大的力量,但这个力量的来源,就是冗余吗?
接下来,就让我们来看看,冗余都有哪些形式和作用。
从某种角度来看,冗余可以划分为三种形式:内容冗余、功能冗余、与结构冗余。
第一种,内容冗余。
这是一种重复,或说是备份,其作用在于——多余过剩的部分可以抵御(或解决)未知的问题。
**例如,**人体有两个肾脏,这是一种过剩(或说浪费),也是一种冗余,因为一个肾脏就足以完成全身的代谢任务,但进化并没有消除这个冗余,这就为应对更加“艰难”的情况留下了余地。
**例如,**网络资源都拥有大量的重复拷贝,数据库系统会定时备份数据,云存储会同步所有设备的数据信息,这些冗余让网络拥有了健壮性。
**例如,**乘坐飞机的时候,通常都会留出富足的过剩时间(时间可以理解为内容重复的计算),以应对不确定性的突发事件。
另外,**“记录”**也可以看成是一种冗余——这相当于把大脑中的信息,重复备份在了大脑之外,这会带来意想不到的结果。
例如,历史上,欧洲瓷匠由于记录下来了各种陶瓷的——成分配比、工艺流程、以及所有的实验记录,所以他们的陶瓷工艺可以准确传承与叠加进步,而中国瓷匠则没有这个记录的习惯,所以中国的陶瓷工艺,会出现失传,然后再“重新发明”的现象,结果就是发展时退时进,并陷入了低水平重复的“诅咒”。
这种记录,其最初的目的可能是为了防止(大脑)遗忘,但显然,记录错误就可以避免问题,令后人少走弯路,记录正确就可以传承知识,令后人可以叠加进步,甚至可以说没有传承就没有颠覆,所以是记录这种冗余,才促成了颠覆性结果的出现。
那么,内容上的重复,有时还可以就是功能本身。
例如,缓存是计算机运行速度的基石。如果没有缓存,那么计算机将会慢的让人无法忍受——缓存,就是一份重复拷贝,存在于可以被更快访问的区域——这样访问数据的时候,就可以直接访问更快速的拷贝,而不是更慢的内容。
**例如,**重复的房子、车子、手机、电脑,等等任何事物,只有重复才能够满足重复,甚至大部分时候,我们也不得不去进行大量重复的创造——重复的想法、重复的产品、重复服务、重复的概念、重复的结构、重复实现——这就是重复的现实。
综上可见,内容冗余——不仅提供了防御性,还提供了成长性。
第二,功能冗余。
这是内容并没有重复,但其功能却出现了多余和过剩。
例如,药物阿司匹林曾经用于退热,后来可以止痛消炎,现在可以疏通血管防止心脏病发作。
**例如,**发明葡萄榨汁机的人怎么也不会想到,约翰内斯·古腾堡会把它改造成人类历史上的第一台印刷机。
**例如,咖啡因是一种植物生物碱,在许多植物中都能够被发现,其本来目的是作为自然杀虫剂,使吞食含咖啡因植物的昆虫麻痹。但对人类来说,致死性的剂量特别大,而安全剂量则被作为了精神饮料和药物,这是对咖啡因原有功能“中枢神经兴奋剂”**的另类使用方式,但已经完全偏离了其本来的功能目的。
**例如,**羽毛让今天的鸟类可以飞行,但是鸟类进化出羽毛,最初很可能是用来协助恐龙吸引异性的——这被称为“扩展适应”(Exaptation),它是物种进化过程的“旧物改造”。
以上这些功能,并没有过剩,但当切换环境的时候,由于与环境相互作用,导致延展出了多余的扩展性。
还有一些功能,并没有多余,但其本身是过剩的,这些过剩功能(暂时没有用),就提供了更多场景和需求的适应性。
**例如,**人类的嘴巴除了吃东西,还进化出了更高端的作用(如语言交流),当然还有更令人愉悦的功能。
**例如,**很多软件的复杂功能,对个人来说都用不到(如操作系统),但却可以应对各种人群的各种的需求。
**例如,**爱美的追求,其实是为了繁衍的一个功能,但在人类社会,爱美已经可以脱离繁衍本身,成为一种精神需求,进而衍生出了庞大的经济消费市场。
综上可见,功能冗余——有多余(即意外)的扩展性,与过剩(即超出)的适应性。
第三,结构冗余。
这是为了支撑,内容冗余和功能冗余,而不得不产生的结果。
例如,穿鞋就需要结构冗余,完全正好鞋码的鞋子,很容易在不确定的场景下出现挤脚问题,而大半码的鞋子,才是真正的“正好”。
例如,组织结构、建筑结构、空间结构,它们的结构冗余——都为上层的内容与功能,提供了有力的支撑。
例如,在程序源代码中,就充满了结构冗余,这些冗余目前没有发挥作用,但却为未来的功能实现提供了一定的支撑和影响(有正面有负面)。
可见,结构冗余——其实是内容重复、功能多余、功能过剩的必然产物。
事实上,冗余的一个重要作用,就是容错性。
其原理在于,让错误发生在“冗余”之上,从而就避免了“非冗余”的错误。
**例如,**基因编码氨基酸,会出现多种编码序列(即多个密码子)对应同一种氨基酸的情况,这种编码冗余性,就可以容错突变后的编码,仍然可以对应正确的氨基酸结果。
**例如,**利用多个麦克风的阵列,从不同位置录下嘈杂会场里的演讲,就可以利用(多个麦克风记录下的)冗余信息,判断哪些是信号,哪些是噪音,从而合成出更清晰的演讲录音。
事实上,除了容错性,冗余还具有纠错性。
其原理在于,利用“冗余”来携带与校验相关的信息。
例如,对于数据编码,可以在冗余的部分增加校验数据(如奇偶校验、海明校验),以在解码的时候利用校验数据进行,数据正确性的判断。
**例如,**对于量子计算机,冗余校验更是一个必要的功能步骤,因为量子计算的结果,是一个概率,验证概率,就需要用统计数据,即:利用“冗余”操作的统计结果,来对比判断“非冗余”操作结果的正确性。
最后,地球上的“冗余之王”——就是大脑。
大脑的进化,并不是为了获得某个高级功能——就“推倒重来”,而是在原有的功能基础之上,不断积累叠加,同时也不会移除过去没有用的原始功能,那么大脑的结构——其实是充满了冗余性的。
尤其是我们的记忆,不仅会存入我们主观意识没有察觉到的数据——等待着被潜意识读取,还会保存大量的旧数据——这不是我们主动想要遗忘就可以删除的。
**例如,**我们不断回忆同一个事件、情节或画面,就能发现更多的细节信息,得到新的感受、理解和观点。
可见我们的记忆,其实是记录了很多冗余数据的,而回忆的过程,就是冗余数据重新排列组合的过程——这会得到全新的数据结构,或许这就是短时间内,我们反复回想记忆中的同一个问题,就能得到答案的原因所在。
那么显然,正是大脑的结构冗余,让大脑拥有了——防御性、成长性、扩展性、适应性、与容错性,从而可以应对环境中的各种复杂情况,最终人类成为了自然界的**“故事之王”**——不仅会说故事,其本身就是一个故事。
冗余的意义与必然
首先,冗余是随机性的结果,所以是无可避免的。
虽然在确定范围内,可以排除冗余获得**“精致”**,但一旦信息发生交换,冗余就会被注入。因此,只有不再变化或发展的事物,才能够保持不冗余的状态。
否则,一旦添加新功能,新功能就会引入新冗余,而这个新冗余,甚至还会让过去的**“精致”**的系统,也都变得冗余。
可见,大自然必然是冗余的,生命也必须是冗余的,那么人工系统,只要是有**“生命力”**的就一定会有冗余,就永远可以改进优化,如:程序系统、制作工艺等。
其次,强行完全剔除冗余,会让系统变得极其脆弱。
因为,一个高度优化的设计,很可能会有很多不理想的性质,因为结构上最优,即没有结构冗余,等同于缺少内容冗余与功能冗余,这就常常会表现出对缺陷的高度敏感性,即特别难以应对破坏性的概率事件,从而就很容易发生巨大的灾变。
**例如,**在工程建造中,高度优化的设计常常具有不稳定性,当出现不可避免的制造缺陷(或使用磨损)时,由于结构高度敏感,其承载能力将会突然变小,而出现突然的全面崩塌。
**例如,**在代码工程中也是如此,高度优化的代码结构和设计,往往对错误和新需求的容忍能力,就会极其低下,稍有问题或功能变动,就会导致系统崩坏,或需要大规模重构(及重写)。
这种没有冗余的结构,就被称为——“紧耦合”(Tight Coupling),那么在工程结构中,一个好的设计的要素就是——“松耦合”(Loosely Coupling),也称**“低耦合”**。
事实上,在生物遗传上,基因就具有巨大的结构冗余,其不仅有很多“无用”的编码,还有很多重复的编码,但就是这种结构冗余,提供了上层功能的——扩展性、适应性与容错性,而如果没这些,生物种群就会对环境变化和自身突变高度敏感,进而容易产生灭绝性的灾难。
其三,冗余既是结构,也是原料,其代表着可组合性。
冗余结构的自由组合,就可以带来创造与创新,同时它也是重建与重组的基础原料。
例如,差不多的字词,差不多的意思,差不多的表达,差不多的想法,它们之所以存在(或说没有被淘汰),就是在等待着被自由组合,从而产生差异性与多样性。
**例如,**一个语言的冗余性越小,其多义性就会越大,因为字词不冗余,它的含义就会多变,这样只有通过上下文才能明确其含义——这是用字词之间的可组合性,代替了字词本身的冗余。
**例如,**同样的积木,同样的砖块,同样的沙粒,同样的基本粒子,却可以组合出万千不同的结果。
**例如,**为什么在数学上,往往越简洁的结论,就越难以证明,甚至显而易见的公理,都不需要(无法)去证明,这就是因为这些结论自身没有冗余,即:缺少与之相关的结构关系与连接路径。
事实上,与数学结论(即定理、公式、模型)的简洁相比,其证明过程却是极其复杂的,而这个过程其实就可以看成是——利用冗余或从冗余中,寻找或自由组合出,对现实有效映射的抽象演化。
同理,创造一个**“精致好用”的产品(如iPhone、高分电影、或3A游戏),其过程是极其复杂到难以想象的,但最终产品交付给用户的时候,所有过程的复杂性**却都不可见了,只剩下简洁易懂的用户体验。
那么,这种从冗余中创造简洁的过程,其蕴含着一个重要的设计哲学,即:把复杂留给自己,把简洁留给别人——用户会因为简洁而爱上复杂,即:通过简洁体验到复杂。
而从本质角度来看冗余,我们会发现:
- 有一种差异,本质上没有区别,即:本质相同,形式不同——这就是因为不够冗余,即没有结构与原料,无法带来真正的与众不同,这属于——没有区别的差异。
- 有一种区别,看起来没有差异,即:本质不同,形式暂时相同——这就是存在冗余,即有结构与原料,在未来某个时刻,就会体现出非同凡响的形式不同,这属于——没有差异的区别。
显然,大自然强大的演化力量,就是来自于**“多样性冗余”——其遍布了“没有区别的差异”与“没有差异的区别”**。
最后,减少冗余即是局部有序。
冗余本身可以是无序的,也可以是高度有序的,但当冗余出现在一个系统时,无论这个冗余是内容冗余、功能冗余、亦或是结构冗余,它都会给系统带来可组合性,即:增加了系统的状态数,也就是更无序。
相反,如果我们从一个系统中,剔除冗余,系统的可组合性就会下降,状态数就会减少,从而变得更有序。
需要注意的是,如果从系统剔除的不是冗余,而是非冗余,就有可能会使系统崩溃散乱,变得更加无序。
那么,从“减少冗余即是局部(系统)有序”就可以看出——这其实是顺应了熵增定律的一个必然过程,因为局部越有序,就会使得整体越无序。
例如,减少的冗余——如果是物质冗余,就会被释放到环境,接着被其它事物处理,直到成为能量,最终演变成熵增无序;如果是设计冗余(或逻辑冗余、构造冗余),就会由消耗的脑力转为能量,最终演变成熵增无序。
而简洁又意味着有序,因为简洁不是内容的多少,而是条理清晰、层次分明、层层递进、娓娓道来、徐徐展开、完整清晰、逻辑自洽——这首先需要积累,然后抽象,最后化繁为简——创造有序。
所以,从冗余到简洁——就是熵增演化下的必然趋势,也就是说,在熵增的过程中,会出现减少冗余的简洁(即局部熵减),以使熵增更甚。
这么看,简洁其实并不是最终目的,而只是宇宙熵增过程的一个副产物。同理,大繁至简——繁是熵增,简是熵减——巨大的熵增,对应着极致的熵减——亦是如此。
可见,尽管我们偏爱简洁,但冗余才蕴含着巨大的力量,甚至正是冗余的力量,才支撑了我们去追求我们所偏爱的简洁。
结语
我们无法预测黑天鹅,但冗余却可以对抗黑天鹅,如果说预测是为了应对,那么拥有冗余,我们就可以不需要(或减少)预测,因为冗余提供了应对的机制和能力,如扩展性与适应性。
就如塔勒布在**《反脆弱》**中,所说:
“如果你把多余的现金存入银行(再加上储藏在地下室的贸易品,如猪肉和豆泥罐头,以及金条),你并不需要精确地知道哪些事件可能会陷你于困境。这些事件可能是一场战争、一场革命、一场地震、一次经济衰退、一场疫情、一次恐怖袭击,或者新泽西州的分裂等任何事情,但你并不需要作太多的预测。”
事实上,社会协作网络的冗余性(即“社会冗余性”),可以承受一些(甚至是很多)人和组织的破坏行为,但依然保持正常的运转并最终恢复——从局部看,冗余让一切都可以被替代替换(永远有B计划);从整体看,冗余让系统变得具有反脆弱性(越挫越强)。
然而,人类发自内心的喜欢——简洁优雅,而不喜欢——冗余繁杂,这其实是自组织系统(如生命、人类、大脑、心灵与精神)为了保持自身有序,而进化出的——对简洁有序的趋利,对冗余无序的弊害——因为只有吸收代表有序的简洁(即吸收负熵,获得熵减),才能够对抗(宇宙熵力驱使下的)自身的熵增无序。
那么,冗余的力量就在于——它提供了可组合性,让我们可以去构造局部(系统)的熵减有序,以及它顺应了熵增定律,让我们可以毫无副作用,并顺其自然地**“免费”**使用。
或许,正是**“冗余”才让一切皆有可能,而万物皆由“简洁”**构成。
换言之,世界的简洁(即可以用简洁的公式规律描述世界),是因为它本身源自简单,而它的复杂则来自其冗余的演化——别忘了,演化最擅长从简单构建复杂。
后记1:好奇心与冗余
害怕恐惧,只会让人远离和逃避,而只有不怕地去研究,才能了解和掌控。就像火与电,动物害怕远离,人类则研究控制。好奇心在这里,起到了战胜害怕恐惧的重要作用。
事实上,好奇心是一种冗余——过度奖励了对未知的探索,或从脑科学角度说,是过度奖励了对预测误差的消除——而只有足够安全,才会足够好奇,即:越安全越好奇。
所以,好奇心是安全冗余,产生的奖励冗余,来自大脑的奖励系统,属于功能冗余。
后记2:简洁与复杂
事实上,以同样复杂的模型得到更准确的预测,是等价于,以更简洁的模型得到同样准确的预测的——因为可以,通过降低复杂度来降低准确度,从而获得同样准确但更简洁的模型。
所以,在同样预测能力的情况下,更简洁就是更好——这不仅在于,应用复杂可以提高预测能力,还在于简洁意味着更少的假设依赖,这为对抗环境变化提供了强韧的准确性。
由此可见,复杂(即拥有复杂性,能更复杂地扩充模型)——可以提高预测能力,简洁(即拥有简洁性,能更简洁地简化模型)——可以保持预测能力,而简洁可以蕴含着复杂,即:把复杂压缩成简洁,也就是把复杂性封装在简洁性的背后,或说隐藏在复杂性背后的是简洁性。
那么,如何做到——把复杂留给自己,把简洁留给别人——把复杂压缩成简洁?
这就是,用复杂结构存储简洁模型,显然人脑就是一个典型,而这种冗余模式的结果就是——人类智能,即:简洁嵌套着复杂。
后记3:简洁与简单
简洁,是有序且没有冗余,即:简洁 = 有序 + 无冗余;简单,是容易且没有复杂,即:简单 = 容易 + 不复杂。
可见,简单不一定有序(如简单又混乱),也不一定没有冗余(如简单又多余),所以简单不一定简洁——当然,简洁也不一定简单(如简洁优雅却内涵丰富的公式)。
不过,简洁可以体现出简单(如相对容易会降低复杂),简单也可以体现出简洁(如相对有序会降低冗余)。
而复杂到一定程度,必然会出现冗余,否则复杂会因为极其脆弱而难以存在,即:生存周期非常短暂,大部分时间都处于不存在状态。
此时,“复杂冗余”一定不会简单,但可以通过**“压缩”和“封装”变得有序且消除冗余,从获得“简洁却不简单”**。
所以,简洁和简单的本质不同,就在于——对复杂性及其冗余性进行**“压缩封装”**的能力,这也就是“简洁人生”与“简单人生”的不同之处,即:前者可以解压出复杂,后者除了简单就空无一物。