📑 本页目录(点开跳转)
04 · 从序列到结构:换一个没有对称性的预测目标
⏱ 24 分钟 | ⭐ 别预测坐标,预测距离 —— 因为坐标有对称性而距离没有
🎯 一句话
结构预测最难的一点不在网络,在于输出空间。 你要输出几千个原子的三维坐标,而整体旋转平移之后是同一个答案 —— ⭐ 直接回归坐标 + MSE 是错的。整章讲一个通用的绕法:换一个等价但没有对称性的预测目标。
🎯 一、为什么不能直接回归坐标
分类问题输出一个类别,回归输出一个数,都是唯一确定的。 而结构不是:把整个分子旋转 30 度、再平移 10 埃,它还是同一个分子、同一个答案。
于是麻烦来了:
💀 同一个正确答案有无穷多组坐标,而 MSE 只认其中一组。 网络输出了一个完全正确但朝向不同的结构,损失函数会给它一个巨大的惩罚。 ⭐ 你在惩罚它答对。
⚠️ 这不是「训练慢一点」的问题,是梯度在教它错的东西。 你可以每步都先做一次最优对齐再算损失(后面第 3 节那个 Kabsch 就是干这个的), 但那让损失变得不平滑、也更难并行。
📏 二、于是先预测距离
⭐ 距离矩阵对旋转平移天然不变。 两个原子隔多远,你怎么转怎么挪它都不变。
| 坐标 $(N \times 3)$ | 距离矩阵 $(N \times N)$ | |
|---|---|---|
| 同一个结构有几种表示 | ⚠️ 无穷多 | ⭐ 一种 |
| 能直接上 MSE 吗 | ❌ | ✅ |
| 大小 | 小 | 大(平方级) |
| 是不是完整信息 | 是 | ⭐ 几乎是(见下一节) |
⭐⭐ 这就是全站可复用的那招: 当输出空间带着一个对称性、而你的损失函数不认它时, 换一个对这个对称性不变的等价目标去预测。
更省的做法是只预测接触图(距离小于某个阈值就算 1), 把回归变成二分类 —— 信息少了,但更好学,早期的方法大多从这里入手。
🔄 三、距离真的够吗:跑一遍
「几乎是」这个说法要验一下。下面从坐标算出距离矩阵,再只用距离矩阵把坐标恢复出来:
import numpy as np
rng = np.random.default_rng(0)
N = 12
coords = rng.normal(size=(N, 3)) * 5.0 # 真实的 12 个原子坐标
D = np.linalg.norm(coords[:, None] - coords[None, :], axis=-1) # 距离矩阵
# ---- 经典 MDS:只用距离矩阵,把坐标恢复出来 ----
J = np.eye(N) - np.ones((N, N)) / N # 中心化算子
B = -0.5 * J @ (D ** 2) @ J # 双中心化
vals, vecs = np.linalg.eigh(B)
top = np.argsort(vals)[::-1][:3] # 取最大的 3 个特征值
rec = vecs[:, top] * np.sqrt(np.maximum(vals[top], 0)) # 恢复出的坐标
D_rec = np.linalg.norm(rec[:, None] - rec[None, :], axis=-1)
print("距离矩阵最大偏差 : %.2e" % np.abs(D - D_rec).max())
print("坐标本身最大偏差 : %.3f" % np.abs(coords - rec).max())
print()
print("原坐标第 0 个原子 :", np.round(coords[0], 3))
print("恢复第 0 个原子 :", np.round(rec[0], 3))
print()
print("=> 距离完全一致,坐标却对不上 —— 差的正是一个整体刚体变换。")
# 验证:把恢复的坐标做最优刚体对齐(Kabsch)之后,坐标也对得上了
A = coords - coords.mean(0)
Bc = rec - rec.mean(0)
U, _, Vt = np.linalg.svd(Bc.T @ A)
d = np.sign(np.linalg.det(U @ Vt))
R = U @ np.diag([1, 1, d]) @ Vt
print("刚体对齐之后坐标最大偏差 : %.2e" % np.abs(A - Bc @ R).max())
真实输出:
距离矩阵最大偏差 : 1.07e-14
坐标本身最大偏差 : 23.145
原坐标第 0 个原子 : [ 0.629 -0.661 3.202]
恢复第 0 个原子 : [-1.686 -2.989 -1.984]
=> 距离完全一致,坐标却对不上 —— 差的正是一个整体刚体变换。
刚体对齐之后坐标最大偏差 : 8.88e-15
⭐⭐ 这三个数把整章的论点钉死了:
- 距离矩阵恢复到 1.07e-14 —— 机器精度,信息一点没丢
- 坐标本身差 23.145 —— 因为差着一个整体旋转平移
- 做完刚体对齐后回到 8.88e-15 —— ⭐ 差的确实【只】是那个刚体变换,别的什么都没差
⚠️ 两个真实的限制: ① 距离分不出镜像(把结构照镜子,所有距离不变),而分子的手性是真实的,要另外处理。 ② 真实场景里预测出的距离矩阵带噪、还不一定自洽(不满足三角不等式), 恢复出来的构型没有这里这么干净。
🧬 四、距离信息从哪来
回到 03 章:共进化就是接触信号。 MSA 里两列强相关 → 这两个残基大概率挨着 → 这是距离矩阵里的一格。
⚠️ 而 03 章也验过那个坑:互信息会把间接相关误报成接触 (实验里假接触拿到 2.973 bit,比背景高四十倍)。 ⭐ 所以从 MSA 到接触图这一步本身就需要「扣掉中介」,不是简单统计。
🔗 五、为什么端到端最后赢了
早期是分段的:MSA → 接触图 → 距离几何 → 结构。每一段单独优化。 后来的做法把这些合进一个网络一起训,思路上有三个改变:
- 序列表示和结构表示互相更新 —— 不是单向的流水线,而是反复来回。
- ⭐ 等变性内建进结构模块 —— 网络直接输出三维的东西, 但它的层被设计成「输入转一下、输出跟着转」,于是不再需要靠损失函数去消化对称性。 这是 05 章的正题。
- 端到端的梯度 —— 中间表示为最终目标服务,而不是为某个中间指标。
🗓️ 具体是哪一代模型、当前最好的是什么,请去查最新的。 ⭐ 不会过期的是这三条思路本身,以及第 2 条和第 1 节那个矛盾的关系 —— 要么换一个没有对称性的目标(第 2 节),要么把对称性内建进网络(第 5 节第 2 条)。 这两条路解决的是同一个问题。
⚠️ 六、拿到预测结构之后
① 置信度不是均匀的。 这类模型通常会给每个残基一个置信分数, ⚠️ 而天生无序的区域分数一定低 —— 那不是模型没预测好,是那个区域本来就没有固定构象。 💀 把低分区域当成「模型的错」去修,是在修一个不存在的问题。
② 预测结构不等于实验结构。 骨架大致对,不代表侧链朝向、结合口袋的细节能直接用。 ⚠️ 拿它去做对接和虚拟筛选时,误差会被放大。
③ 对分布外的序列不可靠。 和 03 章第五节同一条: 数据库里全是演化产物,你设计出来的序列不在那个分布里。
🔗 这一章连到哪里
| 去哪 | 为什么 |
|---|---|
| 05 · 等变与不变 | ⭐⭐ 同一个问题的另一条路。这一章:换一个对旋转不变的预测目标绕开对称性;那一章:把等变性内建进网络结构。第 5 节第 2 条就是那一章的入口 |
| 03 · 蛋白质语言模型 | 距离信息从哪来 —— 共进化,以及互信息会把间接相关误报成接触那个坑 |
| 07 · 评测的坑 | ⚠️ 结构预测的评估同样受同源泄漏影响:测试蛋白在训练集里有近亲,指标就是虚的 |
| 机器学习的数学原理 05b · PCA 的推导 | 第三节的经典 MDS 和 PCA 是同一套特征分解 —— 双中心化之后取最大的几个特征向量 |
✅ 检查点
- 为什么不能直接回归三维坐标 + MSE?说清机制。
- 距离矩阵解决了什么问题?它相比坐标付出了什么代价?
- 实验里三个数字各是多少?它们分别证明了什么?
- 距离矩阵有哪两个真实限制?
- 端到端做法的三个改变是什么?其中哪一条和第 2 节是「同一个问题的两条路」?
- 预测结构里置信度低的区域,一定是模型没预测好吗?
👀 答案
- 因为整体旋转平移之后是同一个结构 —— 同一个正确答案有无穷多组坐标,而 MSE 只认其中一组。💀 网络输出一个完全正确但朝向不同的结构会被给巨大惩罚,你在惩罚它答对。这不是训练慢的问题,是梯度在教错的东西。
- 距离对旋转平移天然不变,同一个结构只有一种表示,可以直接上 MSE。代价是大小变成平方级($N \times N$ 而不是 $N \times 3$)。
- 距离矩阵恢复偏差 1.07e-14(机器精度,信息没丢);坐标本身偏差 23.145(差着整体旋转平移);刚体对齐后回到 8.88e-15 —— ⭐ 证明差的只是那个刚体变换,别的什么都没差。
- ①分不出镜像(照镜子所有距离不变),而手性是真实的;②真实预测出的距离矩阵带噪且不一定自洽(不满足三角不等式),恢复的构型没有实验里这么干净。
- ①序列表示和结构表示互相更新(不是单向流水线)②等变性内建进结构模块③端到端的梯度。⭐ 第 2 条和第 2 节是同一个问题的两条路:要么换一个没有对称性的目标,要么把对称性内建进网络。
- 不一定。 天生无序的区域置信分数一定低 —— 那不是模型没预测好,是那个区域本来就没有固定构象。💀 把它当成「模型的错」去修,是在修一个不存在的问题。
🛑 可以停在这里
到这里你拿到了一个远不止用在结构预测上的招式: 输出空间带对称性、而损失函数不认它时,换一个对该对称性不变的等价目标。 ⭐ 这条思路在任何「预测几何对象」的问题上都成立。
⚠️ 什么时候看下一页:你想知道另一条路 —— 不换目标,而是把对称性直接写进网络结构。
⚡ 走神救援
先记住这几件事
- 同一结构可以有不同的整体位置与朝向,直接逐坐标比较可能惩罚正确预测。
- 距离等不变目标能消除部分坐标歧义,但要注意镜像和几何自洽性。
- 预测置信度、结构用途和实验验证需要分别判断,不能把预测结构当成实验事实。
下一节 👉 05-等变与不变.md