适应度景观中的跋涉
基因的表现型,或者说个体的生存适应度,可以用三维地图上的山脉来表示,山峰越高表示适应度越高。地图的横竖坐标以基因的连续变化来排列。这个地图,被称为适应度景观,它是我们思考演化问题,以及有多个复杂因素的最优化问题的一个有力工具。
适应度景观(Fitness Landscape)的概念由美国生物学家 休厄尔·赖特 在1932年提出,从那时开始,这个形象有效的模型已经成了所有进化生物学家的标配工具,《自私的基因》作者理查德.道金斯称之为 不可能之山。如今,它也在人工智能、复杂问题求解等各个领域继续发挥作用,我们将一再受益于这个模型。
前面提过,基因 本质上是具备遗传效应的DNA上的一串字符。人类大约有两万个基因,一共30亿个字符。而最简单的病毒大概只有几个到几百个基因,每个基因大约有几千到几十万个字符。
假设有个简单的生物 - X病毒,它有100个基因,每个基因有100个字符。因为每个字符有四种可选的碱基(A、C,G、T),所以每个基因理论上有 \(4^{100}\) 个变种,这个数大约是 \(1.6 * 10^{60}\)。那么100个基因的总共的排列方式大约是\(100! * 1.6 * 10^{60}\) ,这是一个天文数字,已经大大超过了宇宙中的原子总数。这个数表示X病毒的基因的所有可能之变异及其组合的总数。为了方便,我们用一个代号 \(K\) 来表示它。
\(K\)中的每一个点表示X病毒的一种可能的基因组合,一般称之为 基因型。我们将所有这些点,以某种连续的方式平铺在一个二维平面上。从这个平面上的点A可以走到它的相邻点B,这中间只需要基因型的一次变异,也就是其中任意一个字符的改变,使它从基因型A切换到了基因型B。这样,此平面上所有的点都无缝连续起来了。我们称这个平面为 \(K\)平面。
在自然选择过程中,生物都需要应对层出不穷的生存问题,X病毒也不例外。它已经被人类发明的光谱抗病毒药物Y疫苗追杀好多世代了,如果再不变异出新的抗药基因,X病毒就会灭绝。
X病毒的好多个基因型能够对抗Y疫苗,其中有的可以生成诱饵抢先与抗生素结合,有的修改了自己的靶点的结构使Y疫苗无法识别,有的还能够提高自己的分裂繁殖能力,如此等等。这些基因型中有的抗药性很好,有的一般般,有的还更害怕Y疫苗,只有很少数的基因型是极其有效的。
我们将X病毒的每个基因型的抵抗Y疫苗的有效性,作为该点的海拔高度。这样,我们就可以基于前面的 \(K\)平面,画出一个三维立体图,它像是一片有山峰与洼地的地形图。那些不太有效的基因型对应低矮的山麓,害怕Y疫苗的基因型对应着下陷的洼地,少数非常有效的基因型则是山峰。由于相邻的基因型之间只有一个字符的差别,它对于抗药性的改变非常小,所有我们看到地形是大致平滑连续的。这个地形图就是X病毒抵抗Y疫苗的适应度景观,X病毒突变到具备抗药性的过程,可以看作在这个图中爬山。
为什么这个地形图中有多座山峰?这个问题是深刻的。
一般而言,简单问题往往是由一个变量决定的,这样的问题可以明确地得到最优解,此时我们看到的地形图中会只有一个主峰,如同平原上的富士山一样。比如这个问题就是简单问题,一个班上有40名同学,请指出谁最高。但是那些复杂问题往往不是由一个变量决定,而且这些变量之间还有互相关联,这些关联还是非线性的。这样的复杂问题往往有多个可能的次优解,而且也很难判断谁是最优解。比如,这40名同学中谁最适合当班长?其中,至少一名通情达理成绩又好的乖巧的小个子女生,还有一名性格果断有执行力的高个子男生,都可能是次优解。还可能是班上不起眼的一个同学,他是校长大人的亲孙子。此时选择就很难了。
再例如,俾格米人和荷兰人之间的身高差别很大。身高属于多基因变异,它不是由个别基因决定的,而是同时受到数百个基因的共同作用。
同样的,X病毒的抗药性就属于这样的复杂问题,由于它关系到多个基因,它的地形图中会有多个山峰。
现在,某个X病毒的个体 \(x\) 位于下图中的A点。如果它不能通过自己世代交替中的变异到爬到图中H点的高峰上,就会逐渐断子绝孙。为了简单,后面 \(x\) 是指它及其它所有后代。
大自然是严厉的,即使万分之一的适应性改变,在多个世代之后,都会对物种后代的数量产生巨大影响。所以在自然选择的压力下 \(x\) 的每一步都不能导致其海拔高度降低,也就是说 \(x\)必须走上坡路。自然选择的压力大小,可以直观想象为 \(x\) 的每一步必须向上跨越的高度差。
从A点出发,下面紧邻着就有一个洼地,如果走到这个洼地, \(x\) 马上就会被Y疫苗吞没。它最有可能的情况是沿着绿色路线走到B点,这是一个小高峰。但是 \(x\) 到这里后,就没法再走了,因为B周围的点都是海拔较低的点。这样 \(x\) 就卡在B点动弹不得,它要断子绝孙了。