等变性
什么是等变性
设 \(T_g:X\to X\) 是 \(g\in G\) 上的 transformation,\(\phi:X\to Y\) 是一个函数,若存在 \(S_g:Y\to Y\) 使得 \[ \phi(T_g(x))=S_g(\phi(x)) \] 则称 \(\phi\) 对于 \(g\) 等变。
若 \[ \phi(T_g(x))=\phi(x) \] 则 \(\phi\) 对于 \(g\) 不变。
为什么要有等变性
思考分子有关的问题时,我们通常将原子建模成图的节点,化学键建模为图的边。考虑几个简单的分子性质,如势能和原子受力。
势能 | 受力 | |
---|---|---|
平移 | 不变 | 不变 |
旋转 | 不变 | 改变 |
置换 | 不变 | 改变 |
镜面对称/手性 | 不变 | 改变 |
主要考虑以下四种不变/等变性:
- 置换(permutation)不变/等变性。实现这个是比较简单的,保证模型不依赖输入的顺序即可。
- 平移不变性。只要模型不依赖于原子的绝对坐标就可以。
- 手性似乎影响不大,研究较少。
- 旋转不变/等变性。实际上容易出问题的就是这一部分。
一些群的名字
- 我们知道旋转矩阵是正交的,其行列式一定为 1。
- \(O(n)\) 表示 n 阶正交矩阵群(othorgonal),那么其行列式为 1 的表示旋转矩阵,-1 的表示旋转+对称。
- \(SO(n)\) 是 \(O(n)\) 的子群,S = special,表示全体旋转矩阵。
- \(E(n)\) 表示 \(O(n)\) 中的所有元素再加上平移变换(Euclidean),也就是旋转+平移+对称。
- \(SE(n)\) 表示任意旋转+平移。
如何保证等变性
首先可以保证所有的操作是线性的,并且是很严格的线性,即计算 \(\mathbf{y}=a\mathbf{x}+b\) 时,\(a\) 和 \(b\) 都必须是标量。
另外可以引入内积,范数等进行标量化。 \[ R\mathbf{a}\cdot R\mathbf{b}=\mathbf{a}\cdot \mathbf{b}\\\\ \]
EGNN
传统 GNN 的工作流程可以分为三步:
- 消息传递,通过两点距离 \(a_{ij}\) 和两点的 feature/隐变量,套一个神经网络;
- 聚合,通常是将邻居的消息相加;
- 迭代获得新的隐变量。
\[ \mathbf{m}_{ij} = \phi_e(\mathbf{h}_i^l, \mathbf{h}_j^l, a_{ij}) \]
\[ \mathbf{m}_{i} = \sum_{j \in \mathcal{N}(i)} m_{ij} \]
\[ \mathbf{h}_{i}^{l+1} = \phi_h(\mathbf{h}_i^l,\mathbf m_i) \]
这种模型只引入节点的标量距离,导致模型并不具有旋转等变性。直接把坐标加到消息传递的每一步就可以解决。 \[ \mathbf{m}_{ij}=\phi_e(\mathbf{h}_{i}^{l},\mathbf{h}_j^{l},\lVert \mathbf{x}_i^l-\mathbf{x}_j^l\rVert_2^2,a_{ij}) \]
\[ \mathbf{m}_i=\sum_{j\neq i}\mathbf{m}_{ij} \]
\[ \mathbf{h}_i^{l+1}=\phi_h(\mathbf{h}_i^l,\mathbf m_i),\ \mathbf{x}_i^{l+1}=\mathbf{x}_i^l+C\sum_{j\neq i}\phi_x(\mathbf{m}_{ij}) \] 需要注意的是,这样得到的隐变量 \(\mathbf{h}_l\) 是不变的。