CS224W-08-Graph Neural Networks

Graph Neural Network

本文为中文笔记翻译,其英文原文地址为Graph Neural Network

在上一节中,我们学习了如何使用“浅层编码器”表示图。这些技术为我们提供了在向量空间中表示图的强大方式,但也有其局限性。在本节中,我们将探索使用图神经网络克服限制的三种不同方法。

Limitation of “Shallow Encoders”(浅层编码器”的局限性)

  • 浅编码器无法缩放,因为每个节点都有唯一的嵌入。
  • 浅层编码器具有固有的传导性。它只能为单个固定图生成嵌入。
  • 不考虑节点的特征。
  • 不能将浅层编码器推广到具有不同损失函数的训练中。

幸运的是,图神经网络可以解决上述限制。

Graph convolutional Networks(GCN, 图神经网络)

传统上,神经网络是为固定大小的图设计的。例如,我们可以将图像视为网格图,或将一段文本视为线图。但是,现实世界中的大多数图具有任意大小和复杂的拓扑结构。因此,我们需要不同地定义GCN的计算图。

假设给定图 G=(V,A,X)G=(V,A,X) :

  • VV 是顶点集合
  • AA 是邻接矩阵
  • XRm×VX \in \mathbb{R}^{m \times|V|} 是节点的特征矩阵

计算图和广义卷积CS224W-08-Graph Neural Networks
假设示例图(上图左图)为图 GG 。我们的目标是定义在图 GG 上的GCN计算图。计算图应同时保持图 GG 的结构和合并节点的相邻要素。例如,节点的嵌入向量 AA 应该包括它的邻居 {B,C,D}\left\{B,C,D\right\} 并且和 {B,C,D}\left\{B,C,D\right\} 的顺序无关。一种方法是简单地取 {B,C,D}\left\{B,C,D\right\} 的平均值。通常,聚合函数(上图右图中的方框)必须是阶不变的(最大值,平均值等)。上图具有两层计算图 GG 如下所示:CS224W-08-Graph Neural Networks

这里,每个节点都基于其邻居定义一个计算图。特别的,节点 AA 的计算图结构如下所示:(第0层是输入层,输入为节点特征 XiX_{i} ):CS224W-08-Graph Neural Networks

Deep Encoders(深度编码器)

有了以上想法,这是节点 vv 使用平均聚合函数的每一层的数学表达式 :

  • 在第0层: hv0=xvh_{v}^{0} = x_{v}, 表示节点特征
  • 在第k层:
    hvk=σ(WkuN(v)huk1N(v)+Bkhvk1),k{1,,K}h_{v}^{k}=\sigma\left(W_{k} \sum_{u \in N(v)} \frac{h_{u}^{k-1}}{|N(v)|}+B_{k} h_{v}^{k-1}\right), \forall k \in\{1, \ldots, K\}

hvk1h_{v}^{k-1} 是节点 vv 从上一层开始的嵌入。N(v)|N(v)| 是节点 vv 的邻居数。$\sum_{u \in N(v)}\frac{h_{u}^{k-1}}{|N(v)|} $ 的目的是聚合节点 vv 上一层的所有邻居特征。σ\sigma 是引入非线性的**函数(例如ReLU)。WkW_{k}BkB_{k} 是可训练的参数。

  • 输出层: zv=hvKz_{v}=h_{v}^K 是K层嵌入后的最后的嵌入层。

等效地,以上计算可以以写成整个图矩阵乘法的形式:
Hl+1=σ(HlW0l+A~HlW1l) such that A~=D12AD12 H^{l+1}=\sigma\left(H^{l} W_{0}^{l}+\tilde{A} H^{l} W_{1}^{l}\right) \text { such that } \tilde{A}=D^{-\frac{1}{2}} A D^{-\frac{1}{2}}

Training the Model

