Press "Enter" to skip to content

使用蛋白质的深度学习

在撰写本文时,我有两个受众考虑在内。一方面是生物学家,他们想要了解机器学习,另一方面是机器学习者,他们想要了解生物学。如果你对生物学或者机器学习都不熟悉,也欢迎你参与,但是可能有时会感到有些困惑!如果你已经对这两个领域都很熟悉,那么你可能不需要阅读本文 – 你可以直接跳到我们的示例笔记本中,看看这些模型的实际应用:

  • 使用 PyTorch 和 TensorFlow 对蛋白质语言模型进行微调
  • 使用 ESMFold 进行蛋白质折叠(目前只支持 PyTorch,因为涉及到 openfold 的依赖)

针对生物学家的介绍:到底什么是语言模型?

处理蛋白质的模型受到了 BERT 和 GPT 等大型语言模型的启发。为了理解这些模型的工作原理,我们将回到2016年左右,即它们出现之前的时期。特朗普还没有当选,英国脱欧还没有发生,而深度学习(DL)则是当时最热门的新技术,每天都在创造新的记录。DL成功的关键在于它使用人工神经网络来学习数据中的复杂模式。然而,DL有一个关键问题 – 它需要大量的数据才能发挥出色的效果,而在许多任务中,这些数据是不可用的。

假设你想要训练一个DL模型,以英语句子作为输入,并决定它的语法是否正确。于是你收集了训练数据,它看起来像这样:

从理论上讲,在当时这个任务是完全可能的 – 如果你将这样的训练数据输入到一个DL模型中,它可以学会预测新的句子是否语法正确。但实际上,效果并不好,因为在2016年,大多数人会为他们想要训练的每个任务初始化一个全新的模型。这意味着模型必须仅仅通过训练数据中的示例来学习所有需要知道的东西!

要理解这是多么困难,假设你是一个机器学习模型,我正给你一些训练数据,让你学习一个任务。这是训练数据:

我选择了一种你希望你从未见过的语言,所以我猜你可能对自己学到这个任务并不感到非常自信。也许在成百上千个示例之后,你可能开始注意到输入中的一些重复单词或模式,并且你可能能够做出比随机猜测更好的猜测,但即使如此,一个新单词或不寻常的表达方式肯定会让你感到困惑,并且使你做出错误的猜测。不巧的是,这正是当时DL模型的表现情况!

现在试试同样的任务,但使用英语:

现在很容易 – 这个任务只是预测一部电影评论是积极的(1)还是消极的(0)。只有两个积极的例子和两个消极的例子,你可能可以以接近100%的准确率完成这个任务,因为你已经有了丰富的英语词汇和语法的先前知识,以及关于电影和情感表达的文化背景。没有这些知识,情况更像是第一个任务 – 你需要阅读大量的示例才能开始发现输入中的表面模式,即使你花时间学习了数十万个示例,你的猜测仍然比在英语语言任务中仅仅使用四个示例得出的猜测要不准确得多。

关键突破:迁移学习

在机器学习中,我们将将先前的知识引入到新任务中的概念称为“迁移学习”。让这种迁移学习在DL中发挥作用是2016年左右该领域的一个重要目标。例如,2016年时已经存在预训练的词向量(这非常有趣,但超出了本文的范围!),这些词向量允许一些知识被转移到新模型中,但这种知识转移仍然相对表面,而且模型仍然需要大量的训练数据才能发挥出色。

这种情况一直持续到2018年,当时两篇重要的论文问世,分别介绍了 ULMFiT 和后来的 BERT 模型。这些是第一批在自然语言中实现迁移学习非常成功的论文,特别是 BERT 标志着预训练大型语言模型时代的开始。这两篇论文共享的技巧是,它们利用了深度学习中人工神经网络的内部结构 – 它们在一个训练数据非常丰富的文本任务上长时间地训练了一个神经网络,然后将整个神经网络复制到一个新任务中,只改变与网络输出相对应的少数神经元。

使用蛋白质的深度学习 四海 第1张

这张来自ULMFiT论文的图展示了使用迁移学习与从头开始训练模型在三个独立任务上的性能巨大提升。在许多情况下,使用迁移学习可以获得相当于拥有超过100倍训练数据的性能。而且不要忘记这篇论文发表于2018年,现代大规模语言模型可以做得更好!

这种方法能够奏效的原因是,在解决任何非平凡任务的过程中,神经网络会学习到输入数据的很多结构信息-视觉网络在给定原始像素的情况下学习识别线条、曲线和边缘;文本网络在给定原始文本的情况下学习语法结构的细节。然而,这些信息并不是特定于任务的-迁移学习之所以奏效的关键原因在于,“解决一个任务所需要的很多知识并不特定于该任务!”要对电影评论进行分类,并不需要对电影评论了解很多,但是却需要对英语和文化背景有广泛的知识。通过选择训练数据丰富的任务,我们可以让神经网络学习到这种“领域知识”,然后将其应用于我们关心的新任务,其中获取训练数据可能更加困难。

