机器学习遇见生物学:详解蛋白质折叠预测中的算法

889 阅读20分钟

机器之心原创,作者:王子嘉,编辑:H4O。

蛋白质折叠问题耗费巨大,而使用机器学习或许能够更为高效、准确地解决这一难题。本文介绍了目前这一领域遇到的问题,以及机器学习怎样帮助解决的具体算法。

蛋白质折叠问题一直是一个耗费巨大的难题,但是这个难题的解决又对人类具有巨大的意义。于是各个研究机构都开始寻找蛋白质折叠问题的不同解,希望找到一种高效、准确的方式来解决这一难题。

幸运的是,在今年的 CASP(Critical Assessment of Techniques for Protein Structure Prediction)上,DeepMind 在今年找到了这个问题的其中一个「机器学习解」——AlphaFold,AlphaFold 的提出很好的解决了这一难题(在今年的 CASP 中获得了第一名),同时又将 AI 所涉及的领域扩展到了生物科学。今天这篇文章就主要介绍机器学习是如何在生物科学中大放异彩的。本文首先介绍了蛋白质以及蛋白质领域目前面对的难题,然后介绍了机器学习能在这一领域做出什么贡献,最后对这一领域的问题及未来进行了展望。

什么是蛋白质

蛋白质在我们的生命活动中扮演了极其重要的角色。几乎我们身体的各项动作——收缩肌肉,感应光线或将食物转化为能量,都可以归功于一种或多种蛋白质的配合。当你正在读这篇文章的时候,你血液里的血红蛋白正在将氧气运送到肌肉中,转运蛋白正在为神经元运送钠以产生动作电位,而你之所以能读懂这句话,眼睛里的感光蛋白功不可没。

不止这些「土生土长」的蛋白质在发挥作用,人工开发的蛋白质也已经被拼接到细菌基因组中以产生胰岛素,或是分解塑料废物来生产洗衣粉。所以,了解如何开发合适的人工蛋白质可以帮助我们提高生产效率,并开发具有全新功能的蛋白质。中学时期,我们其实已经对蛋白质有过不深的了解了。但是可能对很多人来说,高中已经很久远了,为了方便大家更好的理解本文,本节就对本文所需的蛋白质知识进行简要介绍。

一般来说,总共有 20 种氨基酸,而蛋白质则是一条氨基酸链,它通过共价键将氨基酸连在一起。我们可以把氨基酸看作英文中的字母,而这个「字母」使我们可以将蛋白质表示为一系列离散的标记,就像我们英语句子一样。这种离散的顺序表示形式被称为蛋白质的一级结构(Primary structure)。

然而,在细胞中,蛋白质是以三维结构存在的。由于蛋白质的功能与这个结构息息相关,因此了解这种 3D 结构极其重要。蛋白质的局部几何结构称为二级结构(Secondary structure),这个结构也相应的决定了这一部分的特征。最后,蛋白质的整体几何结构称为三级结构(Tertiary structure),它决定了蛋白质的整体特征。这些结构都是由 DNA 中的信息编码的。

