为什么说 AlphaFold 2 足以改变全人类?( 五 )


为什么说 AlphaFold 2 足以改变全人类?

在MSATransformer里 , MSA被作为输入 , 每层的注意力层被拆分为了横向attention和纵向attention 。 其中 , 横向attention就是每个氨基酸序列里的self-attention , 纵向attention是相同位置的去看其他氨基酸序列里是否被替换了氨基酸还是大家都相同 。 它比较神奇的一个结论是 , 最好的下游任务结果出现在 , 横向的attention所有的氨基酸序列共享attention分布 , 即 , 使用整个MSA的横向attention平均值作为每个蛋白质的attention 。 这就意味着 , MSATransformer的结论可以被认为是 , 单个氨基酸序列的信息表达太差了(比如之前的工作) , 还不如使用整个MSA的平均值去表达更通用的信息 。 (然而事实真的如此吗?很可能是因为之前对单个氨基酸序列的建模能力太差而已 , 更好的结构应该是MSA得到更多的信息和特征 , 再用我们想要的那条特定氨基酸序列进一步优化修改 , 比如我们将要看到的AlphaFold2 。 )同期还有其他的三维结构预测文章 , 但是效果都比不上AlphaFold2 , 暂不介绍 。 与AlphaFold2同一天放出来的另外几个工作效果很好 , 与AlphaFold2性能相似甚至更好 , 时间所限 , 还来不及阅读(RoseTTAFold等) 。
3AlphaFold2
算法简述
根据上面介绍的基础知识和相关工作 , 我们感叹这个工作确实难度很高 , 也非常好奇AlphaFold2里究竟如何使用MSA信息 , 如何又增强突出出来当前自己这条氨基酸序列的能力 , 如何使用的模板信息 , 又是怎样超直接endtoend训练的三维位置坐标的 。 过去的半年里 , 很多小伙伴等不及了 , 甚至猜着模型结构去开源AlphaFold2的猜测代码[3] , 甚至获得了500多个星标 。 如今 , 我们终于盼来了真正的开源代码[4] , 在写这篇文章时(开源后一天的周六) , 已经获得了超过3千的星标 。 先再次回忆一下之前放出来的结构图:
为什么说 AlphaFold 2 足以改变全人类?

然后我们再看一下这次刚刚放出来论文里的结构图:
为什么说 AlphaFold 2 足以改变全人类?

时间匆忙 , 16页的正文 , 62页的附录算法 , 仍然是细节来不及看 , 我们大体的过一过AlphaFold2算法 , 反正也不是做这个的 , 我们NLP的小伙伴一起学习学习思想就可以了~Alphafold2提出了一个新的结构去同时嵌入MSA和残基-残基对儿的特征(没错 , 不是每个残基一个隐状态 , 是每个残基之间都有一个隐状态来描述他俩之间的关系 , 我们把每对儿残基之间的隐状态叫做pairwisefeatures) , 新的输出表示去确保准确的端到端训练 , 以及新的辅助loss 。 此外 , 在finetune训练之前 , AlphaFold2首先预训练了一把 , 在MSA上使用BERT任务遮盖住一些氨基酸再还原回来 , 此外还使用自蒸馏 , 自估计的loss去自监督学习(先用训好的模型在只有氨基酸序列的数据上生成预测结果 , 然后只保留高确信度的 , 然后使用这个数据预训练 , 在训练时把输入加上更强的dropout和mask , 来增大学习难度 , 去预测完整信息时高确信度的结果) 。 结构由两部分组成 , Evoformer和结构模块(StructureModule) 。 Evoformer输入MSA , 模板 , 自己的氨基酸序列 , 输出MSA信息和残基-残基对关系(刚刚提到的pairwisefeatures)建模 。 结构模块中 , 丢掉MSA中的其他氨基酸序列 , 只保留目标的那一条 , 然后再加上pairwisefeatures , 去计算更新backboneframes , 预测所有氨基酸的方位和距离 , 肽键的长度和角度 , 氨基酸内部的扭转角度等 。
Evoformer即进化former , 进化魔改Transformer , 用来计算MSA和pairwisefeatures 。 开源之前我们猜测模板是很重要的一个信息 , 结果发现匹配到的模板信息仅仅通过一些特征提取的函数被塞进了MSA里面当成给目标氨基酸序列做更新时参考使用的数据 。 具体结构如下图 , 输入MSA和pairwisefeatures , 通过很多注意力层 , 最终输出MSA和pairwisefaetures