Inductive Representation Learning on Large Graphs
概
以往的 GCN 通常会对图中的每个结点赋予 embeddings, 但是这严重限制了扩展性, 并造成资源浪费, 本文所提出的 GraphSAGE 则是通过网络来生成每个结点的 embedding.
符号说明
- \(\mathcal{G} = (\mathcal{V}, \mathcal{E})\), 图;
- \(\bm{x}_v, v \in \mathcal{V}\), 每个结点 \(v\) 的特征, 倘若没有特征, 可以用诸如 degree 等替代;
- \(\mathcal{N}(v)\), 结点 \(v\) 的一阶邻居结点;
算法
- 初始化结点特征 \(h_v^0 = \bm{x}_v\);
- 每一层对每一个结点 \(v\) 进行如下操作:
- \(\bm{h}_{\mathcal{N}(v)}^k \leftarrow \text{AGGREGATE}_k(\{\bm{h}_u^{k-1}, \forall u \in \mathcal{N}(v)\})\);
- \(\bm{h}_v^k \leftarrow \sigma(\mathbf{W}^k \cdot \text{CONCAT}(\bm{h}_v^{k-1}, h_{\mathcal{N}(v)}^k))\), 其中 \(\mathbf{W}^{k}\) 为第 \(k\) 层的权重矩阵;
- \(\bm{h}_v^k \leftarrow \bm{h}_v^k / \|\bm{h}_v^k\|_2\);
- 最后 \(\bm{z}_v \leftarrow \bm{h}_v^K\) (\(K\) 为总共的层数);
- 采用如下的损失进行优化:\[J_{\mathcal{G}} (\bm{z}_u) = -\log (\sigma(\bm{z}_u^T \bm{z}_v)) - Q \cdot \mathbb{E}_{v_n \sim P_n(v)} \log (\sigma(-\bm{z}_u^T \bm{z}_{v_n})), \]其中 \(\bm{z}_v, \bm{z}_{v_n}\) 分别为 \(\bm{z}_u\) 的正负样本, \(Q\) 为负样本的数量.
算法中的 Aggregator 作者提供了三种:
-
Mean aggregator:
\[\bm{h}_v^k \leftarrow \sigma(\mathbf{W} \cdot \text{MEAN}(\{\bm{h}_v^{k-1} \}\cup \{\bm{h}_u^{k-1}, \forall u \in \mathcal{N}(v)\})); \] -
LSTM aggregator;
-
Pooling aggregator:
\[\max(\{\sigma(\mathbf{W}_{pool} \bm{h}_{u}^k + \bm{b}), \forall u \in \mathcal{N}(v)\}), \]其中 \(\max(\cdot)\) 是 element-wise 的.
注: 对于邻居结点 \(\mathcal{N}(v)\), 作者并不采用全部的邻居, 而是采样固定数量的邻居.
代码
[official]