Frame

文章目录

    • [1. 引入 Frame](#1. 引入 Frame)
    • [2. Gram-Schmidt 正交化](#2. Gram-Schmidt 正交化)
    • [3. 坐标系的升降维](#3. 坐标系的升降维)
      • [3.1 局部化 (Localize / Global-to-Local)](#3.1 局部化 (Localize / Global-to-Local))
      • [3.2 全局化 (Globalize / Local-to-Global)](#3.2 全局化 (Globalize / Local-to-Global))
    • [4. 残基气体 (Residue Gas) 与黑洞初始化](#4. 残基气体 (Residue Gas) 与黑洞初始化)
    • [5. S E ( 3 ) SE(3) SE(3) 流形上的更新](#5. S E ( 3 ) SE(3) SE(3) 流形上的更新)

在处理蛋白质这种具有复杂约束的生物大分子时,如果你还停留在"点云(Point Cloud)"的思维模型里,那算法的搜索空间就太大了。在 OpenFold 和 AF2 的架构中,核心的直觉是将残基建模为 S E ( 3 ) SE(3) SE(3) 空间中的刚体。

这一章我们重点讨论:如何从混乱的原子坐标中抽象出标准的局部框架(Local Frames)。

1. 引入 Frame

在第一章我们提到了 S E ( 3 ) SE(3) SE(3) 不变性。直接回归 N N N 个原子的 ( x , y , z ) (x, y, z) (x,y,z) 坐标会面临两个致命问题:

  1. 自由度冗余:原子间的键长和键角在物理上基本是锁死的,直接回归坐标会导致化学结构的畸变。
  2. 参考系缺失:没有局部坐标系,模型很难学习到诸如"侧链相对于骨架的偏转"这种相对几何信息。

因此,我们给每个残基 i i i 定义一个变换矩阵 T i = ( R i , t i ) T_i = (R_i, \mathbf{t}_i) Ti=(Ri,ti)。

  • t i \mathbf{t}i ti (Translation):通常定位于 C α C\alpha Cα 的位置,承载了位置信息。
  • R i R_i Ri (Rotation):承载了残基骨架的指向信息。

2. Gram-Schmidt 正交化

我们需要从三个骨架原子 x N , x C a , x C \mathbf{x}N, \mathbf{x}{Ca}, \mathbf{x}_C xN,xCa,xC 中"搓"出一个标准正交基 R = e x , e y , e z R = \\mathbf{e}_x, \\mathbf{e}_y, \\mathbf{e}_z R=ex,ey,ez

注意,由于真实的原子位置存在热振动或模型预测偏差, N − C α N-C_\alpha N−Cα 和 C − C α C-C_\alpha C−Cα 两个向量通常不是严格垂直的。为了构建直角坐标系,我们必须使用 Gram-Schmidt 过程:

  1. 确定 x x x 轴:我们人为规定 C α → C C_\alpha \rightarrow C Cα→C 为主轴。

    v 1 = x C − x C a , e x = v 1 ∥ v 1 ∥ \mathbf{v}_1 = \mathbf{x}C - \mathbf{x}{Ca}, \quad \mathbf{e}_x = \frac{\mathbf{v}_1}{\|\mathbf{v}_1\|} v1=xC−xCa,ex=∥v1∥v1

  2. 构建平面的辅助向量:取 N → C α N \rightarrow C_\alpha N→Cα 方向的向量 v 2 = x N − x C a \mathbf{v}_2 = \mathbf{x}N - \mathbf{x}{Ca} v2=xN−xCa。

  3. 计算 z z z 轴(法向量):通过叉乘直接得到垂直于 N − C α − C N-C_\alpha-C N−Cα−C 平面的向量。

    e z = unit ( e x × v 2 ) \mathbf{e}_z = \text{unit}(\mathbf{e}_x \times \mathbf{v}_2) ez=unit(ex×v2)

  4. 补全 y y y 轴:再通过一次叉乘,确保三者构成右手系。

    e y = e z × e x \mathbf{e}_y = \mathbf{e}_z \times \mathbf{e}_x ey=ez×ex

这样得到的 R i = e x , e y , e z R_i = \\mathbf{e}_x, \\mathbf{e}_y, \\mathbf{e}_z Ri=ex,ey,ez 是一个完美的正交矩阵。在 OpenFold 的代码实现中,这个逻辑被封装在 Rigid.from_3_points 函数里。

3. 坐标系的升降维

在动力学算法中,会频繁用到以下两个数学操作,这是所有 IPA 注意力和力场计算的基石:

3.1 局部化 (Localize / Global-to-Local)

将空间中任意一点 x \mathbf{x} x 投影到残基 i i i 的视角下:

x l o c a l = R i T ( x − t i ) x_{local} = R_i^T (\mathbf{x} - \mathbf{t}_i) xlocal=RiT(x−ti)

注:由于 R i R_i Ri 是正交阵,其逆变换就是转置。

3.2 全局化 (Globalize / Local-to-Global)

将残基内部定义的理想原子坐标映射回实验室坐标系:

x g l o b a l = R i x l o c a l + t i x_{global} = R_i x_{local} + \mathbf{t}_i xglobal=Rixlocal+ti

4. 残基气体 (Residue Gas) 与黑洞初始化

在深度学习训练的初始阶段,我们其实并不知道蛋白质长什么样。OpenFold 采用了一个非常激进的策略:Residue Gas。

  • 物理状态:所有残基在初始时刻都是独立的,互不连接,就像一团气体。
  • 黑洞初始化 (Black Hole Initialization):我们将所有的 T i T_i Ti 都初始化为 ( I , 0 ) (I, \mathbf{0}) (I,0)。
    • 这意味着最初所有的残基都重叠在坐标原点。
    • 随着 Structure Module 层数的加深,模型通过 IPA(下一节内容) 预测出 Δ T i \Delta T_i ΔTi,逐渐将这些残基"推"到它们该去的位置。

这种设计强制模型去学习如何从零构建全局拓扑,而不是依赖输入的初始坐标偏置。

5. S E ( 3 ) SE(3) SE(3) 流形上的更新

这里有个细节:我们能不能直接对 R i R_i Ri 做加法更新?绝对不行。

旋转矩阵 R R R 属于 S O ( 3 ) SO(3) SO(3) 李群,普通的加法会破坏其正交性。在每一层更新中,模型会预测一个李代数元素(通常是一个增量旋转向量 ω ⃗ \vec{\omega} ω 和位移向量 v ⃗ \vec{v} v ),然后通过指数映射将其映射回 S E ( 3 ) SE(3) SE(3)。

T n e w = T o l d ∘ exp ⁡ ( Δ ξ ) T_{new} = T_{old} \circ \exp(\Delta \xi) Tnew=Told∘exp(Δξ)

这种在流形上更新姿态的做法,保证了蛋白质结构在迭代过程中永远不会出现"化学键拉断"或"原子变形"的数值误差。

下一章预告:

既然每个残基都有了自己的 Frame,它们该如何"交流"?下一章我们将拆解最难的点:IPA (Invariant Point Attention),看看它是如何在不破坏 S E ( 3 ) SE(3) SE(3) 不变性的前提下,让两个 Frame 产生跨越空间的吸引力。

相关推荐
用户0183493016943 分钟前
用Zustand管理AI多会话状态
人工智能
武子康3 小时前
调查研究-198 Agent 到底该记住什么?读懂《What Must Generalist Agents Remember?》
人工智能·openai·agent
aqi004 小时前
15天学会AI应用开发(九)利用Chroma持久化向量数据
人工智能·python·大模型·ai编程·ai应用
武子康5 小时前
调查研究-197 FAISS vs Elasticsearch 全面对比:从向量检索、全文搜索到 RAG 选型指南
人工智能·elasticsearch·agent
青禾网络5 小时前
Web 前端如何接入 AI 音效生成:从零到可用的完整方案
人工智能·设计模式
用户252736278145 小时前
【技术实战】用 Spring Boot + Vue3 + LM Studio 在本地跑通 RAG 知识库
人工智能
用户5191495848455 小时前
VBScript随机数生成器内部机制:从时间种子到密码令牌破解
人工智能·aigc
米小虾6 小时前
Context Engineering —— 知识与记忆的窗口
人工智能·agent
IT_陈寒6 小时前
Python里这个赋值坑,连老司机都能翻车
前端·人工智能·后端