Highly accurate protein structure prediction with AlphaFold(★ Nature)
AlphaFold 高精度预测蛋白质结构
paper:Highly accurate protein structure prediction with AlphaFold | Nature
code:https://github.com/deepmind/alphafold
注:这篇Nature的论文,如果光看正文,没法理解,需要结合它的补充材料一起看
0 前言
蛋白质结构预测:给定某一个蛋白质的一串氨基酸序列,猜测这个蛋白质的3D结构是什么样子的 ?
现在的生物学可能需要很长的时间来具体了解一个蛋白质的结构:从不同的角度用显微镜来看它的结构。
AlphaFold 2的精度可以到达原子级别,实验室测得的(真实)位置和预测的位置之间的差距在原子大小的级别以内,模型使用了一定的生物学和物理学的知识,融合在深度学习里面
前作AlphaFold 1精度不够,这篇论文提出了AlphaFold 2
Transformer部分(也就是这里的evoformer)只起到不同元素(氨基酸)之间信息整合的作用,真正信息的提炼部分,是在decoder部分实现的
我对于回收机制的想法:
这个机制有一点类似RNN中把hidden state再传给下一轮的RNN。通过不断地利用上一轮学到的输出,来获得更好的输出结果(每一轮的输出可能精度有限,通过不断迭代获得更好的效果)
区别在于,这里只重用结构,但是不回传梯度。(就是说传回去的几个输出是detach了的输出)
——>和RNN重用结构相比,虽然计算时间上没有区别,但是内存上是有区别的(RNN的话,“回传”的hidden state的梯度也是需要记录在内存中的,但是这边回传的输出是不用记录梯度的)
1.2 “encoder”部分
1.2.1 整体模型
1.2.2 row-wise gated self-attention with pair bias
1.2.3 column-wise gated self-attention
大体流程和1.2.2 类似,区别在于,这里是按列来进行self-attention(同一个位置的氨基酸在不同蛋白质之中的权重)
1.2.4 MSA transition
(两个transition是一样的)
这个就是一个MLP
1.2.5 Outer product mean
1.2.6 Triangular multiplicative update
类似的,只是变成出边
注意:由于出边入边模块的先后问题,所以得到的矩阵不一定对称。
1.2.7 Triangular self-attention
上图是之前的按行attention,下图是这里的attention,可以看到是很类似的
伪代码部分也基本一样,不过这里论文的意思是第五行(attention加权的部分)使用了一定的三角性质
1.3 “decoder”部分
1.3.0 如何预测?
表达蛋白质3D结构最简单的方法是记录每个元素的3D坐标。
蛋白质进行旋转/平移是不影响蛋白质结构的,但是如果用3D坐标的话,绝对位置会发生变化——>所以这里使用的是相对位置
蛋白质可以想成主干+支链:
主干点我们记为x,那么链上面任意一个点/主干的后一个点可以看成y=Rt+x
根据3*3的矩阵R做旋转
根据x做平移
1.3.1 整体模型
1.3.2 IPA Invariant point attention
1.3.3 Backbone update
更新骨干各点的s和T
实验效果
.1 和其他项目的对比
- 每一列是一个模型(参赛队伍)
- 每一条柱状图是对应的模型,平均预测位置和真实位置的区别(单位是,即米,也即原子的大小)
- 可以看到AlphaFold 2的精度已经达到了原子精度,这是一个里程碑意义的精度
2 AlphaFold 预测的精度
- 蓝色的是AlphaFold 预测的结果
- 绿色的是实验室预测出来的结果
- 可以看到他们的误差确实在一个原子的大小(黑色球体)以内