由于工作比较忙的原因,最近没有太跟进蛋白质折叠领域的更新.临近过年有一点时间可以拿出来用,所以就查了一下AlphaFold2的原理.遗憾的是无论在知乎,微信还是简书上都没有看到对于模型架构之美的阐述,更有少数声音认为AlphaFold2跟过去的模型大差不差,更多地是认为它只是DeepMind的工程能力的体现,也有些是关注神经网络的实现细节,或者蛋白质预测对于生命科学的重要意义. 但是我本人作为一只前生信狗,看到AlphaFold2的架构,不得不说是非常震撼的,比AlphaGo给我的震撼要大很多.鉴于生物信息和NLP和DeepLearning之间的相关性,我想简单谈一下AlphaFold2对于Transformer和生物信息的一些启示.
(吐嘈:知乎现在太慢了,刘看山能不能管一管页面反应速度?少搞几个跳转,会少很多钱吗?)
要点:
- 参考: https://www.blopig.com/blog/2021/07/alphafold-2-is-here-whats-behind-the-structure-prediction-miracle/
- 传统同源蛋白质结构预测是基于经验势函数(Empirical Potential Function)的构造
- AlphaFold 1 是传统同源蛋白质结构预测的延续
- AlphaFold 2 是对同源蛋白质结构预测的原理性以及理念性创新
- 传统
传统同源蛋白结构预测,无论是Modeller,SwissModel等一众预测软件的目标都是预测给定蛋白质的目标结构(TargetStructure),都是通过氨基酸的序列层级信息,结合相关结构模板,构建一个评估函数f(Struct),为各种可能的蛋白质结构模型打分,这个函数隐含了结构模板对于目标结构的约束.然后通过调整预测结构最大化这个评估函数,来获得一个对于目标结构的预测.我们可以简单抽象为
`序列比对及模板收集 --(提取结构约束)--> 评估函数 --(优化评估函数)--> 目标结构`
- AlphaFold 1
2020发表在Nature的AlphaFold 1整体上采取的就是传统的结构预测框架,所以如果说AlphaFold1对于
序列比对及模板收集 --(通过神经网络,提取结构约束)--> 评估函数 --(通过梯度下降,优化评估函数)--> 目标结构
因为架构没有大的变化,所以AlphaFold1的成功的原因在此不做分析
- AlphaFold2
序列比对及模板收集 ---->通过神经网络,提取结构约束 -->
通过神经网络,更新序列比对 --> 通过神经网络,更新结构约束 -->
通过神经网络,更新序列比对 --> 通过神经网络,更新结构约束 -->
通过神经网络,更新序列比对 --> 通过神经网络,更新结构约束 -->
(...重复48次...)
-->通过结构网络,预测最终结构
可以看到,中间这个重复的过程,在以前的架构中是不存在的,序列比对从来都是一个单独的过程,比对好了以后一般就不动了,但是AlphaFold2创造性地将输入和输出混为一谈,把原本作为输入的序列比对,也作为了输出的一部分,可见Transformer和注意力机制对于模型的启发. 从这个角度上讲,序列比对本身也是可以在结构预测过程中提升的,结构约束和序列比对是一体两面的两种表达形式,通过结构约束我们可以导出序列比对结果,也可以通过序列比对结果导出结构约束.在引入了这个循环性质的模块以后,AlphaFold 2看起来就像一个认真的核糖体,一点一点把蛋白质给折叠出来.(视频见2021论文).
俗话说有图有真相,AlphaFold 2的48层Transformer确实惊艳,这样的架构让模型跳出了传统的单纯优化评估函数的框架,而是把评估函数和折叠过程隐含在Transformer的逐层推进过程中,因此我们可以想见,任何需要做单纯优化的势函数,其实都可以用这种办法改造成Transformer模块,也就是通过某种方式把势函数本身扩展成一个迭代更新的组分, 其实在构建势函数的时候,各种模型都会寻求参数化,但是这些参数化可能在某种程度上都是被某些假设给约束了的有限参数化. AlphaFold2成功的原因可能就在于,用最少的假设,和最适合的网络结构,从数据中去学习了一种在电脑中折叠蛋白质的过程.从中,我们可以得出的模型建构的启发如下
- 减少假设: MSA多序列比对不必是固定的,可以从固定参数降级成一个迭代参数的初始化
- 合适的网络结构: 对于迭代性很强的任务,使用Transformer而不是其他
- 迭代过程: 蛋白质折叠过程是可以被分拆的, 传统的分拆模式可能就是反复梯度下降,但是现在是反复Transformer
当然,这一切的前提,是你买的到黄老板的GPU :D