从计算机视角看生命体 - 自动程序与生物芯片
在人工智能领域探索了很久之后,也受到最近的几篇论文的启发,决定写这篇文章,想了很久不知道从哪里开始,因为要阐述清楚生命科学的一些内容也是一件很难的事情,包含很多科目,如:细胞生物学,病毒学,基因工程,本人已经忘了太多,怕误人子弟。不管是生命科学还是人工智能,我想本质是一样的都是在研究生命与智能,也在研究我们自己,我们是谁,从何而来,去往哪里。
“不识庐山真面目,只缘身在此山中” - 苏轼
“这是一个我们能够以科学的方法真正理解生命的真相与本质的时代,这在以前是不可能的事情,哲学解决不了这些问题” – 笔者
概述
人类只是地球生命树上的一支,我们的演化遵循和其他物种相同的规律
在人工智能领域探索了很久之后,也受到最近的几篇论文的启发,决定写这篇文章,想了很久不知道从哪里开始,因为要阐述清楚生命科学的一些内容也是一件很难的事情,包含很多科目,如:细胞生物学,病毒学,基因工程,本人已经忘了太多,怕误人子弟。不管是生命科学还是人工智能,我想本质是一样的都是在研究生命与智能,也在研究我们自己,我们是谁,从何而来,去往哪里。
生命科学系有一门课叫神经生物学,神经生物学主要是研究神经系统,神经系统里面有一个很重要的组成叫大脑,其实也是研究生命智能或者生物智能。说的清楚点,现存的最高级的智能形式,即所谓的强人工智能,其实本身存在,那就是我们自己 - 人类。神经生物学研究的方式和人工智能学科研究的不同是:神经生物学是逆向工程,而人工智能是正向工程。在计算机领域也有一门课叫逆向工程,比如我们经常用的绿化版软件,其实就是反编译别人的软件,篡改授权部分的内容,达到免费使用的目的。个人觉得逆向工程其实是很难的,比如我们常见的计算机CPU,仅仅通过用显微镜查看CPU的结构是无法得出上层软件到底在干什么的,并不是说结构没有用,而是我们需要知道原理,至上而下的原理更加重要的,就像图灵机原理相对于现代计算机,所以目前来说神经生物学在人工智能上的影响没有那么大,主要作为参考
这篇文章主要还是以计算机的视角来阐述生命体内部的运行,主要是描述基因层面的原理
病毒、细胞与编译系统
要说到这个世界上存在的最小生命体是什么,其实我们都不陌生,且让人闻之恐惧,即我们经常听到的病毒(Virus),如最近的新冠肺炎(Coronavirus),还有比较知名的病毒如:艾滋病(HIV),非典(SARS),埃博拉(Ebola),病毒的大小约为17~300纳米(nm)。为什么一个小小的病毒会产生如此大的威力?其实说的简单些就是我们身体细胞层面的bug,我们的细胞并不能验证每一段DNA或RNA编码序列是否属于自己而直接解码转录,生产了一些根本不属于自己的蛋白质,即病毒蛋白质,从而能让病毒在细胞内大量的复制直到细胞破裂崩溃。说到这里,有人可能会疑惑,为什么我们打了疫苗后能抵抗该疫苗对应的病毒呢?简单来说对抗病毒这件事情主要是细胞水平的,并不是细胞自己把病毒清除了,而是其他免疫细胞,如B细胞和T细胞,通过识别被感染细胞,清除感染细胞和病毒来完成的
病毒的构成比较简单,如核心(核酸:DNA or RNA),衣壳(多肽),包膜(蛋白质,脂质,糖),病毒这种生命体形式,是不能够独立生存与繁殖(复制)的,必须要依附于宿主细胞,因为病毒并不具有核酸复制和蛋白翻译的功能单元,可以这么说病毒就相当于一串代码,并没有编译器编译它,也没有机器运行它,而细胞就是这样一个功能比较完整的机器。我们甚至可以大胆假设病毒可能就是细胞里面的(以RNA病毒为例)mRNA不小心变异后形成的,因为在mRNA到蛋白质这个翻译过程都是几乎完全一样的,没有理由病毒起源于细胞外部,甚至癌细胞和病毒的形成原因也可能是同源的,这个可能是细胞的bug,我甚至怀疑像蝙蝠这种动物就是病毒的合成机器,因为体温过高导致DNA或RNA损伤,而损伤的核酸在机缘巧合下可能被误翻译为病毒,即便它的核酸修复能力高
我们可以注意到不管病毒也好,细胞也好,都有相同的构成部分即核酸,或者叫脱氧核糖核酸(DNA)和核糖核酸(RNA),说到核酸其实我们高中生物学就已经学习了,组成核酸的碱基有5种,即腺嘌呤(A) 鸟嘌呤(G) 胞嘧啶(C) 胸腺嘧啶(T)和尿嘧啶(U),而 T 是DNA的组成成分,U 是RNA的组成成分,从基因编码来说二者是等价的,我们知道由碱基构成的密码子一共有64种,这64种密码子如下,密码子可能编码氨基酸也可能是启动密码子或者终止密码子
到这里大家对核酸应该有所了解了,假设我们给定一串序列,如 GUGGCUAAUCAAUGA 那么我们如何翻译这串序列就非常的容易了,我们甚至可以写一个映射函数,自动的翻译。到这里就和我们的程序非常像了,比如我写一个臭名昭著的hello world程序:
print 'hello world! '
那么编译器如何翻译这段python代码呢,其实我们可以自己写一个映射函数,print对应的是系统的打印操作,’hello world! ‘ 是一串string数据,结果如下:
>>> print 'hello world! '
hello world!
>>>
在不同的编程语言下,这段代码的输出可以非常的不同,你甚至可以自己写一个编译器编译这段代码,比如我们把这段话,输出为: !dlrow olleh,这里其实是想说明一个问题,就是符号是什么并不重要,符号能表示任意的操作或数据,关键是编译器如何去翻译这些符号,这个才是重要的,从另一种方面来说符号的意义取决于编译器,而不是符号本身
返回来,密码子也是一样的道理,密码子如何被我们的细胞里面的编译器(t-RNA和合成酶等构成的系统)翻译(转录),并不取决于基因序列,而是取决于编译器,所以某种程度来说ATC也好ABC也好,都无所谓,他们都可以表示同一种模式,我们只是用相同的符号来表示同一种模式,这种模式如何被翻译为氨基酸其实是取决于编译器,因为生命的同源问题,我们才会存在这种规则的映射表或者可以叫协议
所以到这里,我们会发现不管程序也好,基因翻译也好都遵循同样的模式,无非就是在基因翻译中,密码子不但被翻译为了氨基酸,整个氨基酸序列还会折叠为3维的空间结构,形成我们所谓的功能蛋白,所以这种过程和程序过程有什么本质的不同吗?
到这里,基本上在细胞内部的过程基本表达的差不多了,我相信大家有自己的见解
硬件描述语言
在生命体中我们很难将硬件与软件分离,即硬件与执行程序分离,大多数时候程序与硬件是绑定的,我们可以叫硬件程序。以DNA为例,它本身是编码序列即软件,但是它自己又是实体硬件的,这和现代计算机构成很不相同
在这里我们需要谈一个在芯片设计中所使用的非常重要的一个东西叫:硬件描述语言( Hardware Description Language ,HDL),如Verilog HDL,VHDL都是目前常用的硬件描述语言。顾名思义,硬件描述即用软件逻辑来描述硬件结构,如加法器,我们可以用HDL做逻辑功能描述,如下:
当然,硬件描述只是第一部分电路设计的内容,后面的仿真验证,芯片制造等等,其实也是很复杂的:
DNA or RNA很像我们现在在芯片设计中所使用的硬件描述语言( Hardware Description Language ,HDL),DNA编码了单个生命体的身体构成及演化方法,以(鸟类)鸡为例,鸡蛋其实就是我们的芯片生产工厂,而DNA已经设计好了整个芯片的硬件结构,在孵化中腿应该是什么样,翅膀是什么样子,头,眼睛,甚至大脑的回路,都可以按照DNA的设计按部就班的完成,所以我们会发现我们现在所谓的高科技产业其实在鸡蛋中就存在,只是我们没有这样去理解,而且鸡蛋本身完成孵化的过程是分子生化反应,是高精度的nm级别的,而且是完全自动化的,只需要适当的温度就可以自动化的完成,可以想象如果芯片的整个制造过程是完全自动化的会是什么样,这个就是生命的复杂之处,你很难想象一个鸡蛋里面蕴藏着整个完整的计算机产业链,所以我们完全可以将生命体描述为生物芯片
值得说的是通常我们将DNA序列分类为编码序列和非编码序列。编码序列很简单,即我们所说的能翻译蛋白质的序列,或者说该DNA部分序列能转录为mRNA然后被翻译为蛋白质,所以某种程度说编码序列很容易研究,只需要比对DNA和mRNA序列的就能找到DNA中的编码序列部分。而非编码序列呢?我们通常认为的“垃圾DNA”在人类基因组中占比高达98%,我们知道人身上的各个器官几乎没有哪个是多余的,那么DNA也是一样的道理,而通过对小鼠的研究,研究人员发现基因组中超过4000个小的区域可能是一个被称为增强剂的非编码DNA类型,这种基因具有增强表达的作用,这些基因区域在老鼠的胚胎发育中非常活跃。这里重点标记“胚胎发育”,什么意思?和我们上面的论述一致,很多基因其实是用来作整个系统的设计或者叫结构设计的,他们只在胚胎发育时候才会被使用,其实说的简单些就是生物的硬件编程语言序列,这些序列控制着动物的身体外部结构设计,器官设计,脸长什么样[5-6],大脑中的回路如何设计,比如眼睛如何连接到大脑中的视觉中枢,大脑中的视觉中枢如何连接到海马体,如何连接小脑做运动控制,为什么同样是动物,猩猩和人类虽然DNA差异很小但长的很不同,这些都是所谓的结构设计,但是其实个人理解猩猩和人类在结构设计上的差异非常小,因为这二者之间的拓扑结构差异非常小,个人认为所谓的非编码序列其实是非常复杂的,如果能被研究透彻,那么人类离自主设计任何生命体也就不远了,当然这个是非常困难的,毕竟是逆向工程

