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