<<AlphaFold2专题>>
上一篇文章谈了一下alphafold所解决的问题,以及相关的一些背景知识。这一篇则为高潮部分,算法讲解。结合李沐老师的讲解和github上已经开源的代码(非官方)结合讲解。官方还未release alphafold2的代码似乎。
整体可以分成三个部分:
从上到下其实有三种特征构建的方式。最上面是从Genetic database当中搜索类似的氨基酸序列排序方式。
如图中描述的:
从目前已经检测出来的序列当中,发现,鱼类、兔子、鸡中存在一段相同长度的氨基酸序列,其中大部分的氨基酸都相同。有一些片段相同就行,类似字符串匹配的过程
这里有这样的先验知识:类似的氨基酸序列会存在这类似的空间结构。所以在数据库中检索类似的系列对精度有很大贡献。
这里MSA是Multi Sequence Alighment,多序列对齐特征。
这里是有这样一个RxR的矩阵,R为输入的人体的氨基酸序列的长度。这个矩阵也就是描述序列中每一个核苷酸和其他核苷酸之间的关系。因为空间结构会卷起来,就是氨基酸之间的相互作用导致的
我们已经知道了很多的结构信息,我们知道部分真实的氨基酸对在空间中是什么样子的。我们在这个数据库中搜索,来获取这部分绝对正确的信息。
输入到Evoformer编码器的有两种类型的数据。先说一下evoformer是一个transformer类型的结构,这个肯定是一件好事。我之前就怕这个特征提取过程,是一个特别奇怪的,类似于图网络的算法。还好是transforemr这种比较常见的结构。但是常见transformer都是单输入的,这里有两个输入,那么必然是一种变种的transforemr架构。我们一会看代码中再来考虑这个transformer的结构。
输入了两个数据,分别是:
也很简单,经过编码器的处理后,我们只需要MSA特征的第一行,也就是目标氨基酸序列的特征,然后后结合Pair representation的特征信息,将其解码出空间中的坐标、或者是相邻氨基酸角度距离等位置信息就可以绘制3D结构图了。
可以看到,这里加入循环机制,反正输入特征输出特征形状都一样,那么我加入类似RNN的循环推理的策略,也可以提高最终的空间精度。但是,这里和RNN不同的地方在于,RNN循环的时候梯度的是传播的,这里回收的时候梯度是不传播的。所以不会出现梯度大爆炸的问题。类似小样本二分类分割领域的研究,有一个非常经典的算法CAnet还是PAnet,做小样本学习的一个模型。这种循环的策略,经常会用在半监督、小样本这种相对困难的问题上,因为当存在某种东西不确定的时候,模型推理结构也不一定正确的时候,用这种迭代的方式,可能可以增加鲁棒性和样本多样性吧
1, 目前为止构建了alphafold的模型的大框架,三个部分;2,MSA的构建是通过类似字符串匹配的方式,这个可以接受;但是氨基酸之间的关系和结构数据库两部分的特征,我没有一点的概念,这个依然是一个疑点。3.evoformer结构还没有概念,不过这个看代码和看论文补充材料可以解决。END