ICLR-15 July 2021
Main Method: MSA+Evoformer
Pytorch code: https://github.com/lucidrains/alphafold2
literatures:https://www.nature.com/articles/s41586-021-03819-2
Deepmind
好的视频讲解:AlphaFold 2 论文精读【论文精读】_哔哩哔哩_bilibili
AlphaFold3体验( AlphaFold Server):Google DeepMind and Isomorphic Labs introduce AlphaFold 3 AI model
目录
3.3.1 Row-wise gated self-attention with pair bias
3.3.2 Column-wise gated self-attention
3.3.5 Triangular multiplicative update
3.3.6 Triangular self-attention
1. Introduction
1.1 背景
蛋白质对生命至关重要,如果获得蛋白质的氨基酸序列,可以唯一确定其结构,得到其结构,可以有助于理解其功能机制(注:一个蛋白质序列只能生成一种蛋白质结构,但一个蛋白质结构可以对应多种氨基酸序列)。通过大规模的实验努力,人类已确定了大约10万个独特序列较短蛋白质的结构,但这仅代表了已知数十亿蛋白质序列中的一小部分。蛋白质结构的研究受到了冗长且费时的制约,通常需要数月甚至数年的时间通过Xray射线等复杂的实验,通过不断旋转蛋白质3D形态人工记录来确定单个蛋白质的结构。
以前的蛋白质设计,都是从自然界寻找大量的拥有一定功能的蛋白质的突变氨基酸序列,用湿实验手段人工合成该突变蛋白质,然后再去测试它的功能性状是否有所提高。那时,只通过提供蛋白质序列来直接了解蛋白质的功能是根本不可能的。也就是说人类不可能实现蛋白质的从头设计。
因此,需要准确的计算方法来填补这一差距,实现大规模的结构生物信息学研究。基于氨基酸序列来预测蛋白质将采用的三维结构,即 “蛋白质折叠问题” 的结构预测部分,已经成为一个重要的研究问题超过50年。尽管近年来取得了一些进展,但现有的方法在没有类似结构可供参考的情况下远未达到原子级精度。AlphaFold2提供了首个可以定期预测蛋白质结构,即使在没有类似结构已知的情况下也能实现原子级精度的计算方法。在具有挑战性的第14届蛋白质结构预测评估(CASP14)中验证了我们基于神经网络的AlphaFold模型的全新版本,证明其在大多数情况下与实验结构的准确性相媲美,远远优于其他方法。AlphaFold的最新版本的基础是一种融合了有关蛋白质结构的物理和生物知识的新型机器学习方法,利用多序列比对来设计深度学习算法。
AlphaFold的出现,直接为氨基酸序列和蛋白质结构建立了一个桥梁,真正实现了针对特定的蛋白质功能,从头设计蛋白质结构,直接节省了大量的人力、物力和时间。
1.2 效果展示
2. Motivation
下面是核心思想很重要:
-
蛋白质结构预测领域中的两个主要方法路径:进化历史和物理相互作用。这两条路径分别关注不同的方面,并在蛋白质结构预测中起着互补的作用。
-
进化历史路径利用了蛋白质的进化信息来推断其结构。通过分析蛋白质序列的同源性和具有已知结构的蛋白质之间的进化关系,可以从进化历史的角度得出与结构相关的约束。这种方法受益于已知蛋白质结构在PDB数据库中不断增长,可以通过同源性关系提供更多的约束信息。
-
另一方面,物理相互作用路径将分子驱动力的理解纳入蛋白质物理学的热力学和动力学模拟中。它尝试通过模拟蛋白质中的物理相互作用(如氢键、疏水效应、静电相互作用等)来预测蛋白质的三维结构。然而,由于分子模拟的计算复杂性、蛋白质稳定性的上下文依赖性以及建立精确的物理模型的挑战,对于中等大小的蛋白质来说,物理相互作用路径具有很高的挑战性。
3. Method
3.1 整体框架
AlphaFold2网络是一个用于预测蛋白质的3D结构的模型。它使用一级氨基酸序列和同源序列作为输入,通过两个主要阶段来生成蛋白质的结构。第一阶段是通过Evoformer网络块处理输入,生成经过处理的多序列比对(MSA)和残基对的数组。这个阶段的关键创新是通过一种新的机制,在MSA和配对表示之间交换信息,从而推理出蛋白质的空间和进化关系。第二阶段是通过结构模块引入蛋白质的3D结构。这个模块通过引入旋转和平移的方式,将每个蛋白质残基的3D结构表示为全局刚体框架。这个阶段的关键创新包括破坏链结构以允许局部结构的细化,一个能够推理未表示的侧链原子的等变量转换器,以及对结构精确性的重点权重。整个网络通过迭代优化的概念来提高准确性,即通过重复应用损失输出并将输出反馈到相同模块进行优化。
-
搜索同源序列和模板:
最终,模型的输入部分会得到两大类特征,分别是不同序列之间的特征(进化历史)和氨基酸之间的特征(物理相互作用)。
-
MSA,这部分可以理解为提取与该序列相关性物种进化历史的特征,通过这些相似的进化规律,辅助预测蛋白质结构:
-
直接输入:其中一段序列直接放入编码器。
-
多序列相似度比对(MSA,Multi Sequence Alignment):使用基因序列数据库(UniRef90 (JackHMMER)、BFD(HHnlits)、Mgnify cluster(JackHMMER) 微生物组数据库)进行多序列相似度比对并顺便进行了对齐,即将目标蛋白质序列与相关序列进行比对以找到相似的区域。这一步骤有助于获得序列之间的保守区域和变异区域。(那么这样一来,这些比较接近的氨基酸序列和其结构也可以作为特征的一部分来辅助模型判断,这是一个很典型的将专家知识加入机器学习系统的方法。作者也提到如果不加上MAS特征,准确率会掉将近10个点。所以MSA特征是AlphaFold的一个重要组成部分。)
-
-
Pair representation,这部分是直接根据输入的序列研究模版数据库中的氨基酸之间的各种物理引力的特征关系,然后映射成向量:
-
氨基酸对比矩阵(Pairwise Residue Comparison Matrix):用于比较每对氨基酸在空间位置上的关系,使用了一种矩阵表示来编码氨基酸之间的距离、相对方位等信息。
-
结构数据库搜索和模版匹配(Template Matching):利用已知真实氨基酸对的空间信息,在结构数据库(PDB (用于训练)、PDB70聚类 (HHsearch))中搜索相应的结构模版。这些结构模板可以提供参考,帮助AlphaFold预测目标蛋白质的结构。
-
-
-
特征构造和表示:
提取和交互MSA和Pair的特征。
-
Evoformer部分(48层,不共享权重):
-
编码器第一部分是$$s \times r \times c $$表示一个MSA representation三维数组的大小,其中 s 表示数组中序列的数量(也可以理解为样本数),r 表示每个序列中残基的数量(即序列长度),c 表示每个残基的通道数量。
-
编码器第二部分是$$ r\times r \times c $$ 表示一个Pair representation三维数组的大小,其中 r 表示每个序列中残基的数量(即序列长度),c 表示每个残基的通道数量。
-
48个Evoformer(其实是Transformer的变种),这里的Evoformer接受的不是像Transformer那样的一维序列,而是一个二维的矩阵。
-
-
Structure module部分(8层):
-
编码器输入和解码器输入的格式一样。
-
根据输入的相关信息预测蛋白质的具体结构。
-
-
Recycling部分
-
将Evoformer的输出和蛋白质三维结构进行3次Recycling进行数据修正和精调,可以理解为网络再加深三倍。
-
但是循环有共享权重特性,也就是后面三次梯度不反向传递,节省了内存。
-
3.2 特征构造和表示
MSA包含了多物种信息特征,pair representation只包含一个物种的信息
3.3 Evoformer模块
-
上半部分两个多头注意力机制(分别按行和列(Transformer只有序列因此只有一维)进行自注意力)+Transiton(MLP)+残差连接机制。
-
下半部分四个多头注意力机制(使用三角连接,分别按边和节点进行自注意力)+Transiton(MLP)+残差连接机制。
-
上下部分氨基酸对的信息和序列信息相互交叉连接。
3.3.1 Row-wise gated self-attention with pair bias
在基于Transformer架构的多头自注意力机制中,Q、K、V分别代表查询向量(Query)、键向量(Key)和值向量(Value)。这三个向量用于计算注意力权重,并生成最终的输出表示。
MSA row-wise gated self-attention with pair bias. Dimensions: s: sequences, r:
residues, c: channels, h: heads.
-
在提到一行氨基酸序列$$(r,c_m)$$作为输入时,意味着将该序列作为数据输入到Transformer模型中来进行计算。根据多头(h)注意机制,可以利用Q、K、V进行计算,以获取注意力权重并生成输出表示。
-
除了常规的QKV之外,段落中还引入了一行gating(门)。这里的"门"表示使用sigmoid函数对数值进行处理,将较大的值映射到正常输出范围,而较小的值则被映射为0。这样的操作实现了对门的控制,起到了开关的作用。具体来说,在计算注意力权重时,通过使用gating操作,可以对不需要的信息进行抑制,从而更好地控制模型的注意力分配。这样的改进使得模型能够更加有效地处理氨基酸序列数据,并增加对不同部分的关注程度。通过控制门的开关,模型可以选择性地关注重要的特征,过滤掉不必要的噪声。这种机制的引入有助于提高模型的性能和表达能力。
-
再加上配对偏移的嵌入,那么这个自注意力分数,既来自于投影算出来的相似度,也来自于配对的相似度。
-
这里的将s物种的氨基酸序列中的第i号氨基酸的张量$${m_si} $$和序列对信息zij作为输入。第一步先经过LayerNorm,g是门,后面将会和self-attention输出做乘积。然后用多头权重矩阵$$W^h$$做LinearNoBias得到q、k和v。
-
把pair representation的每一个向量$$z_{ij}$$经过LayerNorm单独做LinearNoBias,得到h个标量,也就相当于把$$c_z$$分成了h层,得到b。注意softmax是对全体j进行操作的,也就是按行进行。同时需要嵌入b。(这里的累加比较难理解,但其实就是乘v的基本操作,因为作者前面只算了$$v_{si}$$,如下图所示,其实QK与V的每一个j都有累乘)
-
最后将输出进行联合(相当于h倍个按行方向的联合)后进行Linear即可得到和输入同维度的msi。
注:这里的计算可以参考下:
3.3.2 Column-wise gated self-attention
除了无配对偏差之外,与行门控自我注意机制的区别还在于:计算同一个氨基酸在不同蛋白质之间的相关性。
区别同MSA row-wise gated self-attention with pair bias在于没有嵌入,softmax是按列进行(也就是)。
3.3.3 Transition
Transition为了信息的提炼,此处相当于Transformer的MLP,这个MLP通常由两个线性层和一个激活函数组成,其中第一个线性层将特征维度映射到更高的维度,然后经过激活函数后再通过第二个线性层将维度映射回原始维度。这个MLP的作用是引入非线性变换,增强模型对特征的表达能力。(注意,这个线性投影的权重对于每一个$$c_m$$是共享的,也就是这里仅仅使用了一个权重矩阵)
3.3.4 Outer product mean
"Outer product mean"块是Transformer模型中的一个组件,用于将MSA表示转换为对称位置表示的更新。进行特征交叉。在这个块中,首先将所有MSA条目通过两个独立的线性变换进行线性投影,将维度从较高的值减小到c=32。然后,取两列i和j的向量的外积,并将这些外积在序列上进行平均。这样得到的结果会通过投影到维度cz来获得对位置ij的对称表示的更新。
3.3.5 Triangular multiplicative update
使用和残基i以及残基j共起点和共终点的边来更新边。
这部分建议直接看伪代码,思路其实很简单。就是确定两node,遍历所有可能性的第三node。
3.3.6 Triangular self-attention
使用从i出发或者终止的所有边来更新边(i,j),和之前讲的图很像。
这部分和MSA row-wise gated self-attention with pair bias思路基本一致。
其实,基本思想和前面self-attention的几乎没变。
3.4 Structure module
3.4.1 蛋白质相对位置
蛋白质其实可以直接用绝对位置(三个坐标)表示,但是考虑到蛋白质的平移旋转,采用相对位置其实更为合适。
3.4.2 整体框架
首先,我们输入想要预测的单一蛋白质序列的特征,还有对信息,经过IPA模块(有残差)后,得到新的单一的特征(其中已经包含了氨基酸位置信息),下面部分进行预测相对主干的位置,同时把输出和单一特征一起输入到基于骨架枝叶上的原子填充计算,然后进入下一轮循环(一共八次共享权重的模块),不断更新位置。因此中间的模块其实是拿到了三大信息(氨基酸对信息、不断在更新的序列的信息和蛋白质主干的信息)。
3.4.3 IPA
- 这里有三个不同数量的头。重点看第七行(交叉了下)后面的部分表示,第i个氨基酸后一个氨基酸的位置与第j个氨基酸后的氨基酸的位置如果相差不远的话,那么相似度就大(因此就加一个负号)。
- IP的意思是指,所有的变化都不会影响蛋白质的真实结构,第7行公式有一个相减,第11行也有一个加完之后的逆变换。
3.4.4 Backbone update
S0(3)主干变换预测,前三个代表旋转,后面代表平移。
3.5 主损失函数
主损失函数为FAPE(当然这仅是一部分比较主要的损失函数,权重较大,完整的损失函数还有其他算法建议看附件),通俗来讲指的是预测灰色和绿色相差距离,越小越好。
这里很简单每次固定一个R,t,比较其他所有位置的xi和xj的偏离,再固定下一个R,t,继续算,直到所有的加起来。
4. Experiment
T1024(n = 87 protein domains), T1064(n = 2,261 protein chains),对于简单结构的蛋白质仅用40左右的块就已经可以预测的很好,对于复杂结构的蛋白质,随着深度越深,预测的可以更好。