蛋白质深度学习

发布日期:2022年12月2日
在 GitHub 上更新

在撰写本文时,我考虑了两个受众。一个是正在尝试进入机器学习领域的生物学家,另一个是正在尝试进入生物学领域的机器学习者。如果您对生物学或机器学习都不熟悉,仍然欢迎您阅读,但有时可能会觉得有些困惑!如果您已经对两者都很熟悉,那么您可能根本不需要这篇文章——您可以直接跳到我们的示例笔记本,查看这些模型的实际应用

  • 蛋白质语言模型微调(PyTorchTensorFlow
  • 使用ESMFold进行蛋白质折叠(目前仅限于PyTorch,因为存在openfold依赖项)

生物学家入门:语言模型到底是什么?

用于处理蛋白质的模型深受BERT和GPT等大型语言模型的启发。因此,为了理解这些模型的工作原理,我们将回到2016年左右,也就是它们出现之前。唐纳德·特朗普尚未当选,英国脱欧尚未发生,深度学习(DL)是每天都在创造新纪录的热门新技术。DL成功的关键在于它使用人工神经网络来学习数据中复杂的模式。然而,DL有一个关键问题——它需要大量数据才能良好工作,而在许多任务中,这些数据根本不可用。

假设您想训练一个DL模型,以英语句子作为输入,并判断其语法是否正确。因此,您收集了训练数据,它看起来像这样:

文本 标签
The judge told the jurors to think carefully. 正确
The judge told that the jurors to think carefully. 不正确
... ...

理论上,这项任务在当时是完全可行的——如果您将这样的训练数据输入到DL模型中,它就可以学习预测新句子是否语法正确。实际上,它的效果并不好,因为在2016年,大多数人会为他们想要训练的每个任务随机初始化一个新模型。这意味着模型必须仅从训练数据中的示例中学习所需的一切!

为了理解这有多困难,假设您是一个机器学习模型,我正在为您提供一些我希望您学习的任务的训练数据。如下:

文本 标签
Is í an stiúrthóir is fearr ar domhan! 1
Is fuath liom an scannán seo. 0
Scannán den scoth ab ea é. 1
D’fhág mé an phictiúrlann tar éis fiche nóiméad! 0

我在这里选择了一种我希望你从未见过的语言,所以我想你可能对自己已经学会这项任务的信心不是很足。也许在数百或数千个例子之后,你可能会开始注意到输入中一些重复的词语或模式,并且你可能会做出比随机猜测更好的猜测,但即使如此,一个新词或不寻常的措辞肯定会让你感到困惑,并导致你做出错误的猜测。这并非巧合,当时DL模型的表现也差不多就是这样!

现在尝试相同的任务,但用英语进行

文本 标签
She’s the best director in the world! 1
I hate this movie. 0
It was an absolutely excellent film. 1
I left the cinema after twenty minutes! 0

现在很简单——任务只是预测影评是积极(1)还是消极(0)。仅凭两个积极例子和两个消极例子,你可能就能以接近100%的准确率完成这项任务,因为**你已经拥有大量的英语词汇和语法,以及围绕电影和情感表达的文化背景知识。**如果没有这些知识,情况就会更像第一个任务——你需要阅读大量的例子才能开始发现输入中哪怕是肤浅的模式,即使你花时间研究了成千上万个例子,你的猜测准确率仍然远低于在英语任务中只用四个例子时的准确率。

关键突破:迁移学习

在机器学习中,我们将这种将先验知识转移到新任务的概念称为“**迁移学习**”。让这种迁移学习在深度学习中发挥作用是2016年左右该领域的一个主要目标。虽然预训练词向量(非常有趣,但超出本文范围!)在2016年确实存在,并允许将一些知识转移到新模型中,但这种知识转移仍然相对肤浅,模型仍然需要大量训练数据才能良好工作。

这种情况一直持续到2018年,当时两篇重要的论文相继问世,引入了模型ULMFiT,随后是BERT。这些是首次让自然语言迁移学习真正发挥作用的论文,特别是BERT标志着预训练大型语言模型时代的开始。这两篇论文共同的诀窍是,它们利用了深度学习中人工神经网络的内部结构——它们在一个训练数据非常丰富的文本任务上长时间训练了一个神经网络,然后将整个神经网络复制到新任务中,只改变了对应于网络输出的几个神经元。

transfer learning

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

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

至此,希望您已经理解了什么是迁移学习,以及大型语言模型只是一个经过大量文本数据训练的巨大神经网络,这使其成为转移到新任务的理想选择。我们将在下面看到这些相同的技术如何应用于蛋白质,但首先我需要为我的另一半受众写一个介绍。如果您已经熟悉,请随意跳过这一部分!

机器学习者入门:蛋白质到底是什么?

一句话概括:蛋白质的功能非常多。有些蛋白质是——它们充当化学反应的催化剂。当您的身体将营养物质转化为能量时,从食物到肌肉运动的每一步都由酶催化。有些蛋白质是结构蛋白——它们提供稳定性和形状,例如在结缔组织中。如果您曾看过化妆品广告,您可能见过胶原蛋白弹性蛋白角蛋白等词语——这些蛋白质构成了我们皮肤和头发的大部分结构。

其他蛋白质在健康和疾病中至关重要——每个人可能都记得关于COVID-19病毒的**刺突蛋白**的无数新闻报道。COVID刺突蛋白与人体细胞表面的一种名为ACE2的蛋白质结合,这使其能够进入细胞并传递其病毒RNA有效载荷。由于这种相互作用对感染至关重要,因此在疫情期间,对这些蛋白质及其相互作用进行建模是一个巨大的焦点。

蛋白质由多个氨基酸组成。氨基酸是相对简单的分子,都具有相同的分子主链,并且该主链的化学性质允许氨基酸融合在一起,从而使单个分子可以形成一个长链。这里关键要理解的是,氨基酸只有少数几种不同类型——20种标准氨基酸,另外根据特定生物体可能还有一些稀有和奇怪的。蛋白质种类繁多的原因在于这些**氨基酸可以以任何顺序组合**,并且由此产生的蛋白质链可以具有截然不同的形状和功能,因为链的不同部分会相互粘附和折叠。这里可以把文本作为类比——英语只有26个字母,但想想你可以用这26个字母的组合写出多少种不同类型的东西!

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

protein structure

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

尽管我们可以将它们写成文本字符串,但蛋白质实际上并不是一种“语言”,至少不是乔姆斯基会认可的任何一种语言。但是它们确实具有一些类似语言的特征,从机器学习的角度来看,这使得它们与文本领域非常相似:蛋白质是由固定的小字母表中的长字符串组成,理论上任何字符串都是可能的,但在实践中,只有非常小的一部分字符串才真正“有意义”。随机文本是垃圾,随机蛋白质只是一个无定形的团块。

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

至此,希望您对蛋白质是什么以及生物学家为何如此关心它们有了一个模糊的认识——尽管它们的氨基酸“字母表”很小,但它们具有巨大的结构和功能多样性,能够仅仅通过查看原始氨基酸“字符串”来理解和预测这些结构和功能,将是一个极有价值的研究工具。

整合:蛋白质机器学习

现在我们已经了解了语言模型的迁移学习如何工作,以及蛋白质是什么。有了这些背景知识,下一步就不难了——我们可以将相同的迁移学习思想应用于蛋白质!我们不再在涉及英语文本的任务上预训练模型,而是在输入是蛋白质但训练数据充足的任务上训练它。一旦完成,我们的模型有望学习到大量关于蛋白质结构的信息,就像语言模型学习到大量关于语言结构的信息一样。这使得预训练的蛋白质模型成为任何其他基于蛋白质的任务的理想选择!

生物学家对训练蛋白质模型感兴趣的机器学习任务有哪些?最著名的蛋白质建模任务是蛋白质折叠。这里的任务是,给定氨基酸链,例如“MLKNV…”,预测该蛋白质最终会折叠成的形状。这是一项极其重要的任务,因为准确预测蛋白质的形状和结构可以为蛋白质的功能及其运作方式提供大量见解。

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

然而,与许多其他领域一样,深度学习的到来改变了一切。AlphaFold,尤其是AlphaFold2,利用Transformer深度学习模型,并添加了许多蛋白质特有的功能,在仅凭原始氨基酸序列预测新型蛋白质结构方面取得了卓越的成果。如果您对蛋白质折叠感兴趣,我们强烈建议您查看我们的ESMFold笔记本——ESMFold是一个类似于AlphaFold2的新模型,但它更像是一个“纯粹”的深度学习模型,运行不需要任何外部数据库或搜索步骤。因此,设置过程要简单得多,模型运行速度也快得多,同时仍保持出色的准确性。

folding example

预测的同型二聚体多杀巴氏杆菌蛋白质**葡萄糖胺-6-磷酸脱氨酶**的结构。此结构和可视化是使用上面链接的ESMFold笔记本在几秒钟内生成的。深蓝色表示结构置信度最高的区域。

然而,蛋白质折叠并非唯一令人感兴趣的任务!生物学家可能希望通过蛋白质完成各种分类任务——也许他们想预测该蛋白质将在细胞的哪个部分发挥作用,或者蛋白质生成后,蛋白质中的哪些氨基酸会接受特定的修饰。用机器学习的语言来说,当您想要对整个蛋白质进行分类(例如,预测其亚细胞定位)时,此类任务称为序列分类;当您想要对每个氨基酸进行分类(例如,预测哪些单个氨基酸会接受翻译后修饰)时,则称为标记分类

然而,关键的启示是,尽管蛋白质与语言截然不同,但它们几乎可以通过完全相同的机器学习方法来处理——在大型蛋白质序列数据库上进行大规模预训练,然后将**迁移学习**应用于各种感兴趣的任务,而这些任务的训练数据可能稀疏得多。事实上,在某些方面它甚至比BERT等大型语言模型更简单,因为不需要复杂的词语分割和解析——蛋白质没有“词”的划分,因此最简单的方法是直接将每个氨基酸转换为一个单独的输入令牌。

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

如果您已经熟悉深度学习,那么您会发现微调蛋白质模型的代码与微调语言模型的代码非常相似。如果您好奇,我们提供了PyTorchTensorFlow的示例笔记本,您可以从像UniProt这样的开放访问蛋白质数据库中获取大量带注释的数据,该数据库具有REST API和良好的网页界面。您主要的困难将是找到有趣的探索性研究方向,这超出了本文档的范围——但我相信有许多生物学家会乐于与您合作!

另一方面,如果您是生物学家,您可能已经有了一些想要尝试的想法,但可能对深入研究机器学习代码有点望而却步。别担心!我们设计了示例笔记本(PyTorchTensorFlow),以便数据加载部分与其他部分完全独立。这意味着,如果您有一个**序列分类**或**标记分类**任务,您所需要做的就是构建一个蛋白质序列列表和相应的标签列表,然后用您加载或生成这些列表的代码替换我们的数据加载代码即可。

虽然链接的具体示例使用ESM-2作为基础预训练模型,因为它代表了当前最先进的水平,但该领域的人们可能也熟悉Rost实验室的模型,例如ProtBERT论文链接),这些模型是同类模型中最早的一些,并引起了生物信息学界的极大兴趣。链接示例中的大部分代码可以通过简单地将检查点路径从facebook/esm2...更改为Rostlab/prot_bert等内容,从而切换到使用ProtBERT等基础模型。

总结

深度学习与生物学的交叉领域在未来几年将是一个极其活跃且富有成果的领域。然而,深度学习之所以如此快速发展,其中一个原因在于人们能够快速复现结果并为己所用。本着这种精神,如果您训练了一个您认为对社区有用的模型,请务必分享!上面链接的笔记本包含将模型上传到Hub的代码,其他研究人员可以在Hub上免费访问和利用这些模型——除了对该领域的益处之外,这还是提高您的相关论文知名度和引用量的绝佳方式。您甚至可以使用Spaces制作一个实时网络演示,以便其他研究人员可以输入蛋白质序列并免费获取结果,而无需编写任何代码。祝您好运,愿审稿人2对您仁慈!

社区

注册登录 发表评论