2. AlphaFold原理简介:Evoformer与Structure Module的核心设计思想
聊到AlphaFold,很多人第一反应是“它怎么把序列变成结构的?”其实说白了,整条流水线上最核心的两个引擎,就是Evoformer和Structure Module。我刚开始啃这块的时候,也觉得概念挺绕,但一旦搞懂它们各自在干什么,后面调参就有方向了。
2.1 两条线索:MSA表示与Pair表示
你想想看,蛋白质结构预测本质上是猜每个原子在三维空间中的坐标。但光看一条序列,信息量远远不够。AlphaFold聪明在哪呢?它同时维护两套信息:
- MSA表示(1D序列信息):多序列比对的加权演化信息,告诉你哪些位置保守、哪些容易突变。
- Pair表示(2D残基对信息):任意两个残基之间的距离、相对位置、共进化关系。
这两条线索在Evoformer里不断交叉更新,互相“喂”信息。我在项目中遇到过一种情况:如果MSA质量差,Pair表示也学偏了,结果结构预测直接崩掉。所以从一开始,这两者的交互设计就是整个网络的基石。
2.2 Evoformer:信息交换的“核反应堆”
Evoformer干了件很聪明的事——它不是简单把MSA和Pair拼在一起,而是设计了五组带外积的交互模块。我个人的习惯是把Evoformer想象成一个会议室:
- MSA行/列注意力:每个序列、每个位置都在“听”其他位置的演化信号。
- Pair更新与三角乘法:残基对之间的三维几何约束通过三角不等式传递。
- 外积均值:把MSA的整体演化信号压缩成残基对的更新信号。
为什么要用“外积”?你可能已经想到了,序列层面的共进化信息需要在残基对层面表达出来。外积恰好能完成这个升维任务:从[N_seq, N_res, d_msa]变换为[N_res, N_res, d_pair]。
在实际配置里,这些东西会体现为一些超参数。比如Evoformer块的数量、MSA特征维度、Pair特征维度等。下面是个典型的配置片段:
# AlphaFold模型配置核心参数(Evoformer部分)
model:
heads:
evoformer:
num_blocks: 48 # 堆叠多少个Evoformer块(越多越深)
msa_channel: 256 # MSA表示的特征维度
pair_channel: 128 # Pair表示的特征维度
seq_channel: 384 # 单序列的嵌入维度
triangle_multiplication: true # 是否启用三角乘法更新
outer_product_mean: true # 是否使用外积均值连接
这里num_blocks: 48是我踩过的坑之一。当初为了省显存,把块数削到24,结果预测精度直接掉了一个档次。后来发现,Evoformer的深度直接影响残基对信息的传播距离,太浅了根本学不到长程相互作用。
2.3 Structure Module:从抽象到坐标的“解算器”
如果说Evoformer是“大脑”,那Structure Module就是“手”——它负责把抽象的表征变成具体的三维坐标。这里面有一个非常优雅的设计:IPA(Invariant Point Attention),也就是等变点注意力。
IPA为什么重要?因为蛋白质结构具有三维空间的旋转和平移不变性。你想想看,如果网络学到的坐标会随着整体旋转而改变,那训练就白费了。IPA通过将注意力计算建立在相对坐标和局部框架上,天然保证了预测结果的等变性。
具体来说,Structure Module反复执行以下操作:
- 将残基表征映射为局部框架(每个残基定义自己的坐标系)。
- 在局部框架内计算注意力,更新主链扭转角。
- 通过扭转角重建完整原子坐标。
这个循环通常重复8次,每次都在微调骨架的精度。我在调试过程中发现,迭代次数太少(比如4次)会导致某些侧链的摆放明显错误,但增加到12次以上收益就非常小了。所以默认的8次是个合理平衡点。
2.4 两条流如何汇合?
Evoformer和Structure Module的数据流向是这样的:
- Evoformer输出单序列表示(每个残基的抽象向量)和Pair表示(残基对的特征)。
- Structure Module拿到单序列表示开始构建初始骨架。
- 每次迭代时,Pair表示会作为成对偏差注入到IPA的注意力计算中。
- 最终多次迭代收敛到一组三维坐标。
我用个简单的示意图帮你理清这个关系:
num_blocks来强制网络做更充分的信息交换。
2.5 两个模块的对比总结
| 维度 | Evoformer | Structure Module |
|---|---|---|
| 输入 | 原始MSA矩阵 + 初始Pair矩阵 | 单序列表示 + Pair表示 |
| 核心操作 | 行/列自注意力、三角乘法、外积均值 | IPA(等变点注意力)、框架回归、扭转角重建 |
| 输出 | 精炼的MSA表示 + Pair表示 | 每个残基的主链+侧链三维坐标 |
| 循环方式 | 48个串行块(共享参数/独立参数均可) | 8次迭代(共享参数,重复应用) |
| 核心设计理念 | 穷尽序列空间的演化信息,构建残基对约束 | 在局部等变框架下逐步逼近真实几何结构 |