图 1: 蛋白质的三种表达形式(图源:https://bair.berkeley.edu/blog/2019/11/04/proteins/)

蛋白质折叠问题

如上文所说,各种蛋白质的作用都取决于其独特的 3D 结构。例如,构成我们免疫系统的抗体蛋白为「Y 形」,类似于独特的钩子,通过锁定病毒和细菌,这种蛋白能够检测并标记致病微生物以对这些病毒进行消灭。而胶原蛋白的形状像绳索,可以在软骨、韧带、骨头和皮肤之间传递张力。

其他类型的蛋白质也有很多,比如 Cas9,它以 CRISPR 序列为指导,作用类似于见到,可以剪切和粘贴 DNA 片段;抗冻蛋白,其 3D 结构使它们能够与冰晶结合并防止生物冻结;核糖体的功能则类似于程序化的装配线,可帮助自身构建蛋白质。

因此,确定蛋白质的 3D 结构是非常重要的。如前文所述,3D 结构的确定,可以让人们对蛋白质在体内的作用有更深入的了解,这样科学家就能更有针对性地设计出有效的新疗法。同时,对于一些由于蛋白质错误折叠而引起的疾病(例如阿尔茨海默氏症,帕金森氏症,亨廷顿氏症和囊性纤维化等),了解了蛋白质正确的 3D 结构可以大大方便医生对这些疾病的诊断和治疗。

不仅如此,随着越来越多的 3D 结构被确定,它也成为药品开发的隐藏力量。除了医学外,蛋白质还可以有更大的贡献,譬如帮助我们用对环境更友好的方式分解废物的可生物降解酶就是通过蛋白质设计实现的,这种酶可以分解塑料和石油等污染物。虽然 3D 结构的确定可以给我们带来这么多好处,但是蛋白质越大,建模越复杂和困难,因为要考虑的氨基酸之间存在更多的相互作用。正如列文塔尔悖论中指出的那样,枚举典型蛋白质的所有可能构型所花费的时间要比宇宙的年龄长,才能达到正确的 3D 结构。

而且,仅从蛋白质的基因序列(一级结构)中找出蛋白质的 3D 形状(二、三级结构)是一项极其复杂的任务。不幸的是,经过数十年的研究,科学家们也都发现了这个难题是无法被绕开的——DNA 仅包含蛋白质的一级结构信息,却并不能探测到这些蛋白质是如何折叠的(3D 结构是如何的)。

这时问题也就提出来了,即所谓的「蛋白质折叠问题」——预测这些链(一级结构)是如何折叠成复杂的 3D 结构的。为了促进研究和衡量最新方法以提高预测的准确性,1994 年成立了两年一度的全球竞赛,名为「Community Wide Experiment on the Critical Assessment of Techniques for Protein Structure Prediction」(CASP),这一竞赛现已成为用于评估技术的通用标准。

为什么要引入机器学习?

在过去的五十年中,科学家们已经能够使用诸如冷冻电子显微镜(cryo-electron microscopy)、核磁共振(nuclear magnetic resonance)、X 射线晶体学(X-ray crystallography)之类的实验技术确定蛋白质的形状,但是每种方法都需要大量的时间和精力来做实验。为了发现一个结构,可能需要数年的时间以及数万美元的投资。这就是为什么生物学家开始将目光转向 AI,希望 AI 能找到合适的方法来替代这一漫长而费力的工作。

幸运的是,由于基因测序成本的快速降低,基因组学领域的数据非常丰富,对应的序列的数量也在呈指数增长。

图 2:蛋白质序列数目变化(图源:https://bair.berkeley.edu/blog/2019/11/04/proteins/)

因此,在最近几年中,依赖于基因组数据的用于预测问题的深度学习方法变得越来越流行。DeepMind 也开始介入这个困难的问题,并基于此研发出了 AlphaFold,并被 CASP 组织者夸赞为「前所未有的进步」。

现有数据中的宝藏

既然要引入机器学习,首先要确定的问题就是该用什么机器学习技术呢。如果要对这个问题进行监督学习,就需要标签。在这个问题中,我们就需要标记蛋白质中每个原子的三维坐标。给蛋白质贴标签是一个劳动密集型、资源密集型且耗时巨大的过程,而且这个过程只能由专家来完成,具体来说,只能由使用价值 1 万美元/小时的显微镜的专家来完成。因此监督学习这条路目前来说是走不通的。

如前文所说,虽然有标记的数据很少,但是没有标记的基因组数据(蛋白质序列)是很多的,如果要更快更好的完成任务,显然第一个要做的就是学会使用这些数据。事实证明,这些数据中包含的有用信息是很多的,进化关系(evolutionary relationship)就是其中一个。进化关系的本质就是同源性,同一个祖先(家族)的兄弟应该具有相似的特性。为了更好的理解什么是进化关系,下面先对当下科学家们提取这一关系的主要方式——序列对齐法——进行简要介绍。

在这个方法中,我们将要查询序列放到整个数据库中,寻找其「兄弟」序列(即同祖先的后代)。图 3 就是一个简单的匹配例子(这里的 A, T(或 U), C, G 是指核酸,蛋白质匹配的情况更加复杂,后面会讲)。这个例子中,我们可以用点(.)来代表少量的不匹配,用破折号(-)表示缺失值。

图 3:序列匹配实例(图源:https://en.wikipedia.org/wiki/Sequence_alignment)

在对序列匹配有了大概的了解后,再来看一下蛋白质的匹配是怎么做的。除了要将核酸变成氨基酸外,还要注意其生物特性。下图就是 GFP 蛋白家族的部分序列比对,这些蛋白质都是荧光蛋白,也就是可以发光。图中的颜色代表不同的氨基酸组,同一个组内的氨基酸有相同的生物物理特性,也就被标成了相同的颜色。

具体来说,紫色代表疏水性(C,A,V,L,I,M,F,W),红色代表带电(D,E,R,K),绿色代表正极不带电(S,T,N,Q)。如果两个序列的颜色一致,也就表示这些位置的特性在进化过程中被保留了。

图 4:蛋白质序列匹配实例(图源:https://bair.berkeley.edu/blog/2019/11/04/proteins/)

所以我们到底想从进化关系中得到什么呢?就如上图的例子所示,这些蛋白质具有类似的功能(发光),但是有些位置是被保留的,有些位置却不一样了——进化是不确定的,并不是完全的继承(颜色一模一样)。有的时候这些颜色(氨基酸)的改变并不会引起蛋白质结构的改变,相应的,这个蛋白质的功能也不会改变。

因此,我们希望从数据库中提取这样的信息——进化在什么位置是自由的,在什么地方是有回旋余地的,在什么地方是完全受束缚的。而这些信息,正是在做结构预测时的重要输入。举个简单的例子,三维空间中临近的位置一般会共同进化,即一个位置的突变通常也会引起相邻位置的突变,如果突变没有共同发生,那这两个氨基酸应该不在相邻的位置。

NLP 与蛋白质折叠问题

大语料库、难以获得的标签、序列对齐、嵌入、token 序列,再加上前文说过的要从中提取出的信息(嵌入),学习过自然语言处理的同学可能会感觉自己回到了自然语言处理(NLP)的课堂上,对那些 NLP 的研究者们来说,这种联系更是昭然若是。因此,研究者们开始将目光转向 NLP 最近的重大突破之一——自监督学习,即从未标记数据中获取有用信息的方法。这之中较为杰出的代表就是 BERT 了,这里先对 BERT 做简单的介绍。

如下图所示,在 BERT 训练时,先遮住部分单词,然后通过其他单词来预测这个被挡住的单词。这样我们就可以得到一个关于可能成为的单词的分布,然后通过交叉熵损失来训练这个模型。学习后的模型可以从序列中学习到该序列的特性,并且这些特性(嵌入)可以很容易的被迁移到下游任务中去。

图 5:BERT 流程图(图源:https://jalammar.github.io/illustrated-bert/)

那如果我们把句子变成氨基酸序列,下游任务变成蛋白质结构预测,是不是就变成了蛋白质折叠问题的模型了?

这样任务就变成了:输入氨基酸序列,通过 BERT 获得蛋白质嵌入,通过蛋白质嵌入预测蛋白质结构。

图 6:蛋白质模型流程图(图源:https://bair.berkeley.edu/blog/2019/11/04/proteins/)

TAPE(Tasks Assessing Protein Embeddings)

理论已经说了很多了,那么具体应该怎么实施呢,这样做到底效果如何呢?在《Evaluating Protein Transfer Learning with TAPE》中,就像 NLP 任务中有 GLUE 作为 Benchmark 一样,作者基于 NLP 任务中的 GLUE 提出了蛋白质嵌入的 benchmark——TAPE(Tasks Assessing Protein Embeddings),并使用多个深度学习模型在包括结构预测在内的多类下游任务(同源检测,蛋白质工程)上进行了测试。

首先简要介绍一下三个下游任务的意义。这三个下游任务中,结构预测已经在前面提到过了;因为改变其氨基酸组成 (即改变序列的一个字母) 会改变蛋白质的性质,大多修改都会破坏其性质,而且跟原序列相差越大,就越不可能维持一个蛋白质的功能,因此蛋白质工程问题解决的则是如何对蛋白质进行何种修改以优化特定的功能的问题(比如让一种荧光蛋白发出的光更亮);而同源检测任务则是发现两个蛋白质是否是同源的(前面提到的用序列对齐解决的问题)。这些任务都有各自的作用,比如蛋白质工程可以用于优化流感抗体的效力以制造更好的疫苗,或增加用于材料合成的生化催化剂的产量。

在 TAPE 中,作者使用了两个 NLP 自监督任务中常见的损失函数。第一个 next-token 预测任务中的损失函数,它评测了 p(x_i |x_1,…,x_i - 1)。但是很多蛋白质任务是 seq2seq 的,需要双向的上下文信息,因此作者加入了反向模型,即 p(x_i |x_i+1,…,x_L),这个每个位置都有双向上下文信息了。第二个是 Masked-token 预测任务中的损失函数,它评测了 p(x| x_unmask)。同时,作者还使用了一种专门应用于蛋白质任务的损失函数,即有监督预训练任务损失。

在模型的选择上,作者使用了 Transformer,LSTM 和 Dilated ResNet。Transformer 有 12 层,每一层有 512 个隐藏单元和 8 个注意头,这样这个模型就有 3800 万个参数。LSTM 则由两个三层 LSTM 组成,与 ELMO 类似,对应于正向和反向语言模型,它有 1024 个隐藏单元,这些输出会在最后一层被连在一起。ResNet 中由 35 个 Res 块,每个块包含两个卷积层和 256 个过滤器,内核大小为 9,扩展率(dilation rate)为 2。三个模型的超参数量都基本相同。

TAPE 使用 Pfam(3100 万数据)作为预训练的训练集,这里面的数据根据进化关系被聚类成不同的家族。同时,在下游任务中,作者使用了 5 个数据集(对应前面说的 3 类下游任务),数据集大小如下表所示。

表 1:数据集大小(图源:https://www.biorxiv.org/content/10.1101/676825v1.full)

在分训练集和测试集时使用两种方式——随机分组(Random Families)和根据家族进行分组(家族分组,Heldout Families)。作者使用准确性(Accuracy)、复杂性(Perplexity)和指数交叉熵 (ECE) 作为评价指标,在语言模型训练任务中,对使用自学习训练的 3 个模型(前三个)进行了评测,并与过去提出的有监督模型以及一个随机的 baseline 模型进行了对比,结果如下表所示。

表 2:预训练评测结果(图源:https://www.biorxiv.org/content/10.1101/676825v1.full)

从表中可以看出,通过自学习训练出的模型的精度(越高越好)和 ECE(越低越好)都优于其他模型,而家族分组精度始终低于随机分割精度,显示出其泛化能力的下降。要注意的是,尽管一些模型在随机分割集和辅助集上的 perplexity 都比其他模型低,但这种较低的 perplexity 并不一定对应于下游任务的更好性能。

同时,作者也对这些模型在 5 项任务上的表现进行了评测。这 5 项任务分别是:

二级结构预测(Secondary Structure (SS) Prediction -Structure Prediction Task ):属于结构预测任务,顾名思义,预测蛋白质的二级结构,是一个 seq2seq 任务,每一个氨基酸会获得一个 label(螺旋或是链装)。评价标准是准确率。

图 7:结构预测、关联预测、远程同源预测(图源:https://www.biorxiv.org/content/10.1101/676825v1.full)

关联预测(Contact Prediction - Structure Prediction Task):属于结构预测任务,对输入的氨基酸进行配对(根据一定原则),如果两个氨基酸被判断为关联(in contact),则其关系标记为 1,反之标记为 0。评价时采用结果中前 5 的精确率。

远程同源检测(Remote Homology Detection - Evolutionary Understanding Task):属于同源检测任务,将输入的蛋白质序列映射到特定的折叠结构上去。本质上是序列分类任务,最终采取准确率作为测量标准。

荧光度预测(Fluorescence Landscape Prediction - Protein Engineering Task):属于蛋白质工程,本质上是回归任务。如图 (a) 所示,将每个蛋白质映射到一个荧光度上。测试时,使用 Spearman 提出的ρ系数(评价相关度)作为指标。

稳定度预测(Stability Landscape Prediction - Protein Engineering Task):也属于蛋白质工程,跟荧光度预测类似,预测内容为某个氨基酸为了保持稳定所需要保持的最大范围。

图 8:荧光度预测、稳定度预测(图源:https://www.biorxiv.org/content/10.1101/676825v1.full)

下表记录了各项任务中各个方案的表现,表中的数据根据任务不同,有可能是准确率(accuracy)、精确度(precision)或是 Spearman』s ρ,但是都是越大越好。可以看到预训练对大部分任务的提升是很明显的。


表 3:预训练与其他方法对比(图源:https://www.biorxiv.org/content/10.1101/676825v1.full)

AlphaFold

最后再回到将我们视线聚焦到蛋白质领域的 AlphaFold,DeepMind 具体做了什么呢?AlphaFold 其实是深度学习方法与传统方法的结合,具体来说就是 CNN+Rosette,本文主要介绍深度学习相关的部分(CNN),对传统方法(Rosette,也是一个很优秀的算法,在 AlphaFold 夺冠的过程中功不可没)就不做详细介绍了,有兴趣可以自己了解一下。

在 AlphaFold 中,他们一共设计了三个不同的方法:首先是最传统的方法,跟从前的专家系统极其相似——先从一维的氨基酸序列生成一个二维的接触距离矩阵(contact matrix)以记录两个氨基酸之间的距离。然后把蛋白质分割成几个结构域(domain)——一个 domain 内的的相互接触很强,但是 domain 内的分子和其之外的接触则相对较弱。然后预测蛋白质骨架的折叠角度,根据蛋白质骨架的折叠角度,把结构切割成一系列有重叠的 9 个氨基酸残基为单位的短肽,分别预测,再组装到一起,预测整个结构域的结构。最后,把折叠好的结构组装到一起。

这个方法就是简单的从头预测(ab initio)方法的框架,在每一步都有一个评分系统,从而保留好结果,删除差结果——没有深度学习的时候也是这么做的。方法 2 则在方法 1 的基础上,不再「切割成小的短链分别预测」,而是直接预测整个结构域。方法 3 在方法 2 的基础上,又去掉了结构域分割这一步,这个时候步骤就变成了——从一维的氨基酸序列生成一个 2 维的接触距离矩阵,预测蛋白质骨架的折叠角度,最后梯度下降出结果。

这里用到深度学习的地方主要有三个:第一个用到深度学习的地方是 contact matrix 预测。这里使用了一个卷积网络 CNN 把一维的氨基酸序列,展成 contact matrix。训练这个 contact matrix 网络时首先进行了 BLAST 序列比对,然后通过序列比对得到的特征进行预测。这个网络深度应该非常高,但其实今年早些时候的 DNCON2 这种浅层的也可以做。网络中会用 likelihood 作为估分方式,先进行一次筛选。

第二个用到深度学习的地方是在预测蛋白质骨架结构的时候,这里要描绘每个键平面之问的二面角 torsion angle,这一步直接调了以前的一个图像生成的方法——A Recurrent Neural Network For Image Generation。第三个就是每一步的评估网络,这个评估网络也是一个 CNN。输入评估网络的是第一个 CNN 生成的 contact malrix,序列比对产生的特征,还有结构的几何结构之类的。

展望及挑战

如前文所示,深度学习本身并不能很好的解决蛋白质预测问题,而且预训练也没有让所有任务上的表现都变得更好,可以看到,在那些非监督学习的下游任务(如 Contact prediction 任务)中预训练就表现得差了些。而在 CASP 中夺冠的 AlphaFold 虽然在一定程度上缓解了人工的压力,但是却对硬件有极高的要求,所以在一定程度上 AlphaFold 的胜利也可以说是 DeepMind 硬件的胜利,并没有从根本上找到「机器学习」解。

但是 CASP 中,前 5 名都使用了深度学习技术,其他一些使用了深度学习技术的队伍也取得了不错的成绩。因此,综合 CASP 以及 TAPE 的结果来看,机器学习和自学习都是蛋白质预测未来的大方向。而且在自学习快速发展的当口,蛋白质也为其提供了一个巨大的试验场(拥有巨大的序列库),因此我相信蛋白质任务和自学习会在相互促进的过程中发展越来越好。

作者介绍:本文作者为王子嘉,目前在帝国理工学院人工智能硕士在读。

参考文献

AlphaFold: Using AI for scientific discovery. Accessed at: https://deepmind.com/blog/article/alphafold

Can We Learn the Language of Proteins? Accessed at: https://bair.berkeley.edu/blog/2019/11/04/proteins/

Illustrated Bert. Accessed at: https://jalammar.github.io/illustrated-bert/

如何看待 AlphaFold 在蛋白质预测领域的成功?
Accessed at: https://www.zhihu.com/question/304484648