目录
概
往常的 GNN 所使用的 feature aggregation 部分可以看成是对之前 feature transformation 结果的一个去噪, 而去噪的方式决定了不同的网络: GCN, GAT, PPNP ...
符号说明
- \(\mathcal{G} = (\mathcal{V}, \mathcal{E})\), 图;
- \(|\mathcal{V}| = N\);
- \(A \in \mathbb{R}^{N \times N}\), 邻接矩阵;
- \(D\), diagonal degree matrix;
- \(L = D - A\), Laplacian matrix, 此外 \(L = I - D^{-\frac{1}{2}}AD^{-\frac{1}{2}}, L = I - D^{-1}A\) 通常称为 normalized matrix;
- \(N(v)\), \(v\) 的邻居结点;
- \(\tilde{N}(v) = N(v) \cup \{v\}\);
- \(X \in \mathbb{R}^{N \times d_{in}}\), 每个 GNN Layer 的输入;
- \(H \in \mathbb{R}^{N \times d_{out}}\), 每个 GNN Layer 的输出;
Feature transformation and aggregation
大部分的 GNN 都可以归结为 feature transformation and aggregation 两个部分.
GCN
-
Feature Transformation:
\[X' = XW; \] -
Feature Aggregation:
\[\tag{2} H = \tilde{A}X', \\ \tilde{A} = \hat{D}^{-\frac{1}{2}}\hat{A}\hat{D}^{-\frac{1}{2}}, \: \hat{A} = A + I. \]
GAT
-
Feature Transformation:
\[X' = XW; \] -
Feature Aggregation:
\[\tag{4} H_i = \sum_{j \in \tilde{N}(i)} \alpha_{ij}X_j', \]其中
\[\alpha_{ij} = \frac{\exp(e_{ij})}{\sum_{k \in \tilde{N}(i)}\exp(e_{ik})}, \\ e_{ij} = \text{LeakyReLU}([X_i' \| X_j']\bm{a}). \]
PPNP
-
Feature Transformation:
\[X' = \text{MLP}(X); \] -
Feature Aggregation:
\[\tag{6} H = \alpha (I - (1 - \alpha)\tilde{A})^{-1} X', \]aggregation 的逆通常通过如下的多步迭代逼近 (此时称该方法为 APPNP):
\[\tag{7} H^{(k)} = (1 - \alpha)\tilde{A}H^{(k-1)} + \alpha X' \: k = 1,\ldots, K. \]
Graph Signal Denoising
作者认为, 上述方法的 aggregation 实际上就是下列问题的一个特例:
\[\tag{8} \text{argmin}_F \: \mathcal{L} = \|F - S\|_F^2 + c \cdot \text{tr}(F^TLF), \]即 \(S \leftarrow X'\), 而我们所追求的 \(H\) 就是 denoise 后的 \(F\).
-
首先来看为什么 (8) 是一个 graph signal denosing 问题:
- 注意到 \(\|F - S\|_F^2\) 实际上是在要求 \(F\) 逼近 \(S\), 即 \(H\) 逼近 \(X'\);
- \(\text{tr}(F^TLF) = \frac{1}{2} \sum_{i \in \mathcal{V}} \sum_{j \in \mathcal{\tilde{N}}(i)} \|F_i - F_j\|_2^2\), 实际上就是一个结点和它邻居间的一个 smoothness 的限制 (注意, 公式成立要求 \(A\) 是二元的).
-
接下来我们看看如何 GCN, GAT, PPNP 改写为 (8) 的形式.
GCN
-
注意到
\[\nabla_F \mathcal{L}|_{F=S} = 2cLS, \]所以倘若我们采用梯度下降求解 (8), 的第一步迭代 (初始化 \(F^{(0)} = S\)) 为:
\[F \leftarrow S - \lambda \cdot (2cLS) = (1 - 2\lambda c) S + 2\lambda c \tilde{A}S, \]当 \(\lambda = 1 / 2c, S = X'\) 的时候
\[F \leftarrow \tilde{A} X', \]此为 (2).
-
故 GCN 的 aggregation 部分就是 (8) 的一步下降.
PPNP
-
首先, 令 \(\nabla_F \mathcal{L} = 0\) 可得
\[F^* = (I + cL)^{-1}S = \frac{1}{1 + c}(I - \frac{c}{1 + c} \tilde{A})^{-1} S, \]取 \(c=\frac{1}{\alpha} - 1, S = X'\) 即为 (6);
-
考虑 (8) 的多步迭代:
\[\begin{array}{ll} F^{(k)} &\leftarrow F^{(k-1)} - \lambda \nabla_{F}|_{F=F^{(k-1)}} \\ &= (1 - 2\lambda - 2\lambda c) F^{(k-1)} + 2\lambda S + 2\lambda c \tilde{A}F^{(k-1)}, \end{array} \]当 \(\lambda = \frac{1}{2 + 2c}\) 的时候有
\[F^{(k)} \leftarrow \frac{1}{1 + c}S + \frac{c}{1 + c}\tilde{A}F^{(k-1)}, \]取 \(S = X', c = \frac{1}{\alpha} - 1\) 即为 (7).
GAT
-
GAT 较为复杂, 它实际上是一种自适应的 smoothness 方法, 它对于的 graph signal denoising 问题实际上是:
\[\tag{17} \text{argmin}_F \: \mathcal{L} = \|F - S\|_F^2 + \frac{1}{2} \sum_{i \in \mathcal{V}} c _i\sum_{j \in \mathcal{\tilde{N}}(i)} \|F_i - F_j\|_2^2. \] -
注意到
\[\nabla_{F_i}\mathcal{L}|_{F_i = S_i} = \sum_{j \in \tilde{N}(i)} (c_i + c_j)(S_i - S_j); \] -
故 (17) 的一步迭代为:
\[\begin{array}{ll} F_i &\leftarrow S_i - \lambda_i \cdot \nabla_{F_i} \mathcal{L}|_{F_i = S_i} \\ &= (1 - \lambda_i \sum_{j \in \tilde{N}(i)} (c_i + c_j)) S_i + \sum_{j \in \tilde{N}(i)} \lambda_i (c_i + c_j) S_j, \end{array} \]取 \(\lambda_i = 1 / \sum_{j \in \tilde{N}(i)} (c_i + c_j)\), 等价于
\[F_i \leftarrow \sum_{j \in \tilde{N}(i)} \frac{c_i + c_j}{\sum_{k \in \tilde{N}(i)} (c_i + c_k)} S_j. \]我们可以把 \(\alpha_{ij}\) 理解为 \(\frac{c_i + c_j}{\lambda_i}\).
UGNN
如此一来, 我们可以把 aggregation 归结对如下的问题的求解或者近似:
\[\text{argmin}_F \: \mathcal{L} = \|F - S\|_2^2 + r(\mathcal{C}, F, \mathcal{G}), \]其中 \(r(\cdot, \cdot, \cdot)\) 是一个正则化项, 用以引入 smoothness.
-
作者认为, GAT 成功的一个原因就是它不是完完全全的 global-smoothness, 它是带有自适应的局部的一个 smoothness;
-
于是作者采取了一个类似的正则化项:
\[r(\mathcal{C}, F, \mathcal{G}) = \frac{1}{2}\sum_{i \in \mathcal{V}}c_i \sum_{j \in \tilde{N}(i)} \|\frac{F_i}{\sqrt{d_i}} - \frac{F_j}{\sqrt{d}_j}\|_2^2; \] -
类似上面的做法, 可以推出如下的 aggregation function (一个 GNN Layer 共 \(K\) 次迭代用以逼近上述问题):
\[H_i^{(k)} \leftarrow 2\lambda_i X_i' + \lambda_i \sum_{v_j \in \tilde{N}(v_i)} (c_i + c_j) \frac{H_j^{(k-1)}}{\sqrt{d_id_j}}, \: k=1,\ldots, K, \]其中
\[\lambda_i = 1 / (2 + \sum_{j \in \tilde{N}(i)} (c_i + c_j) / d_i). \] -
特别地, \(c_i\) 用如下方式拟合:
\[c_i = s \cdot \sigma(h_1(h_2(\{X_j'|j \in \tilde{N}(i)\}))), \]\(h_1, h_2\) 是一些函数.
代码
[official]
标签:Unified,frac,Neural,Graph,sum,alpha,tilde,mathcal,lambda From: https://www.cnblogs.com/MTandHJ/p/16738008.html