Understanding Convolution on Graphs via Energies
概
从能量角度理解 GNN, 虽然角度不是最新的, 但是写得非常好.
符号说明
- \(\mathsf{G} = (\mathsf{V, E})\), 图;
- \(n := |\mathsf{V}|\), 结点个数;
- \(\mathsf{E} \subset \mathsf{V \times V}\), edge set;
- \(\mathbf{A}\), adjacency matrix \(a_{ij} = 1 \text{ if } (i, j) \in \mathsf{E}\);
- \(\mathbf{F} \in \mathbb{R}^{n \times d}\), node features;
- \(\mathbf{f}_i \in \mathbb{R}^d, i \in \mathsf{V}\), 行向量;
- \(\mathbf{f}^r \in \mathbb{R}^n, r = 1, 2, \ldots, d\), 列向量;
- \(\text{vec}(\mathbf{F}) \in \mathbb{R}^{nd}\), stacking all columns;
- \(\mathbf{D} \in \mathbb{R}^{n \times n}\), 度矩阵;
- \(\mathbf{\tilde{A}} := \mathbf{D}^{-1/2} \mathbf{A} \mathbf{D}^{-1/2}\), normalized adjacency matrix;
- \(\mathbf{\tilde{L}} := \mathbf{I} - \mathbf{D}^{-1/2} \mathbf{A} \mathbf{D}^{-1/2}\), normalized graph Laplacian;
Dirichlet energy and Gradient-flow
-
Dirichlet energy 常常被用来衡量 node features 关于图 \(\mathsf{G}\) 的平滑度:
\[\tag{1} {\Large \varepsilon}^{\text{Dir}} (\mathbf{F}) := \text{trace}(\mathbf{F}^T \Delta \mathbf{F}) = \frac{1}{2} \sum_{(i, j) \in \mathsf{E}} \| (\nabla \mathbf{F})_{ij} \|^2, \quad (\nabla \mathbf{F})_{ij} := \frac{\mathbf{f}_i}{ \sqrt{d_j} } - \frac{ \mathbf{f}_i }{ \sqrt{d_i} }. \] -
假设我们结点的特征 \(\mathbf{F}(t)\) 与时刻 \(t\) 有关, 很自然地我们会希望监控它的一个变换情况:
\[\tag{2} \dot{\mathbf{F}}(t) = \mathcal{F}(\mathbf{F}(t)). \]特别地, 我们称上述的 evolution equation 为 gradient flow, 当
\[\mathcal{F}(\mathbf{F}(t)) = -\nabla {\Large \varepsilon}(\mathbf{F}(t)). \]注: 这里包括之后 \(\nabla {\Large \varepsilon}\) 都是 \(\nabla_{\mathbf{F}} {\Large \varepsilon}\) 的缩写. 这里 \({\Large \varepsilon}\) 是某种 energy 形式, 比如上述的 Dirichlet energy.
-
在这种情况下, 我们有:
\[\begin{array}{ll} \dot{\Large \varepsilon} (\mathbf{F}(t)) &= \dot{\mathbf{F}}^T \nabla {\Large \varepsilon} \\ &= (-\nabla {\Large \varepsilon})^T \nabla {\Large \varepsilon} \\ &= -\|\nabla {\Large \varepsilon}\|^2. \end{array} \] -
故而可以发现, gradient flow 会导致 \(\mathbf{F}(t)\) 朝着降低 energy \({\Large \varepsilon}\) (注意, 这里 energy 不限定是 Dirichlet energy) 的方向演变.
Heat equation
-
让我们来看看当 energy 为 Dirichlet energy 的例子, 此时我们有
\[\tag{3} \dot{\mathbf{F}}(t) = -\nabla {\Large \varepsilon}^{\text{Dir}}(\mathbf{F}(t)) =- 2\mathbf{\tilde{L}} \mathbf{F}, \]由上述分析可知, 这种演变方式会促使 \({\Large \varepsilon}^{\text{Dir}} \rightarrow 0\).
-
当我们用 Euler 方法对上述 gradient flow 进行离散的时候, 有:
\[\mathbf{F}(t + \Delta t) = \mathbf{F}(t) - 2 \Delta \mathbf{F}(t) \Delta t, \]取 \(\Delta t = 1/2\), 便有
\[\mathbf{F}(t + \frac{1}{2}) = \mathbf{\tilde{A}} \mathbf{F}(t), \]这就是最一般的 GCN (不带 weight matrix). 故而最一般的 GCN 会导致 over-smoothing.
注: 作者在讨论这一点的时候, (3) 是不带系数 \(2\) 的, 此时 (3) 就是个 heat equation. 不过我感觉这样顺下来逻辑会更加顺畅一点.
Gradient flows on graphs: th learnable case
-
现在让我们看一下比较复杂的情况:
\[\mathbf{F}_{t+1} = \mathbf{F}_t + \sigma \big( - \mathbf{F}_t \Omega_t + \mathbf{\tilde{A}} \mathbf{F}_t \mathbf{W}_t -\mathbf{F}_0 \mathbf{\tilde{W}}_t \big). \] -
它实际上是如下 evolution equation 的离散化 (step size = 1):
\[\tag{4} \dot{\mathbf{F}}(t) = \sigma \big( - \mathbf{F}(t) \Omega(t) + \mathbf{\tilde{A}} \mathbf{F}(t) \mathbf{W}_t -\mathbf{F}(0) \mathbf{\tilde{W}}_t \big) \] -
当且仅当 \(\Omega, \mathbf{W}\) 对称的时候, (4) 是一个 gradient flow, 所对应的 energy 为 (实际上应该整体乘上 1/2):
\[\tag{5} {\Large \varepsilon}_{\theta} (\mathbf{F}) = \underbrace{ \sum_{i} \langle \mathbf{f}_i, \Omega \mathbf{f}_i \rangle }_{{\Large \varepsilon}_{\Omega}^{\text{ext}}} - \underbrace{ \sum_{i, j} \mathbf{\tilde{A}}_{ij} \langle \mathbf{f}_i, \mathbf{W} \mathbf{f}_i \rangle }_{{\Large \varepsilon}_{\mathbf{W}}^{\text{pair}}} + \underbrace{ \varphi^0 (\mathbf{F}, \mathbf{F}(0)) }_{{\Large \varepsilon}_{\varphi^0}^{\text{source}}} \]其中
\[\varphi^0(\mathbf{F}, \mathbf{F}(0)) = 2 \sum_i \langle \mathbf{f}_i, \mathbf{\tilde{W}} \mathbf{f}_i (0) \rangle. \] -
我们有:
\[\dot{\mathbf{F}}(t) = -\frac{1}{2} \nabla_{\mathbf{F}} {\Large \varepsilon}_{\theta}(\mathbf{F}(t)) = - \mathbf{F}(t) \Big( \frac{\Omega + \Omega^T}{2} \Big) + \mathbf{A} \mathbf{F}(t) \Big( \frac{\mathbf{W} + \mathbf{W}^T}{2} \Big) - \mathbf{F}(0) \mathbf{\tilde{W}}. \]这也是为什么要求 \(\Omega, \mathbf{W}\) 对称的原因.
Attraction and repulsion
-
让我们简化一下 (5), 将 \(\varphi^0\) 移除, 并且定义:
\[\mathbf{W} = \Theta_+^T \Theta_+ - \Theta_-^T \Theta_-, \]由此, 我们可以得到
\[{\Large \varepsilon}_{\theta} (\mathbf{F}) = \underbrace{ \sum_i \langle \mathbf{f}_i, (\Omega - \mathbf{W}) \mathbf{f}_i \rangle }_{graph-independent} + \underbrace{ \frac{1}{2} \sum_{i,j \in \mathsf{E}} \|\Theta_+ (\nabla \mathbf{F})_{ij}\|^2 }_{attraction} - \underbrace{ \frac{1}{2} \sum_{i,j \in \mathsf{E}} \|\Theta_- (\nabla \mathbf{F})_{ij}\|^2 }_{repulsion}. \] -
即, gradient flow, 分为了与 graph 无关的项, 以及 attraction 项和 repulsion 项, 前者使得结点从周围邻居吸收信息, 后者促使结点排斥邻居信息. 这两部分信息, 实际上决定了 GNN 是 smoothing 还是 sharpening 特征.
Low vs high frequency dominant dynamics: a new measure
-
后面, 我们进一步假设 \(\Omega = 0\), 主要讨论 attraction 和 repulsion 对于低频和高频信息的影响.
-
令 \(\mathbf{\tilde{L}}\) 的特征值和特征向量为:
\[\{(\lambda_k \in \mathbb{R}, \phi_k \in \mathbb{R}^d)\}_{k=0}^{n-1}, \]且满足
\[0 = \lambda_0 \le \lambda_1 \le \cdots \le \lambda_{n-1}. \] -
我们定义:
- Low-Frequercy-Dominant (LFD):
\[{\Large \varepsilon}^{\text{Dir}}( \mathbf{F}(t)) / \|\mathbf{F}(t)\|^2 \mathop{\longrightarrow} \limits^{t \rightarrow \infty} 0. \]- High-Frequercy-Dominant (HFD):
\[{\Large \varepsilon}^{\text{Dir}}( \mathbf{F}(t)) / \|\mathbf{F}(t)\|^2 \mathop{\longrightarrow} \limits^{t \rightarrow \infty} \lambda_{n-1}. \] -
换言之, 我们认为当 \(\mathbf{F}(t)\) 塌缩由 \(\phi_0\) 决定的时候, 就是主要由低频信号主导, 反之若塌缩到由 \(\phi_{n-1}\) 决定的时候, 就是主要由高频信号主导.
-
Theorem 4.3. 对于 \(\dot{\mathbf{F}}(t) = \mathbf{\tilde{A}} \mathbf{F}(t) \mathbf{W}\), 令 \(\mu_0 \le \mu_1 \le \ldots \le \mu_{d-1}\) 为 \(\mathbf{W} \in \mathbb{R}^{d \times d}\) 的特征值. 若
- \(|\mu_0| (\lambda_{n-1} - 1) > \mu_{d-1}\), 则对于几乎所有的 \(\mathbf{F}(0)\), 该 evolution 是 HFD 的;
- \(|\mu_0|(\lambda_{n-1} - 1) < \mu_{d-1}\), 则对于几乎所有的 \(\mathbf{F}(0)\), 该 evolution 是 LFD 的.
-
Theorem 4.3 告诉我们, 通过 \(\mathbf{W}\) 可以控制整个过程是低频导向的或者高频导向的.
-
证明这一点需要利用 Kronecker Product \(\otimes\):
\[\mathbf{A} \otimes \mathbf{B} = \left [ \begin{array}{ccc} a_{11} \mathbf{B} & \cdots & a_{1n} \mathbf{B} \\ \vdots & \ddots & \vdots \\ a_{m1} \mathbf{B} & \cdots & a_{mn} \mathbf{B} \\ \end{array} \right ] \in \mathbb{R}^{mp \times nq}, \quad \mathbf{A} \in \mathbb{R}^{m \times n}, \mathbf{B} \in \mathbb{R}^{p \times q}. \] -
一些比较好的性质是:
- 向量化:\[\text{vec}(\mathbf{AXB}) = (\mathbf{B}^T \otimes \mathbf{A}) \text{vec}(\mathbf{X}) \]
- 特征值 (假设 \(\mathbf{A} \in \mathbb{R}^{m \times m}, \mathbf{B} \in \mathbb{R}^{n \times n}\) 是对称的), 若 \(\lambda_i^A, i=0,1,\ldots, m - 1\) 是 \(A\) 的特征值, \(\mu_j^B, j=0,1,\ldots, n-1\) 是 \(B\) 的特征值, 则\[\lambda_i^A \cdot \mu_j^B, \quad i=0,1,\ldots, m - 1, j=0,1,\ldots, n - 1 \]是 \(\mathbf{A} \otimes \mathbf{B}\) 的特征值.
而且, 如 \(\mathbf{x}, \mathbf{y}\) 分别是 \(\lambda_i^A, \mu_j^B\) 所对应的特征向量, 则\[\mathbf{y} \otimes \mathbf{x} \]也是 \(\lambda_i^A \cdot \mu_j^B\) 所对应的特征向量.
- 向量化:
-
此时我们可以将 evolution equation 改写为:
\[\dot{\mathbf{F}}(t) = \mathbf{\tilde{A}} \mathbf{F}(t) \mathbf{W} \\ \Rightarrow \text{vec}(\dot{\mathbf{F}}(t)) = (\mathbf{W}^T \otimes \mathbf{\tilde{A}}) \text{vec}(\mathbf{F}(t)). \] -
此时 \(\mathbf{W}^T \otimes \mathbf{\tilde{A}}\) 的特征值为:
\[\mu_i (1 - \lambda_j), \quad i=0,1,\ldots, d-1, \: j=0,1,\ldots, n-1. \] -
用 \(\psi, \phi\) 分别表示 \(\mathbf{W}, \mathbf{\tilde{A}}\) 的特征向量, 我们可以把上述的方程拆解为:
\[\text{vec}(\dot{\mathbf{F}}(t)) = \sum_{r=0}^{d-1} \sum_{\ell=0}^{n-1} c_{r, \ell}(t) \psi_r \otimes \phi_{\ell}, \quad c_{r,\ell}(t) := \langle \text{vec}(\mathbf{F}(t)), \psi_r \otimes \phi_{\ell} \rangle. \] -
进一步我们可以求解得到它的显式表达式:
\[\text{vec}(\mathbf{F}(t)) = \sum_{r=0}^{d-1} \sum_{\ell=0}^{n-1} e^{\mu_r(1 - \lambda_{\ell}) t} c_{r, \ell}(0) \psi_r \otimes \phi_{\ell}, \quad c_{r,\ell}(0) := \langle \text{vec}(\mathbf{F}(0)), \psi_r \otimes \phi_{\ell} \rangle. \] -
很显然, \(\mu_i (1 - \lambda_j)\) 的最大值如下几种可能性:
\[\rho:= \max_{r, \ell} \: \mu_r(1 - \lambda_{\ell}) = \left \{ \begin{array}{ll} \mu_0 (1 - \lambda_{n-1}) & \mu_0 < 0, \mu_0(1 - \lambda_{n-1}) > \mu_{d-1}, \\ \mu_{d-1} & \text{else}. \end{array} \right . \] -
如此一来, 我们有:
\[\begin{array}{ll} \text{vec}(\mathbf{F}(t)) &= e^{\rho t} \bigg(\sum_{r=0}^{d-1} \sum_{\ell=0}^{n-1} e^{[\mu_r(1 - \lambda_{\ell}) - \rho] t} c_{r, \ell}(0) \psi_r \otimes \phi_{\ell} \bigg) \\ &\approx \sum_{r, \ell: \mu_r(1 - \lambda_{\ell}) = \rho} e^{\mu_r(1 - \lambda_{\ell})t} c_{r, \ell}(0) \psi_r \otimes \phi_{\ell}. \end{array} \] -
故
\[\frac{ \text{vec}(\mathbf{F}(t)) }{ \|\text{vec}(\mathbf{F}(t))\|^2 } \mathop{\longrightarrow} \limits^{t \rightarrow \infty} \text{Norm}\{\psi_{r} \otimes \phi_{\ell}\}_{r, \ell: (1 - \lambda_{\ell}) = \rho} . \] -
实际上, 只有两种可能, 一种是 \(\mathbf{F}(t)\) 的每一列往 \(\phi_0\), 即低频靠近 (此时, \(\mu_0 (1 - \lambda_{n-1}) < \mu_{d-1}\)), 反之往高频信号 \(\phi_{n-1}\) 靠近.
代码
[official]