2月份,美国麻省理工大学在顶级生物医学杂志Cell发表了题为“一种发现抗生素的深度学习方法” (A Deep Learning Approach to Antibiotic Discovery)的论文。这个结果是该团队把AI成功运用到生物工程的最新研究成果。笔者仔细阅读了论文,给大家分析一下论文背后的AI原理。
不断发现新型抗生素的意义是重大的。首先抗生素的发明为人类战胜疾病立下赫赫战功。但是随着时间的推移和各种抗生素的广泛使用甚至是滥用,细菌也会逐渐进化到具有抗药性。其结果就是已经发现的抗生素效果会逐渐下降。 控制抗生素的滥用是一个节流的方法。另一方面,不断发现新型的抗生素是开源的方法。所谓道高一尺,魔高一丈,唯有不断研究才能为人类战胜源源不断的有害细菌未雨绸缪。
传统的抗生素发现过程耗时又耗力,因此麻省理工的最新论文也许为AI在生物工程的运用找到了一个很好的示范作用。论文中,运用AI发现抗生素的大概过程如下:
- 针对大肠杆菌 (E. coli)选取了2300多个分子化合物作为训练数据,这些化合物事先已经知道是否具有大肠杆菌抑制性。
- 利用MPNN模型抽取分子特征向量,结合深度学习模型和其他优化方式,用训练数据得到了预测化合物是否具抑制大肠杆菌特性的模型。
- 用训练好的模型在一个有6000多种化合物的库中(新数据)预测每一种化合物的大肠杆菌抑制性,选取预测效果好的小批量化合物,经过后期实验,最终得到了名为Halicin (MIT 团队重新命名)的抗菌素。
- 用Halicin对老鼠进行实验,证明了该抗菌素的广谱疗效。
- 进一步用训练好的模型,在一个更大的化合物分子库中挑选可能具有大肠杆菌抑制性的分子(测试多达一亿种化合物),经过进一步分析,找到了8种和已知抗菌素完全不一样的潜在抗菌素。
作为数据科学工作者,笔者认为论文提到的AI方法本身倒是很好理解。该论文用到的深度学习训练方式在特征向量得到以后毕竟标准。但和任何行业一样,真正最难的地方在于如何理解行业特点,很快获得行业有关专业知识,从而找到AI运用的切入点。对于该论文涉及的抗菌素预测,本质上最有意义的在于如何挑选模型的特征。更准确的说,如何为化学分子找到一个可以量化的表现形式。这个是从数据科学的角度来看,我们应该首先关注的问题。
答案在于Message Passing Neural Networks model 或MPNN (可翻译为消息传播神经元网络),于2017年由Gilmer等人在量子化学运用上提出(“Neural Message Passing for Quantum Chemistry”)。该MIT论文团队在运用的是一个MPNN基础上的变化版本,称为Directed Message Passing Neural Networks model 或D-MPNN。下面我们主要介绍MPNN模型, 因为DMPNN原理上也差不多。MPNN模型的主要贡献是把用图论表示的化学分子转化为一个数字的特征向量。
首先化学分子中的每个原子可以表示为图中一个节点(node),原子之间的作用力可以用节点之间的边(edge)表示。这样就把化学分子可以用计算机中的图论来表示(Graph theory)。比如下面的示意图,是关于多巴胺分子(大脑中令我们快乐的物质)的表达方法。
上图中多巴胺的化学分子式表达,可以用节点和线的方式更加直白的表达出来。同时节点可以携带不同的信息从而表达不同的原子符号。而edge(边)也可以携带不同的信息,从而表达不同的作用力方式。
2.
把化学分子用计算机图论中的图表示出来后为我们量化的分析分子打好了基础。MPNN模型(消息传播神经元网络模型)的中心思想是:假如我们用初始特征向量分表表达不同的节点和不同的边,可以通过消息传播的迭代方式找到节点最终稳定的特征向量表达方式。这个和谷歌最初用来计算网页重要性的方法有点类似(PageRank算法)。举一个形象的例子,假设有很多大大小小的水坑(类似图中的节点),一部分水坑之间有沟渠相连(类似图中的边)。这个时候,我们随机的在不同的水坑中放入不同的水量,因为沟渠相通,这些水便会自动通过沟渠流入不同的坑中,最终实现各个水坑之间的水量达到一个平衡。
MPNN的消息传播迭代方式就是一种取得最终平衡的方法。假设节点(node) v的初始特征向量为h_v, 和节点v相关的消息向量为m_v。那么MPNN经过t个步骤迭代,每个步骤中h_v和m_v随之改变一次,根据下列的迭代公式:
上式中,消息向量的更新方程M和节点向量的更新方程U可以根据情况设定,一般都不会太复杂。经过固定步骤比如T步骤以后,每个节点对应的特征向量可以假设趋于平衡不再变化。
有了每个节点的最终稳定的特征向量,整个化学分子的特征向量可以简单的把各个节点向量相加起来,从而得到表达分子的最终的数字向量。
3.
那么如何寻找node和edge的初始特征向量呢?这个向量显然要有明显的化学和物理意义,经过消息传播平衡以后才可能很好的表达一个化学分子的性质。 从而在后面的机器学习训练中发挥应有的作用。
这里我们给出相关的特征设计,对于行业外的数据科学工作者可能有很好的借鉴意义。
下表是用来表示原子的节点初始特征向量每个组成部分化学意义,和每个部分所站向量的位数。
特征 | 描述 | 所占向量位数大小 |
原子类型 (atom type) | 碳原子,氧原子等类型 | 100位数的0/1向量,可表示100种不同原子 |
化学键个数( number of bonds) | 该节点原子参与的化学键个数 | 6位数的0/1向量,可表示6中不同化学键 |
形式电荷( formal charge) | 原子的整数形式电核 | 5位数的0/1向量,可以表示5种电荷 |
原子手性 (chirality) | CW,CCW, 未指定,或其他 | 4位数的0/1向量 |
绑定的氢原子个数 | 原子绑定的氢原子荷属 | 5位数的0/1向量 |
原子轨道混成(hybridization ) | sp, sp2, sp3, sp3d, 或者sp3d2 | 5位数的0/1向量 |
芳香性 (aromaticity) | 原子是否是芳香烃一部分 | 1位数的0/1向量 |
原子质量 (atom mass) | 原子直调除以100 | 1位数自然是,数量级归一化到0和1之间 |
可以看出,表示原子的初始特征向量大部分是0或者1的二进制向量(除原子质量外),总共长度是127的位数。
与此对应,下表是用来表示消息向量涉及到的edge(边)的初始特征向量各组成部分化学意义。
特征 | 描述 | 所占向量位数大小 |
化学键类型 (bond type) | 单键,双键,三键,或者芳香烃 | 4位数的0/1向量 |
共轭性 (conjugated) | 化学键是否共轭 | 1位数的0/1向量 |
在环中 (in ring) | 化学键是否是一个环的一部分 | 1位数的0/1向量 |
立体性(stereo) | 无,任意,E, Z, cis 或 trans | 6位数的0/1向量 |
上表中可以看出,用来表示edge的初始特征向量完全是0或者1的二进制向量,总长度为12位数。
更多有趣和专业的人工智能相关文章,微信搜索 : robot-learner , 或扫码