三维几何对称性与等变神经网络
读分子、材料方向的模型论文或代码,总会撞上同一串词:invariant / equivariant、SO(3) / O(3) / SE(3) / E(3)、irreps、parity、frame。它们看着像数学装饰,其实每一个都对应一个具体的工程后果:模型能不能区分对映体、要不要做旋转数据增强、坐标要不要先去质心、加一层能不能提高体数。
这篇笔记把这串词串起来:先说清每个词指什么,再看主流架构分别用哪条路线把它编进网络,以及各自的代价。
1. 为什么用坐标做输入就必须考虑对称性
同一个分子,换一个坐标系写出来就是另一组数字,但它的能量、力、电荷一个都没变。坐标带的信息比结构本身多,多出来的那部分(放在哪、朝哪转)是任意的。直接把 的坐标喂进网络,网络就得先自己把这部分多余的自由度学掉,才谈得上学真正的结构与性质之间的关系。对称性要解决的就是这件事。
物理上的说法是:对体系施加某些空间变换后,物理规律保持不变。把一个分子整体旋转,,它的能量不变,力的方向跟着转,电荷不变。一个直接以 为输入的网络,需要从数据里自己学会这些规律;等变神经网络(equivariant neural network)的思路是反过来,把对称性直接写进模型结构,让网络天然满足这些规律。
2. 群:一组可以组合的变换
群(group)描述的是一组可以连续组合的变换操作。所有三维旋转合在一起就构成旋转群,其中一个具体的元素 就是一次具体的操作,比如 表示绕 轴转 90°。下面讨论的所有对称性,都是在问「对输入做一个群元素 的操作,输出会怎么变」。
3. 不变与等变
不变性(invariance):
输入变了,输出不动。能量就是典型:,旋转不改变分子能量。适用于 energy、formation energy、adsorption energy 这类标量性质。
等变性(equivariance):
输入怎么变,输出按同样的规律跟着变。力是典型:,把结构转过去,力的方向也转过去。适用于 force、velocity 以及一般的矢量、张量性质。
不变性可以看成等变性的特例:输出上的 恰好什么都不做。
4. SO(3)、O(3)、SE(3)、E(3)
这四个都是三维空间里的变换群,区别只在于包含哪几种操作。
SO(3),三维特殊正交群(special orthogonal group):所有三维旋转。数学上是满足 且 的矩阵。只有旋转,不含镜像。
O(3),三维正交群(orthogonal group):同样要求 ,但允许 。 是旋转, 是镜像。所以 。
SE(3),三维特殊欧氏群(special Euclidean group):旋转加平移,,也就是刚体运动。分子、蛋白、任何三维物体在空间里挪动都属于这一类。
E(3),三维欧氏群(Euclidean group):旋转、平移、镜像全包含,,是最完整的三维欧氏变换群。
| 旋转 | 平移 | 镜像 | |
|---|---|---|---|
| SO(3) | ✓ | ||
| SE(3) | ✓ | ✓ | |
| O(3) | ✓ | ✓ | |
| E(3) | ✓ | ✓ | ✓ |
5. 行列式在这里管什么
上面反复出现的 是区分旋转和镜像的开关,值得单独说清楚。
是体积缩放,符号是空间方向。 的展开式按第一行余子式展开:
它等价于把三个行向量做标量三重积:
这个形式最有用,因为它一次性解释了「模是体积、符号是方向」这两句断言: 的模是两向量张成的平行四边形面积,再点乘 得到高乘底面积,就是平行六面体的体积;点乘的正负取决于 落在 的哪一侧,就是三个向量的左右手性。所以这两条不是独立的性质,是同一个式子的模和符号。
回到群: 保持空间方向,是旋转; 翻转空间,是镜像。SO(3) 只允许前者,O(3) 两者都允许。
6. 手性
如果一个结构无法通过旋转和平移变成自己的镜像,它就是手性的。写成式子:镜像为 ,若不存在任何 和 使 ,则 具有手性。
7. E(3) 还是 SE(3):取决于任务
两者的区别只有一条:是否包含镜像。看起来像是数学上的细节,实际是任务决定的。
对普通材料的能量,,镜像不影响能量,用 E(3) 对称是合理的,而且多一条对称约束等于多一条免费的先验。
对手性催化、手性分子的性质,左右手结构的行为不同,,就不能强制 E(3),只能保留 SE(3),让模型有能力区分对映体。
8. 从 SchNet 到 LEFTNet:对称性是怎么被编进网络的
早期的机器学习势函数(MLIP)不知道旋转和平移对称性,只能靠大量数据把它学出来。之后的每一代模型,本质上都是在回答同一个问题:怎么把对称性做进结构里,同时尽量少损失表达力。
SchNet 只用原子间距离 作输入。距离天然是旋转不变量,所以模型自动满足不变性。代价是丢掉了方向信息。
DimeNet 在距离之外加入角度 ,几何信息多了一层,但仍然走的是「输入就是不变量」的路线。
PaiNN 开始让隐藏特征带方向:每个原子同时有标量特征()和矢量特征(),矢量特征在旋转下跟着转。
NequIP 把这条路推到底:特征按 SO(3) 的不可约表示分解成 ,分别对应标量、矢量、张量,层与层之间用张量积传递。
MACE 在 NequIP 的基础上引入 Atomic Cluster Expansion 的思想。两点值得单独记住:
- 它的默认配置是 O(3) 不变,不是 SO(3)。源码里球谐函数默认用
p=1,所有 都标成偶宇称,反演下什么都不翻号;只有hidden_irreps里出现0o时才切换到追踪宇称的球谐。能量读出头是0e(真标量),所以能量在镜像下必然不变。这是对的,对映体能量严格相等。 - 它数据效率高的原因是多体:
correlation=ν让一层就得到 体相互作用,而代价仍是 (先求和再取幂,交叉项就是高阶体)。叠层数只扩感受野,每层仍是两体,替代不了这个。
LEFTNet 换了一条完全不同的路。前面从 SchNet 到 MACE,等变性都来自限制运算:MACE 只能做张量积,PaiNN / EGNN 只能做「标量乘矢量」。LEFTNet(Du et al., NeurIPS 2023,前身 ClofNet)反过来,限制坐标系:
1. 从局部几何造正交框 F = (e1, e2, e3) ← F 本身等变
2. 标量化 v̄ = (v·e1, v·e2, v·e3)
3. 对标量做【任意】神经网络 ← 无任何对称性约束
4. 张量化 v = v̄₁e1 + v̄₂e2 + v̄₃e3等变性由框在第 1、4 步扛住,中间随便怎么算。这是它能声称万有逼近的原因,MACE / NequIP 那一路做不到这种声称。
框由差矢量和叉乘构成:
两个后果值得记住:
- 手性只在 分量的符号里。 是伪矢量,所以 是伪标量。框本身恒为右手(),手性不在行列式里。代码里一个
torch.abs()就能把它抹掉。在 irreps 路线里丢不掉的东西,这里是一行代码的事。 - 框会退化:当 ,也就是两原子与质心共线时,。线性分子(CO₂、炔烃)去质心后每一对都共线,框塌成秩 1,而代码里的
+EPS只防 NaN,信息是静默丢掉的。
9. 四条路线的对照
到这里第 8 节走过的其实是四条不同的技术路线:
| 路线 | 等变性来自 | 代表 | 表达力上限 | 手性 |
|---|---|---|---|---|
| ① 只用不变量 | 输入就是不变量(距离、角度) | SchNet, DimeNet | 无法自然输出矢量;几何区分力有限 | 区分不了 |
| ② irreps + 张量积 | CG 规则限制允许的运算 | NequIP, MACE, EquiformerV2/V3 | 由 lmax、correlation 控制 | parity 标签,是类型系统的一部分 |
| ③ 笛卡尔标量×矢量 | 隐藏矢量只能被标量缩放、被相对位置相加 | PaiNN, EGNN | 实质只有 | 区分不了 |
| ④ 局部框 + 标量化 | 框本身等变;标量化后运算无约束 | ClofNet, LEFTNet | 万有逼近 | 一个开关(reflect_equiv) |
选择的实质是**「约束运算」还是「约束坐标系」**:
- ②③ 约束运算:对称性是结构性的,丢不掉;代价是表达力,以及 ② 的计算量。
- ④ 约束坐标系:表达力放开了,但框的良定性成为新的失效点,而且对称性变成可开关的软性质。
② 的计算量问题有专门的解法,EquiformerV2 的 SO(2) 技巧把 降到 ;④ 的框退化问题目前只有 +EPS 和加 dummy 原子两种权宜之计。irreps 的记账方式、MACE 的逐模块拆解、LEFTNet 框的数值验证、EquiformerV2 的 SO(2) 技巧,后面会分别单独整理。