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) G=(V,A,X) :

  • V V V 是顶点集合
  • A A A 是邻接矩阵
  • X ∈ R m × ∣ V ∣ X \in \mathbb{R}^{m \times|V|} XRm×V 是节点的特征矩阵

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

这里,每个节点都基于其邻居定义一个计算图。特别的,节点 A A A 的计算图结构如下所示:(第0层是输入层,输入为节点特征 X i X_{i} Xi ):在这里插入图片描述

Deep Encoders(深度编码器)

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

  • 在第0层: h v 0 = x v h_{v}^{0} = x_{v} hv0=xv, 表示节点特征
  • 在第k层:
    h v k = σ ( W k ∑ u ∈ N ( v ) h u k − 1 ∣ N ( v ) ∣ + B k h v k − 1 ) , ∀ 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\} hvk=σ(WkuN(v)N(v)huk1+Bkhvk1),k{1,,K}

h v k − 1 h_{v}^{k-1} hvk1 是节点 v v v 从上一层开始的嵌入。 ∣ N ( v ) ∣ |N(v)| N(v) 是节点 v v v 的邻居数。$\sum_{u \in N(v)}\frac{h_{u}^{k-1}}{|N(v)|} $ 的目的是聚合节点 v v v 上一层的所有邻居特征。 σ \sigma σ 是引入非线性的激活函数(例如ReLU)。 W k W_{k} Wk B k B_{k} Bk 是可训练的参数。

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

等效地,以上计算可以以写成整个图矩阵乘法的形式:
H l + 1 = σ ( H l W 0 l + A ~ H l W 1 l )  such that  A ~ = D − 1 2 A D − 1 2 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}} Hl+1=σ(HlW0l+A~HlW1l) such that A~=D21AD21

Training the Model

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

Inductive Capability(归纳能力)

GCN可以应用在图中看不见的节点。例如,如果使用节点 A , B , C A,B,C A,B,C 训练模型,由于参数在所有节点之间共享,新添加的节点 D , E , F D,E,F D,E,F 因此也可以进行评估。在这里插入图片描述

GraphSAGE

本文为中文笔记翻译,其英文原文地址为Graph Neural Networks
到目前为止,我们已经探索了一种简单的邻域聚合方法,但是我们还可以将聚合方法概括为以下形式:
h v K = σ ( [ W k A G G ( { h u k − 1 , ∀ u ∈ N ( v ) } ) , B k h v k − 1 ] ) 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) hvK=σ([WkAGG({huk1,uN(v)}),Bkhvk1])
对于节点 v v v,我们可以应用不同的汇总方法( A G G AGG AGG)与将其邻居和节点 v v v 本身的特征相连接。

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

  • 平均值:取其邻居的加权平均值。
    A G G = ∑ u ∈ N v h u k − 1 ∣ N ( v ) ∣ AGG=\sum_{u\in N_{v}}\frac{h_{u}^{k-1}}{|N(v)|} AGG=uNvN(v)huk1

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

  • LSTM:使用LSTM应用于重组后的邻居。
    A G G = L S T M ( { h u k − 1 , ∀ u ∈ π ( N ( v ) ) } ) AGG=LSTM(\left\{h_{u}^{k-1},\forall u\in \pi (N(v))\right\}) AGG=LSTM({huk1,uπ(N(v))})

Graph Attention Networks(图注意力网络)

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

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

Attention Mechanism(注意力机制)

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

参考

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

教程和概述:

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

整个图嵌入:

节点嵌入:

图神经网络的谱方法:

其他GNN方法

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值