生物进化把信息获取速度拉满的秘密
生物进化说白了就是一个巨大的信息收集游戏。地球上的生命,从看不见的细菌到几十吨重的鲸鱼,全都是靠随机突变和自然选择这两个笨办法,花了三十多亿年攒出来的。
这个过程中最核心的问题就是:怎么用最快的速度把“好基因”这个信息从少数个体扩散到整个群体?答案就是有性生殖。它就像一个信息高速公路,能让好基因在群体里飞速传播,比无性生殖那种单车道快出好几个数量级。
这篇文章就是要拆解这个信息获取的加速器到底是怎么工作的,以及它和我们人类搞技术发明有多像。
基因突变是个瞎猫碰死耗子的买卖
生命要想进化,首先得有变化。对最简单的单细胞生物来说,生孩子就是细胞一分为二,娃的基因和妈基本一样。但拷贝过程中难免会出错,这就是基因突变。某个基因一不小心从0变成了1,或者从1变成了0。大多数突变都没啥用,甚至有害。但万一瞎猫碰上死耗子,这个突变能让细菌抵抗抗生素,那这个细菌就比别人活得更久,生更多孩子。
我们可以搭个简单的数字模型来看看这个过程。
假设有100个生物,每个都有一串200位长的基因,每位要么是0要么是1。1代表好基因,0代表坏基因。一开始大家是随机分配的,大概各占一半。每一代每个生物生两个娃,娃拷贝爹妈的基因,但每一位都有千分之二的概率发生突变,0变1或者1变0。生完一大堆娃之后,我们只挑最健康的100个留下来,健康度就是基因里1的总数。这个模型虽然简化了现实,但足够展示进化的核心动力。
跑这个模拟就会发现,群体里好基因的比例会一代比一代高。健康的娃把不健康的挤掉了。如果突变率合适,最后整个群体可能全是1,达到最高健康度200。但也有可能卡在某个低于200的水平上,上不去了。
无性繁殖越往上爬越费劲
无性繁殖有个死穴。当群体的平均健康度已经超过一半了,也就是1比0多的时候,随机突变大概率是帮倒忙。因为随便改一位,把1变成0的可能性比把0变成1的可能性更大。所以爹妈如果是平均水平以上,生出来的娃平均来说反而更差。
当然因为突变是随机的,总有一些娃运气好,突变的方向是对的,健康度比爹妈高。自然选择把这些最健康的娃挑出来当下一代,平均健康度就能慢慢往上挪。但每次繁殖时突变带来的健康度下降,就像开车时一直踩着刹车,严重拖慢了前进的速度。
如果把参数调一下,比如基因长度变成1000位,突变率提高到百分之二,这个刹车效果就看得更清楚了。在第50代的时候,看看整个群体的健康度分布。然后看这帮人生娃之后,娃还没被筛选之前的健康度分布。因为突变,娃的平均健康度明显比爹妈那代低。但总有一小撮幸运儿,健康度比爹妈都高。最后把娃里面最优秀的一半挑出来,平均健康度才勉强超过上一代。每前进一步都特别费劲。
有性繁殖是信息共享的加速器
现在我们换个玩法,看看有性繁殖。同样100个生物,同样200位基因,同样是0和1。但这次每个娃都有爹和妈两个来源。每一代随机把生物两两配对,每对生四个娃。娃的每一位基因,有百分之五十的概率来自爹,百分之五十来自妈。然后还是挑最健康的100个娃进入下一代。这个模拟里我们把突变关掉,基因变化完全靠爹妈的基因重新洗牌。
结果让人眼前一亮。有性繁殖的群体同样能达到最高健康度200,但速度快得惊人。无性繁殖要200代才能爬到平均健康度187,有性繁殖只要33代就满级了。
关键区别在哪?有性繁殖在引入基因变化的同时,不会拉低平均健康度。因为娃是爹妈基因的随机组合,平均来说娃的健康度和爹妈那代是一样的。有的娃运气好组合到了更多好基因,健康度更高。有的娃运气差组合到了更多坏基因,健康度更低。但自然选择只挑最健康的那批娃。这批娃是从一个平均值很高的分布里挑出来的,起点就比无性繁殖高了一大截,所以每代进步的速度自然快得多。
数学告诉你速度差了多少个量级
这背后有数学撑腰。我直接说结论,因为那些公式也是我看别人推出来的。无性繁殖的群体,健康度增长的速率大概是1除以8倍的某个值。这个值跟群体当前的好基因比例有关。一开始比例低的时候增长还能快点,但很快就慢下来了。接近满级的时候,大概平均每四代才能把一个坏基因变成好基因。
但有性繁殖就猛了。健康度增长速率跟基因长度的平方根成正比。基因越长,优势越明显。200位基因长度,有性繁殖的速度优势已经很大了。如果基因长度是几千几万,那优势就是指数级的差距。
血脉竞争和克隆干扰
换个角度理解有性繁殖为啥这么牛,可以看看血脉传承。无性繁殖群体里,某个个体碰巧有了一个超棒的新突变。因为基因只能从爹妈到娃单线传递,这个好基因想扩散到整个群体,除非有其他个体也独立产生了同样的突变,否则就只能靠这个幸运儿的后代把别人的后代全部淘汰掉。
换句话说,整个群体最后会变成最初某一个特定个体的纯后代。这个过程中,其他所有个体的血脉都断绝了,它们身上可能携带的别的好突变也一起消失了。这就叫克隆干扰。两个不同的好突变如果同时出现在不同个体身上,它们没法合并,只能互相竞争,最后只有一个能胜出,另一个就永远丢失了。
有性繁殖就不一样了。因为娃有两个爹妈,一个个体往上数一代有两个祖先,两代有四个,三代有八个。好突变可以通过交配快速在不同血脉之间流动和合并。两个分别出现在不同个体身上的好突变,可以通过它们后代的交配,最终出现在同一个娃身上,强强联合。
模拟结果也支持这一点。无性繁殖的群体,大概几代之后所有个体就都是同一个祖先的后代了。而且这个过程会反复发生,每一轮血脉清零之后,新的好突变再重新开始竞争。有性繁殖的群体呢,34代之后,最初100个个体里,有将近四分之三的个体的基因依然保留在群体里,大家共享各自的优秀基因。
这和技术发明的逻辑一模一样
前面我们聊过经济学家布莱恩·阿瑟做的技术进化模拟。他从最基础的逻辑门开始,随机组合出更复杂的电路。一旦找到了一个三输入与门,就拿它当零件去拼四输入与门,再拼五输入与门。这种模块化的方法,把搜索空间从天文数字缩小到了可以操作的范围。
这就像开密码锁。一个五位数的密码锁,每位有100种可能,总共就是100的5次方,一百亿种组合。一个一个试要试到猴年马月。但如果你是个开锁高手,每拨对一位就能听到咔哒一声,那问题就简单了。你只需要每位最多试100次,总共最多试500次就能打开。
模块化就是这样。它让你能锁定某个子功能是否正确,然后把它固化下来,继续往上搭。有性生殖干的也是类似的事。它让每个基因的健康度可以相对独立地被检验。把寻找200位完美基因组合这个大问题,拆成了200个寻找每一位最佳基因的小问题。
再拿技术搜索来说,我们算过信息获取的速率。尝试68个与非门凑出一个8位加法器,如果全靠瞎蒙,每次尝试获得的信息不到百万分之一个比特。但如果能逐个门验证,每次尝试获得的信息量是前者的三千倍。有性繁殖相对于无性繁殖,信息获取速率的提升也是类似的量级。
别忘了一个重要前提和现实中的例外
上面所有分析都建立在一个重要假设上:每个基因对健康的贡献是独立的。也就是第27号基因好不好用,跟第145号基因是啥没关系。但在现实中,基因之间常常有复杂的相互作用。一个基因的效果可能取决于你身上有没有另一个基因。这种情况下,进化搜索会变得复杂得多。圣塔菲研究所的斯图尔特·考夫曼用NK模型研究过这类问题,那又是另一个层次的故事了。
另外现实世界里,很多无性繁殖的生物,比如细菌,也有办法绕过这个限制。它们广泛进行水平基因转移,说白了就是不同细菌之间直接交换基因片段。抗生素耐药性基因主要就是靠这种方式扩散的。有些研究估计,细菌基因组里百分之二十到八十的基因都曾经被水平转移过。这算是无性繁殖生物偷学来的有性繁殖的好处。
两种八竿子打不着的搜索过程,在信息获取这个底层逻辑上,竟然用了同一个套路:
- 人类搞技术创新,把东西拆成模块,验证子功能,然后组合放大。
- 生物进化在另一个完全不同的领域,通过基因重组,有性生殖和水平基因转移,达到了同样的效果。