到目前为止,希望您已经了解了迁移学习是什么,以及大型语言模型只是一个在大量文本数据上进行训练的大型神经网络,这使其成为迁移到新任务的理想选择。接下来我们将看到如何将这些技术应用于蛋白质,但首先我需要为另一部分受众撰写一个介绍。如果您已经熟悉这方面的知识,可以跳过下面的内容!

机器学习人员的介绍:蛋白质到底是什么鬼?

简洁概括整个学位的一句话是:蛋白质可以做很多事情。一些蛋白质是酶-它们作为化学反应的催化剂。当你的身体将营养物转化为能量时,从食物到肌肉运动的每个步骤都是由酶催化的。一些蛋白质是结构蛋白质-它们为组织提供稳定性和形状,例如结缔组织。如果你看过化妆品广告,你可能看到过“胶原蛋白”、“弹性蛋白”和“角蛋白”这些词语-这些是构成我们的皮肤和头发结构的蛋白质。

其他蛋白质在健康和疾病中起着关键作用-每个人可能都记得COVID-19病毒的“刺突蛋白”的无数新闻报道。COVID刺突蛋白与一种称为ACE2的蛋白质结合,后者存在于人类细胞表面,使病毒能够进入细胞并传递其病毒RNA的载荷。由于这种相互作用对感染非常关键,模拟这些蛋白质及其相互作用在疫情期间成为一个巨大的研究重点。

蛋白质由多个氨基酸组成。氨基酸是相对简单的分子,它们共享相同的分子骨架,并且这种骨架的化学性质使得氨基酸可以融合在一起,使得个体分子可以形成一条长链。需要理解的关键是,只有很少几种不同的氨基酸-20种标准氨基酸,再加上可能根据具体生物体而有一些稀有和奇怪的氨基酸。导致大量蛋白质多样性的是这些氨基酸可以以任意顺序组合,由此产生的蛋白质链在形状和功能上可以截然不同,因为链的不同部分会相互粘连和折叠。在这里可以用文本来做类比-英语只有26个字母,但想想你可以用这26个字母的组合写出多少不同的东西!

事实上,由于氨基酸很少,生物学家可以为每种氨基酸分配一个唯一的字母。这意味着你可以将蛋白质写成一个文本字符串!例如,假设一个蛋白质的氨基酸链包含甲硫氨酸、丙氨酸和组氨酸。这些氨基酸的对应字母只是M、A和H,所以我们可以将链写为“MAH”。不过,大多数蛋白质包含的氨基酸不只是三个,而是数百甚至数千个。

使用蛋白质的深度学习 四海 第2张

这张图展示了蛋白质的两种表示方法。所有氨基酸都包含一个碳-碳-氮的序列。当氨基酸融合成蛋白质时,这种重复的模式将贯穿整个长度,被称为蛋白质的“骨架”。然而,氨基酸的“侧链”却有所不同,侧链是指附着在这个C-C-N骨架上的原子的名称。下面的图使用标记为R1、R2和R3的通用侧链,可以是任何氨基酸。在上面的图中,中间的氨基酸有一个CH3的侧链-这将其标识为丙氨酸氨基酸,用字母A表示。(图片来源)

尽管我们可以将它们写成文本字符串,但蛋白质实际上并不是一种“语言”,至少不是诺姆·乔姆斯基(Noam Chomsky)能够识别的任何语言。但它们确实具有一些类似语言的特征,从机器学习的角度来看,它们与文本非常相似:蛋白质是由长字符串组成的,使用的是一个固定且较小的字母表,虽然理论上任何字符串都可能存在,但实际上只有很小的一部分字符串才真正“有意义”。随机文本是垃圾,随机的蛋白质就是一团无形的物质。

此外,如果仅考虑蛋白质的部分结构,也会丢失信息,就像仅阅读从较大文本中提取的单个句子一样会丢失信息。蛋白质的某个区域只有在存在稳定和修正该结构的其他蛋白质部分时才能呈现其自然形状!这意味着长程相互作用(这些作用可以很好地通过全局自注意力捕捉到)对于正确建模蛋白质至关重要。

到目前为止,希望您对蛋白质是什么以及为什么生物学家如此关心有一个模糊的概念-尽管它们只使用了少量的氨基酸“字母”,但它们具有广泛的结构和功能多样性,能够仅通过观察原始的氨基酸“字符串”就能理解和预测这些结构和功能将是一种非常有价值的研究工具。

将其结合起来:与蛋白质的机器学习

所以现在我们已经了解了语言模型的迁移学习方式,并且了解了蛋白质的概念。有了这些背景知识,下一步并不太困难-我们可以在蛋白质上使用相同的迁移学习思想!我们不是在一个涉及英文文本的任务上预训练模型,而是在一个涉及蛋白质的任务上进行训练,但是有大量的训练数据可用。完成这一步之后,我们的模型有望学习到很多关于蛋白质结构的知识,就像语言模型学习到很多关于语言结构的知识一样。这使得预训练的蛋白质模型成为将来用于任何基于蛋白质的任务的首选候选模型!

