回收次数基础概念
如果非要给 AlphaFold 的回收次数找个通俗定义——
说白了,它就是一套让结构预测“反复打磨”的迭代机制。
我刚开始接触这个参数时,以为它只是简单地把模型多跑几遍。结果项目里有一次跑了 20 轮回收,结构反而比 3 轮还差。嗯,从那次起我就知道,回收次数远不是“越多越好”那么简单。
回收次数的定义
AlphaFold 在预测蛋白质结构时,不会一下子输出最终结果。它会先生成一个初始结构,然后把这个结构反馈回模型,当作下一轮的部分输入。这个过程重复若干次,每次重复就叫一次“回收”(recycling)。
- 回收次数设定:在配置文件中通过
num_recycles参数控制,常见范围 0–20。 - 与训练时的默认值:官方训练默认是 3 次回收,但实际推理时可能需要调整。
- 单次回收做了什么:把上一轮的预测结构编码为新的主链扭转角等特征,与原始序列特征拼接,再送进主干网络继续预测。
说白了,每次回收都是拿上一轮的结果重新“润色”一次。就像一个画家先画草稿,觉得不对就擦掉重画,但每一次重画都参考了上一次的轮廓。
迭代优化的原理
为什么需要反复回收?因为 AlphaFold 的模型本质是一个多尺度循环架构。每次回收都在缩小预测结构与真实结构之间的残差。
我个人的理解是这样——
- 第一轮:模型只能靠序列特征和模板猜测大致折叠模式,精度很低,可能只有 6Å。
- 第二轮:有了上一轮的结构信息,模型能修正局部二级结构和 loop 区走向,精度提升到 3–4Å。
- 第三轮:进一步优化侧链堆积和氢键网络,精度逼近 1–2Å(对全局好预测的区域)。
- 后续轮次:模型开始陷入细节震荡,如果回收过多,反而会被之前轮次的噪音带偏。
| 回收轮次 | 主要作用 | 典型提升幅度 |
|---|---|---|
| 0 轮(不回收) | 仅靠单次前馈 | 很差,如 8–10Å |
| 1–3 轮 | 快速收敛 | 每轮 1–3Å 提升 |
| 4–8 轮 | 精细调优 | 每轮 0.5–1Å |
| > 8 轮 | 过度拟合风险 | 可能倒挂 0.5–1Å |
为什么会倒挂?我记得有一次处理一个 multi-domain 蛋白,设了 12 轮回收,结果 pLDDT 从 85 掉到了 79。后来发现是因为模型在高回收次数下,对上一轮的错误结构过于自信,反而把正确区域扭曲了。这就是所谓的回收过饱和。
警告:不要认为回收次数越多精度必然越高。我在项目中观察到,对同源模板很少的孤儿蛋白,3 轮回收的效果经常优于 8 轮。请在验证集上做网格搜索,而不是盲目沿用论文默认值。
与传统分子动力学的差异
很多刚入门的朋友会把 AlphaFold 的回收和分子动力学(MD)里的退火、平衡跑混为一谈。其实二者差别非常大。
- 计算对象不同:MD 用牛顿力学模拟原子运动,每个时间步都基于力场计算加速度;AlphaFold 回收没有物理力场,全靠神经网络学到的统计规律。
- 时间尺度不同:MD 至少需要纳秒级(106 步)才能看到有效构象变化;AlphaFold 一次回收只需要几秒(GPU),整个回收过程不过几十秒。
- 收敛方式不同:MD 收敛于能量极小点;AlphaFold 回收收敛于模型对结构分布的置信度(pLDDT 和 predicted TM-score)。
- 不确定性来源:MD 受力场参数和热浴速度影响;AlphaFold 回收受输入特征和模型参数影响,是纯粹的统计预测误差。
简单打个比方——MD 像是在实验室里摇试管看分子怎么动,AlphaFold 回收像是在数据库里翻遍了已知结构,然后猜这个蛋白最可能是哪个样子。两者没有好坏之分,用途不同。
实战观点:如果你处理的是构象变化大的蛋白(比如膜蛋白、柔性 linker),且手头有同源结构,可以先跑 AlphaFold 回收得到一个可靠模型,再以此模型启动 MD 模拟。回收次数控制在 3–6 轮比较稳妥,过多回收会把 MD 的初始结构引入“神经统计偏差”。
核心知识框架
上面这张图应该能帮你理清关系:序列特征送入预测模块,产出结构,再通过回收回路(虚线)反复迭代,最终输出决定。控制好回收次数,才能平衡精度和计算开销。
个人习惯:我每次跑一个新蛋白,会先试 3、6、10 轮回收,用 predicted TM-score 变化曲线判断。如果 3 轮和 6 轮的 predicted TM-score 差距不到 0.02,我就选 3 轮——省显卡时间。如果超过 0.05,我会加到 6 轮,并盯住 pLDDT 不降反升的位置。