细胞构成的宏观系统
一般来说细胞内DNA序列越长,那么这个细胞所组成的生物越复杂,就像单片机和普通计算机一样,功能的复杂性不一样,尤其在软件上,每一种硬件所能承受的软件复杂性不一样
在动物体中不同的细胞有不同的功能,同一个体其实不同类型的细胞中DNA几乎是完全一样的,除了不小心被变异了外,为什么同样的DNA会产生不同功能的细胞呢?如:肌肉细胞,神经细胞,肝脏细胞,肺细胞… 这个就是经常说的细胞分化(Cell Differentiation),其实细胞分化和计算机中的函数调用是一样的道理,比如在操作系统中集成了非常多基础的函数,我们自己写的程序调用不同的模块和函数,最后就会形成宏观上功能不同的程序,那么所谓的细胞分化,其实就是开启或关闭DNA中的不同模块来实现的,所以从这个层面说,细胞构成的宏观系统本质还是不同的函数调用得到的,这样一个系统如何协调的运行是个非常复杂的工程,比如神经生物学经常研究的神经系统虽然只占身体的部分,但是也是非常复杂,尤其在大脑的部分,我们会发现神经细胞所构成的各个模块功能都不完全相同,甚至很不相同。关于大脑模块的模拟可以参考本人的另一篇博客here
生命的闭环
后面再写。。。
生存与繁殖 - 生命体的基础目标系统(强化学习?)
感觉表达的比较乱,在生物学方面与计算机上融合不太协调,后面可能会进一步修改和扩充,如有问题和建议欢迎指出
参考
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐



所有评论(0)