生物学家关心的是在哪些机器学习任务中训练蛋白质模型?最著名的蛋白质建模任务是蛋白质折叠。这里的任务是根据氨基酸链(如“MLKNV…”)预测蛋白质将折叠成的最终形状。这是一项非常重要的任务,因为准确预测蛋白质的形状和结构可以为我们提供许多关于蛋白质功能和工作方式的洞察。

在现代机器学习出现之前,人们就一直在研究这个问题-一些最早的大规模分布式计算项目,如Folding@Home,使用原子级模拟以令人难以置信的空间和时间分辨率模拟蛋白质折叠,并且有一整个领域的蛋白质晶体学使用X射线衍射来观察从活细胞中分离出的蛋白质的结构。

然而,深度学习的出现改变了一切。AlphaFold和尤其是AlphaFold2使用转换器深度学习模型以及一些特定于蛋白质的增强功能,以从原始氨基酸序列中出色地预测新型蛋白质的结构。如果您对蛋白质折叠感兴趣,我们强烈推荐查看我们的ESMFold笔记本-ESMFold是一种类似于AlphaFold2的新模型,但它是一种更“纯粹”的深度学习模型,不需要任何外部数据库或搜索步骤即可运行。因此,设置过程更简单,模型运行速度更快,同时仍保持出色的准确性。

使用蛋白质的深度学习 四海 第3张

这是异二聚体P. multocida蛋白质葡萄糖胺-6-磷酸脱氨酶的预测结构。使用上面链接的ESMFold笔记本可以在几秒钟内生成这种结构和可视化效果。较深的蓝色表示结构置信度最高的区域。

然而,蛋白质折叠并不是唯一感兴趣的任务!生物学家可能希望在蛋白质上进行各种分类任务-也许他们想要预测蛋白质将在细胞的哪个部分起作用,或者在蛋白质创建后,哪些氨基酸将接受某些修饰。在机器学习的语言中,这样的任务称为序列分类,当您想要对整个蛋白质进行分类时(例如,预测其亚细胞定位),或者称为令牌分类,当您想要对每个氨基酸进行分类时(例如,预测哪些个体氨基酸将接受翻译后修饰)。

然而,关键的一点是,尽管蛋白质与语言非常不同,但它们几乎可以通过完全相同的机器学习方法来处理-在大型蛋白质序列数据库上进行大规模预训练,然后将其迁移到训练数据可能更稀疏的各种感兴趣的任务上。实际上,从某些方面来说,这甚至比BERT这样的大型语言模型更简单,因为不需要复杂的单词拆分和解析-蛋白质没有“单词”划分,所以最简单的方法就是将每个氨基酸转换为单个输入令牌。

听起来很酷,但我不知道从哪里开始!

如果您已经熟悉深度学习,那么您会发现微调蛋白质模型的代码与微调语言模型的代码非常相似。我们为PyTorch和TensorFlow都提供了示例笔记本,如果您感兴趣,您可以从开放访问的蛋白质数据库(如UniProt)获得大量的注释数据,该数据库还具有REST API和友好的Web界面。您的主要困难将是找到有趣的研究方向进行探索,这在本文档的范围之外,但我相信有很多生物学家愿意与您合作!

另一方面,如果您是一位生物学家,您可能已经有几个想要尝试的想法,但可能对深入研究机器学习代码感到有些不安。不要惊慌!我们设计了示例笔记本(PyTorch,TensorFlow),使得数据加载部分与剩余部分相对独立。这意味着,如果您有一个序列分类或令牌分类任务,您只需构建一个蛋白质序列列表和相应标签的列表,然后用加载或生成这些列表的任何代码替换我们的数据加载代码即可。

尽管链接的具体示例使用ESM-2作为基本预训练模型,因为它是目前的最新技术,但该领域的人们也可能熟悉Rost实验室,他们的模型(如ProtBERT)是最早的这类模型之一,并受到了生物信息学界的极大关注。链接示例中的大部分代码可以通过将检查点路径从facebook/esm2...更改为Rostlab/prot_bert来切换到使用ProtBERT等基本模型。

结论

深度学习和生物学的交叉领域将在未来几年内成为一个非常活跃和富有成果的领域。然而,使深度学习成为一个快速发展的领域的其中一点就是人们能够快速重现结果并为自己的使用适应新模型的速度。在这个精神下,如果您训练了一个您认为对社区有用的模型,请分享!上面的笔记本包含将模型上传到Hub的代码,其他研究人员可以自由访问并在此基础上进行扩展-除了对该领域的好处外,这也是获得您相关论文的可见性和引用的好方法。您甚至可以使用Spaces创建一个实时Web演示,以便其他研究人员可以输入蛋白质序列并免费获取结果,而无需编写一行代码。祝您好运,愿审稿人2对您友善!

Leave a Reply

Your email address will not be published. Required fields are marked *