我们可以为这些嵌入提供给任何损失函数,并进行随机梯度下降训练参数。例如,对于二进制分类任务,我们可以将损失函数定义为:
L=vVyvlog(σ(zvTθ))+(1yv)log(1σ(zvTθ)) L=\sum_{v \in V} y_{v} \log \left(\sigma\left(z_{v}^{T} \theta\right)\right)+\left(1-y_{v}\right) \log \left(1-\sigma\left(z_{v}^{T} \theta\right)\right)
yv{0,1}y_{v}\in\left\{0,1\right\} 是节点类标签。zvz_{v} 是编码器的输出。$\theta $ 是分类权重。σ\sigma 可以是 sigmoid 函数。σ(zvTθ)\sigma(z^T_{v}\theta) 表示节点 vv 的预测概率。因此,如果标签为正 (yv=1)(y_{v}=1),则损失函数方程将计算前半部分,否则,损失函数方程将计算后半部分。
我们还可以通过以下方式以无监督的方式训练模型:随机游走,图形分解,节点接近等。

Inductive Capability(归纳能力)

GCN可以应用在图中看不见的节点。例如,如果使用节点 A,B,CA,B,C 训练模型,由于参数在所有节点之间共享,新添加的节点 D,E,FD,E,F 因此也可以进行评估。CS224W-08-Graph Neural Networks

GraphSAGE

本文为中文笔记翻译,其英文原文地址为Graph Neural Networks
到目前为止,我们已经探索了一种简单的邻域聚合方法,但是我们还可以将聚合方法概括为以下形式:
hvK=σ([WkAGG({huk1,uN(v)}),Bkhvk1]) h_{v}^{K}=\sigma\left(\left[W_{k} A G G\left(\left\{h_{u}^{k-1}, \forall u \in N(v)\right\}\right), B_{k} h_{v}^{k-1}\right]\right)
对于节点 vv,我们可以应用不同的汇总方法(AGGAGG)与将其邻居和节点 vv 本身的特征相连接。

下面是一些常用的聚合函数:

  • 平均值:取其邻居的加权平均值。
    AGG=uNvhuk1N(v) AGG=\sum_{u\in N_{v}}\frac{h_{u}^{k-1}}{|N(v)|}

  • 池化:转换邻居向量并应用对称向量函数( γ\gamma 可以是按元素的均值或最大值)。
    AGG=γ({Qhuk1,uN(v)}) AGG=\gamma(\left\{Qh_{u}^{k-1},\forall u\in N(v)\right\})

  • LSTM:使用LSTM应用于重组后的邻居。
    AGG=LSTM({huk1,uπ(N(v))}) AGG=LSTM(\left\{h_{u}^{k-1},\forall u\in \pi (N(v))\right\})

Graph Attention Networks(图注意力网络)

如果某些相邻节点携带的信息比其他节点更重要怎么办?在这种情况下,我们希望通过使用注意力技巧将不同的权重分配给不同的相邻节点。

假设 αvu\alpha_{vu} 是节点 uu 向节点 vv 传递的信息的加权因子(重要性)。 根据上面的平均聚合函数,我们定义了 α=1N(v)\alpha=\frac{1}{|N(v)|}。但是,我们也可以基于图的结构特性显式定义 α\alpha

Attention Mechanism(注意力机制)

αuv\alpha_{uv} 为计算注意力机制 aa 的副产物,它根据节点对 u,vu,v 的消息计算注意力系数 evue_{vu}
evu=a(Wkhuk1,Wkhvk1) e_{vu}=a(W_{k}h_{u}^{k-1}, W_{k}h_{v}^{k-1})
evue_{vu} 表示了节点 uu 向节点 vv 传递的信息的重要性,然后,我们使用 softmax 函数归一化系数以比较不同邻居之间的重要性:
α=exp(evu)kN(v)exp(evk) \alpha=\frac{\exp(e_{vu})} {\sum_{k\in N(v) \exp (e_{v k})}}
因此有:
hvk=σ(uN(v)αvuWkhuk1) h_{v}^{k}=\sigma(\sum_{u \in N(v)}\alpha_{v u}W_{k}h_{u}^{k-1})
该方法与的选择的 aa 无关,并且可以与 WkW_{k} 一起训练参数。

参考

以下是有用的参考资料列表:

教程和概述:

基于注意力的邻居节点聚合:

整个图嵌入:

节点嵌入:

图神经网络的谱方法:

其他GNN方法