图神经网络模型
The Graph Neural Network Model
图神经网络(GNN)作为一种更复杂的编码器模型,它的关键思想是生成取决于图结构的节点表示,以及可能拥有的任何特征信息。
卷积神经网络(CNN)适用于网格结构数据(如图像)、循环神经网络(RNN)适用于序列(如文本)
Permutation invariance and equivariance(置换/排列不变性和等变性)
任何采用邻接矩阵
A
A
A 作为输入的函数
f
f
f 理想情况下应满足以下两个属性之一:
f
(
P
A
P
⊤
)
=
f
(
A
)
(Permutation Invariance, PI : 置换输入元素的排列不改变输出)
f
(
P
A
P
⊤
)
=
P
f
(
A
)
(Permutation Equivariance, PE : 置换输入元素的排列会以同样方式置换输出的排列)
\begin{align} f(\mathbf{PAP}^\top) = f(\mathbf{A}) \qquad &\text{(Permutation Invariance, PI : 置换输入元素的排列不改变输出)}\\ f(\mathbf{PAP}^\top) = \mathbf{P}f(\mathbf{A}) \qquad &\text{(Permutation Equivariance, PE : 置换输入元素的排列会以同样方式置换输出的排列)} \end{align}
f(PAP⊤)=f(A)f(PAP⊤)=Pf(A)(Permutation Invariance, PI : 置换输入元素的排列不改变输出)(Permutation Equivariance, PE : 置换输入元素的排列会以同样方式置换输出的排列)
Neural Message Passing
基本 GNN 模型已被推导为卷积对非欧几里得数据的推广、信念传播的可微变体,以及与经典模型的类比图同构测试。但 GNN 的定义特征都是它使用一种神经消息传递形式,其中矢量消息在节点之间交换并使用神经网络进行更新。
Overview of the Message Passing Framework
在 GNN 中的每次消息传递迭代期间,对应于每个节点 $u\in \mathcal{V} $ 的隐藏嵌入 h u ( k ) h^{(k)}_u hu(k) 会根据 u u u 的图邻域 N ( u ) \mathcal{N}(u) N(u) 聚合的信息进行更新(下图展示了消息传递模型的两层版本)。
消息传递更新可以表示为:
h
u
(
k
+
1
)
=
UPDATE
(
k
)
(
h
u
(
k
)
,
AGGREGATE
(
k
)
(
{
h
v
(
k
)
,
∀
v
∈
N
(
u
)
}
)
)
=
UPDATE
(
k
)
(
h
u
(
k
)
,
m
N
(
u
)
(
k
)
)
\begin{align} \mathbf{h}_u^{(k+1)} &= \text{UPDATE}^{(k)}\left( \mathbf{h}_u^{(k)},\text{AGGREGATE}^{(k)}(\{\mathbf{h}_v^{(k)},\forall v\in \mathcal{N}(u)\}) \right)\\ &= \text{UPDATE}^{(k)}\left( \mathbf{h}_u^{(k)},\mathbf{m}^{(k)}_{\mathcal{N}(u)} \right) \end{align}
hu(k+1)=UPDATE(k)(hu(k),AGGREGATE(k)({hv(k),∀v∈N(u)}))=UPDATE(k)(hu(k),mN(u)(k))
其中 UPDATE 和 AGGREGATE 是任意可微函数(即神经网络),
m
N
(
u
)
(
k
)
\mathbf{m}^{(k)}_{\mathcal{N}(u)}
mN(u)(k) 是从
u
u
u 的图邻域
N
(
u
)
\mathcal{N}(u)
N(u) 聚合的“消息”,
k
k
k 表示消息传递的迭代次数。初始嵌入被设置为节点输入特征,即
h
u
(
0
)
=
x
u
,
∀
u
∈
V
\mathbf{h}_u^{(0)} = \mathbf{x}_u,\forall u\in \mathcal{V}
hu(0)=xu,∀u∈V,在运行
K
K
K 次迭代后,使用最后一层定义每个节点的嵌入,即
z
u
=
h
u
(
K
)
,
∀
u
∈
V
\mathbf{z}_u=\mathbf{h}_u^{(K)},\forall u\in \mathcal{V}
zu=hu(K),∀u∈V。由于 AGGREGATE 函数采用集合作为输入,因此以这种方式定义的 GNN 在设计上具有置换不变性(Note: 原文在这里是 PE,但结合定义个人认为应是 PI)。
Motivations and Intuitions
GNN 消息传递框架的基本意图是在每次迭代中,每个节点都会聚合来自其本地邻居的信息,并且随着这些迭代的进行,每个节点嵌入包含来自图的更远区域的越来越多的信息。这种信息包括图结构信息和节点特征信息。
The Basic GNN
最基础的 GNN 消息传递框架有如下定义:
h
u
(
k
)
=
σ
(
W
self
(
k
)
h
u
(
k
−
1
)
+
W
neigh
(
k
)
∑
v
∈
N
(
u
)
h
v
(
k
−
1
)
+
b
(
k
)
)
\mathbf{h}_u^{(k)}=\sigma \left(\mathbf{W}_{\text{self}}^{(k)} \mathbf{h}_u^{(k-1)} + \mathbf{W}_{\text{neigh}}^{(k)} \sum_{v\in \mathcal{N}(u)}\mathbf{h}_v^{(k-1)}+\mathbf{b}^{(k)} \right)
hu(k)=σ
Wself(k)hu(k−1)+Wneigh(k)v∈N(u)∑hv(k−1)+b(k)
其中,
W
self
(
k
)
,
W
neigh
(
k
)
∈
R
d
(
k
)
×
d
(
k
−
1
)
\mathbf{W}_{\text{self}}^{(k)},\mathbf{W}_{\text{neigh}}^{(k)} \in \R^{d^{(k)}\times d^{(k-1)}}
Wself(k),Wneigh(k)∈Rd(k)×d(k−1) 是可训练的参数矩阵,偏差项
b
(
k
)
∈
R
d
(
k
)
\mathbf{b}^{(k)} \in \R^{d^{(k)}}
b(k)∈Rd(k) 通常会省略,但其有利于提升性能。此外,我们还可以通过上面提到的 UPDATE 和 AGGREGATE 对基础 GNN 进行等价定义。
除了基于节点层面定义外,还可以基于图层面对 GNN 模型进行定义,形式如下:
H
(
t
)
=
σ
(
A
H
(
k
−
1
)
W
neigh
(
k
)
+
H
(
k
−
1
)
W
self
(
k
)
)
\mathbf{H}^{(t)}=\sigma \left(\mathbf{A}\mathbf{H}^{(k-1)} \mathbf{W}_{\text{neigh}}^{(k)}+ \mathbf{H}^{(k-1)} \mathbf{W}_{\text{self}}^{(k)} \right)
H(t)=σ(AH(k−1)Wneigh(k)+H(k−1)Wself(k))
其中,
H
(
k
)
∈
R
∣
V
∣
×
d
\mathbf{H}^{(k)}\in \R ^{|V|\times d}
H(k)∈R∣V∣×d 表示 GNN 中第 t 层节点表示的矩阵(每个节点对应矩阵中的一行),
A
\mathbf{A}
A 是图邻接矩阵,此处省略偏差项。
Message Passing with Self-loops
作为神经消息传递方法的简化,通常向输入图添加自循环并省略显式更新步骤。其可被定义为(节点级和图级):
h
u
(
k
)
=
AGGREGATE
(
{
h
v
(
k
−
1
)
,
∀
v
∈
N
(
u
)
∪
{
u
}
}
)
H
(
t
)
=
σ
(
(
A
+
I
)
H
(
t
−
1
)
W
(
t
)
)
\mathbf{h}_u^{(k)}=\text{AGGREGATE}(\{\mathbf{h}_v^{(k-1)},\forall v \in \mathcal{N}_{(u)}\cup \{u\}\})\\ \mathbf{H}^{(t)}=\sigma \left((\mathbf{A}+\mathbf{I})\mathbf{H}^{(t-1)}\mathbf{W}^{(t)} \right)
hu(k)=AGGREGATE({hv(k−1),∀v∈N(u)∪{u}})H(t)=σ((A+I)H(t−1)W(t))
这种方法的好处是不需要再去定义显式的更新函数,可以防止过拟合,但也在一定程度上限制了 GNN 的表达能力,因为来自节点邻居的信息无法区分是否属于节点本身。在基本 GNN 中,添加自循环可以看作在
W
neigh
and
W
self
\mathbf{W}_{\text{neigh}}\space \text{and} \space \mathbf{W}_{\text{self}}
Wneigh and Wself 间共享参数。
Generalized Neighborhood Aggregation
Neighborhood Normalization
为了缓解邻居聚合过程中的不稳定性及其对节点度的高度敏感,即度数高的节点聚合的信息远大于度数低的节点,通常需要对聚合操作进行归一化处理,下面是两种常见的归一化方法(平均归一化和对称归一化):
m
N
(
u
)
=
∑
v
∈
N
(
u
)
h
v
∣
N
(
u
)
∣
m
N
(
u
)
=
∑
v
∈
N
(
u
)
h
v
∣
N
(
u
)
∣
∣
N
(
v
)
∣
\mathbf{m}_{\mathcal{N}(u)}=\frac{\sum_{v \in \mathcal{N}(u)}\mathbf{h}_v}{|\mathcal{N}(u)|}\\ \mathbf{m}_{\mathcal{N}(u)}=\sum_{v \in \mathcal{N}(u)}\frac{\mathbf{h}_v}{\sqrt{|\mathcal{N}(u)||\mathcal{N}(v)|}}
mN(u)=∣N(u)∣∑v∈N(u)hvmN(u)=v∈N(u)∑∣N(u)∣∣N(v)∣hv
归一化操作并不一定会使模型性能提高,所以进行适当的归一化操作十分重要。通常来说,归一化在节点特征信息比结构信息有用得多的任务中或者在节点度数范围很广可能导致优化过程中不稳定的情况下最有帮助。
Graph convolutional networks (GCNs)
作为最流行的图神经网络基线之一,GCN 的消息传递函数被定义为:
h
u
(
k
)
=
σ
(
W
(
k
)
∑
v
∈
N
(
u
)
∪
{
u
}
h
v
∣
N
(
u
)
∣
∣
N
(
v
)
∣
)
\mathbf{h}_u^{(k)}=\sigma \left( \mathbf{W}^{(k)}\sum_{v \in \mathcal{N}(u)\cup\{u\}}\frac{\mathbf{h}_v}{\sqrt{|\mathcal{N}(u)||\mathcal{N}(v)|}}\right)
hu(k)=σ
W(k)v∈N(u)∪{u}∑∣N(u)∣∣N(v)∣hv
Set Aggregators
Set pooling
定义聚合函数的一种原则性方法是基于排列不变神经网络理论。以下形式的聚合函数已被证明是通用集合函数逼近器:
m
N
(
u
)
=
M
L
P
θ
(
∑
v
∈
N
u
M
L
P
ϕ
(
h
v
)
)
\mathbf{m}_{\mathcal{N}(u)}=\mathbf{MLP}_\theta \left(\sum_{v\in \mathcal{N}_u} \mathbf{MLP}_\phi (\mathbf{h}_v)\right)
mN(u)=MLPθ(v∈Nu∑MLPϕ(hv))
M
L
P
θ
\mathbf{MLP}_\theta
MLPθ 表示由一些可训练参数 θ 参数化的任意深度的多层感知器。将一组嵌入映射到单个嵌入的任何排列不变函数都可以通过遵循上述模型近似到任意精度。同时,可用一个替代约简函数(alternative reduction function)来代替求和(sum),例如逐元素最大值或最小值。
上述集合池方法通常会导致性能小幅提高,但也会增加过度拟合的风险,具体取决于所使用的 MLP 的深度。
Janossy pooling
Janossy 池化不使用排列不变约简(例如求和或平均值),而是应用排列敏感函数并对许多可能的排列的结果进行平均。令
π
i
∈
Π
\pi_i \in \Pi
πi∈Π 表示将集合
{
h
v
,
∀
v
∈
N
(
u
)
}
\{\mathbf{h}_v,\forall v\in \mathcal{N}(u)\}
{hv,∀v∈N(u)} 映射到特定序列,Janossy 池化方法采用以下形式执行邻域聚合:
m
N
(
u
)
=
M
L
P
θ
(
1
∣
Π
∣
∑
π
∈
Π
ρ
ϕ
(
h
v
1
,
h
v
2
,
.
.
.
,
h
v
∣
N
(
u
)
∣
)
π
i
)
\mathbf{m}_{\mathcal{N}(u)}=\mathbf{MLP}_\theta \left(\frac{1}{|\Pi|} \sum_{\pi\in \Pi} \rho_\phi (\mathbf{h}_{v_1},\mathbf{h}_{v_2},...,\mathbf{h}_{v_{|\mathcal{N}(u)|}})_{\pi_i}\right)
mN(u)=MLPθ(∣Π∣1π∈Π∑ρϕ(hv1,hv2,...,hv∣N(u)∣)πi)
其中,
Π
\Pi
Π 表示一组排列,
ρ
ϕ
\rho_\phi
ρϕ 是排列敏感函数,例如对序列进行操作的神经网络,实践中通常被定义为 LSTM。
由于对所有可能排列进行聚合是十分困难的,因此在实践中 Janossy 池化通常采用两种方式:
- 在聚合器的每次应用期间对可能排列进行随机子集采样,然后仅对该随机子集求和。
- 对邻域集中的节点采用规范排序,例如,根据节点的度数对节点进行降序排序,并随机断开关系。
Neighborhood Attention
除了更通用的集合聚合形式之外,改进 GNN 中聚合层的一种流行策略是应用注意力。基本思想是为每个邻居分配一个注意力权重或重要性,用于在聚合步骤中权衡该邻居的影响力。首个应用这种注意力机制的 GNN 模型是 图注意力网络(GAT),它使用注意力权重来定义邻居的加权和:
m
N
(
u
)
=
∑
v
∈
N
(
u
)
α
u
,
v
h
v
α
u
,
v
=
exp
(
a
⊤
[
W
h
u
⊕
W
h
v
]
)
∑
v
′
∈
N
(
u
)
exp
(
a
⊤
[
W
h
u
⊕
W
h
v
′
]
)
)
\mathbf{m}_{\mathcal{N}(u)}=\sum_{v \in \mathcal{N}(u)}\alpha_{u,v}\mathbf{h}_v\\ \alpha_{u,v}=\frac{\text{exp}(\mathbf{a^\top}[\mathbf{Wh}_u\oplus \mathbf{Wh}_v])}{\sum_{v^{\prime}\in \mathcal{N}(u)}\text{exp}(\mathbf{a^\top}[\mathbf{Wh}_u\oplus \mathbf{Wh}_{v^{\prime}}]))}
mN(u)=v∈N(u)∑αu,vhvαu,v=∑v′∈N(u)exp(a⊤[Whu⊕Whv′]))exp(a⊤[Whu⊕Whv])
其中
a
\mathbf{a}
a 是可训练的注意力向量,
W
\mathbf{W}
W 是可训练的矩阵,
⊕
\oplus
⊕ 表示串联操作。
注意力存在许多变体,如双线性注意力模型:
α
u
,
v
=
exp
(
h
u
⊤
W
h
v
)
∑
v
′
∈
N
(
u
)
exp
(
h
u
⊤
W
h
v
′
)
)
\alpha_{u,v}=\frac{\text{exp}(\mathbf{h}_u^\top\mathbf{Wh}_v)}{\sum_{v^{\prime}\in \mathcal{N}(u)}\text{exp}(\mathbf{h}_u^\top\mathbf{Wh}_{v^{\prime}}))}
αu,v=∑v′∈N(u)exp(hu⊤Whv′))exp(hu⊤Whv)
以及使用 MLPs 的注意力层:
α
u
,
v
=
exp
(
M
L
P
(
h
u
,
h
v
)
)
∑
v
′
∈
N
(
u
)
exp
(
M
L
P
(
h
u
,
h
v
′
)
)
\alpha_{u,v}=\frac{\text{exp}(\mathbf{MLP}(\mathbf{h}_u,\mathbf{h}_v))}{\sum_{v^{\prime}\in \mathcal{N}(u)}\text{exp}(\mathbf{MLP}(\mathbf{h}_u,\mathbf{h}_{v^\prime}))}
αu,v=∑v′∈N(u)exp(MLP(hu,hv′))exp(MLP(hu,hv))
此外,还可以借鉴 Transformer 的风格添加多个注意力头,使用独立参数化的注意力层计算多个不同的注意力权重,然后通过转换和组合这些不同的注意力权重来聚合信息。
Graph attention and transformers. 具有多头注意力的 GNN 模型与 Transformer 架构密切相关。Transformer 背后的基本思想是完全基于注意力操作来定义神经网络层。在 Transformer 的每一层,通过使用多个注意力头来计算输入中所有位置对之间的注意力权重,为输入数据中的每个位置(例如,句子中的每个单词)生成一个新的隐藏表示,然后将其根据这些注意力权重进行加权求和。
Generalized Update Methods
Over-smoothing and neighbourhood influence. 过度平滑的基本思想是,经过几次 GNN 消息传递迭代后,图中所有节点的表示可以变得非常相似。这阻碍构建更深层次的 GNN 模型去利用图中的长期依赖关系。对于任意一对节点
u
u
u 和
v
v
v,我们可以通过检查相应雅可比矩阵(Jacobian matrix)的大小来量化 GNN 中节点
u
u
u 对节点
v
v
v 的影响:
I
K
(
u
,
v
)
=
1
⊤
(
∂
h
v
(
K
)
∂
h
u
(
0
)
)
1
I_K(u,v)=\mathbf{1}^\top\left(\frac{\partial \mathbf{h}_v^{(K)}}{\partial \mathbf{h}_u^{(0)}}\right)\mathbf{1}
IK(u,v)=1⊤(∂hu(0)∂hv(K))1
其中,
1
\mathbf{1}
1 是全为 1 的向量,上式表示节点
u
u
u 的初始嵌入对节点
v
v
v 的最终嵌入影响的度量。
定理3:对于任何使用自循环更新方法和以下形式的聚合函数的 GNN 模型
AGGREGATE
(
{
h
v
,
∀
v
∈
N
(
u
)
∪
{
u
}
}
)
=
1
f
n
(
∣
N
(
u
)
∪
{
u
}
∣
)
∑
v
∈
N
(
u
)
∪
{
u
}
h
v
\text{AGGREGATE}(\{ \mathbf{h}_v,\forall v \in \mathcal{N}(u)\cup\{u\} \}) =\frac{1}{f_n(|\mathcal{N}(u)\cup\{u\}|)}\sum_{v \in \mathcal{N}(u)\cup\{u\}}\mathbf{h}_v
AGGREGATE({hv,∀v∈N(u)∪{u}})=fn(∣N(u)∪{u}∣)1v∈N(u)∪{u}∑hv
其中
f
:
R
+
→
R
+
f:\R^+\rightarrow \R^+
f:R+→R+ 是任意可微归一化函数,我们有
I
K
(
u
,
v
)
∝
p
G
,
K
(
u
∣
v
)
I_K(u,v)\propto p_{G,K}(u|v)
IK(u,v)∝pG,K(u∣v)
其中
p
G
,
K
(
u
∣
v
)
p_{G,K}(u|v)
pG,K(u∣v) 表示从节点
u
u
u 开始的长度
K
K
K 随机游走中访问节点
v
v
v 的概率。
Concatenation and Skip-Connections
跳跃连接—最简单的跳过连接更新之一采用串联来在消息传递期间保留更多节点级信息(减少之前邻居传递信息的损失):
UPDATE
concat
(
h
u
,
m
N
(
u
)
)
=
[
UPDATE
base
(
h
u
,
m
N
(
u
)
)
⊕
h
u
]
\text{UPDATE}_\text{concat}(\mathbf{h}_u,\mathbf{m}_{\mathcal{N}(u)})=[\text{UPDATE}_\text{base}(\mathbf{h}_u,\mathbf{m}_{\mathcal{N}(u)})\oplus \mathbf{h}_u]
UPDATEconcat(hu,mN(u))=[UPDATEbase(hu,mN(u))⊕hu]
残差连接—线性差值方法:
UPDATE
interpolate
(
h
u
,
m
N
(
u
)
)
=
α
1
∘
UPDATE
base
(
h
u
,
m
N
(
u
)
)
+
α
2
⊙
h
u
\text{UPDATE}_\text{interpolate}(\mathbf{h}_u,\mathbf{m}_{\mathcal{N}(u)})=\alpha_1 \circ \text{UPDATE}_\text{base}(\mathbf{h}_u,\mathbf{m}_{\mathcal{N}(u)})+ \alpha_2 \odot \mathbf{h}_u
UPDATEinterpolate(hu,mN(u))=α1∘UPDATEbase(hu,mN(u))+α2⊙hu
其中,
α
1
,
α
2
∈
[
0
,
1
]
d
\alpha_1,\alpha_2 \in [0,1]^d
α1,α2∈[0,1]d 是门控向量,
α
2
=
1
−
α
1
\alpha_2 = 1-\alpha_1
α2=1−α1,
∘
\circ
∘ 表示元素乘法。
Gated Updates
查看 GNN 消息传递算法的一种方法是,聚合函数正在接收来自邻居的观察,然后使用该观察来更新每个节点的隐藏状态。例如:
h
u
(
k
)
=
GRU
(
h
u
(
k
−
1
)
,
m
N
(
u
)
(
k
)
)
\mathbf{h}_u^{(k)}=\text{GRU}(\mathbf{h}_u^{(k-1)},\mathbf{m}_{\mathcal{N}(u)}^{(k)})
hu(k)=GRU(hu(k−1),mN(u)(k))
其中 GRU 表示门控循环单元 (GRU) 单元的更新方程。一般来说,为 RNN 定义的任何更新函数都可以在 GNN 的上下文中使用。
Jumping Knowledge Connections
提高最终节点表示质量的补充策略是简单地利用消息传递的每一层的表示,而不是仅使用最终层输出。这种策略被称为添加跳跃知识(Jumping Knowledge,JK)连接。
z
u
=
f
J
K
(
h
u
(
0
)
⊕
h
u
(
1
)
⊕
.
.
.
⊕
h
u
(
K
)
)
\mathbf{z}_u=f_{JK}(\mathbf{h}^{(0)}_u \oplus \mathbf{h}^{(1)}_u \oplus ... \oplus \mathbf{h}^{(K)}_u)
zu=fJK(hu(0)⊕hu(1)⊕...⊕hu(K))
其中
f
J
K
f_{JK}
fJK 是任意可微函数,这种方法在各种任务中都普遍有效。
Edge Features and Multi-relational GNNs
Relational Graph Neural Networks
关系图卷积网络(Relational Graph Convolutional Network,RGCN)通过为每个关系类型指定单独的转换矩阵来增强聚合函数以适应多种关系类型:
m
N
(
u
)
=
∑
τ
∈
R
∑
v
∈
N
τ
(
u
)
W
τ
h
v
f
n
(
N
(
u
)
,
N
(
v
)
)
\mathbf{m}_{\mathcal{N}(u)}=\sum_{\tau \in \mathcal{R}} \sum_{v\in\mathcal{N}_\tau(u)} \frac{\mathbf{W_\tau h}_v}{f_n(\mathcal{N}(u),\mathcal{N}(v))}
mN(u)=τ∈R∑v∈Nτ(u)∑fn(N(u),N(v))Wτhv
其中
f
n
f_n
fn 是一个归一化函数,可以依赖于节点
u
u
u 的邻域以及聚合的邻居
v
v
v。
Parameter sharing
参数的增加可能导致过度拟合和学习缓慢。简单的 RGCN 方法的一个缺点就是参数数量的急剧增加,因为现在每种关系类型都有一个可训练的矩阵。可以通过与基矩阵共享参数来解决这一问题:
W
τ
=
∑
i
=
1
b
α
i
,
τ
B
i
m
N
(
u
)
=
∑
τ
∈
R
∑
v
∈
N
τ
(
u
)
α
τ
×
1
B
×
2
h
v
f
n
(
N
(
u
)
,
N
(
v
)
)
\mathbf{W}_\tau=\sum_{i=1}^b \alpha_{i,\tau}\mathbf{B}_i\\ \mathbf{m}_{\mathcal{N}(u)}=\sum_{\tau \in \mathcal{R}} \sum_{v\in\mathcal{N}_\tau(u)} \frac{\alpha_\tau\times_1 \mathcal{B}\times_2\mathbf{h}_v}{f_n(\mathcal{N}(u),\mathcal{N}(v))}
Wτ=i=1∑bαi,τBimN(u)=τ∈R∑v∈Nτ(u)∑fn(N(u),N(v))ατ×1B×2hv
其中
B
=
(
B
1
,
.
.
.
,
B
b
)
\mathcal{B} = (\mathbf{B}_1, ..., \mathbf{B}_b)
B=(B1,...,Bb) 是通过堆叠基矩阵形成的张量,
α
τ
=
(
α
1
,
τ
,
.
.
.
,
α
b
,
τ
)
\alpha_\tau = (\alpha_{1,\tau} , ..., \alpha_{b,\tau})
ατ=(α1,τ,...,αb,τ) 是包含关系
τ
\tau
τ 的基组合权重的向量,
×
i
\times_i
×i 表示沿模式
i
i
i 的张量积。
Extensions and variations. RGCN 架构可以通过多种方式进行扩展,一般来说,我们将每个关系定义单独的聚合矩阵的方法称为关系图神经网络。
Attention and Feature Concatenation
关系 GNN 方法为每个关系定义一个单独的聚合参数,适用于多关系图和具有离散边缘特征的情况。为了适应更通用形式的边特征情况,通常在消息传递期间将此信息与邻居嵌入连接起来。
m
N
(
u
)
=
AGGREGATE
base
(
{
h
v
⊕
e
(
u
,
τ
,
v
)
,
∀
v
∈
N
(
u
)
}
)
\mathbf{m}_{\mathcal{N}(u)}=\text{AGGREGATE}_\text{base}(\{ \mathbf{h}_v\oplus\mathbf{e}_{(u,\tau,v)},\forall v \in \mathcal{N}(u)\})
mN(u)=AGGREGATEbase({hv⊕e(u,τ,v),∀v∈N(u)})
其中
e
(
u
,
τ
,
v
)
e(u,\tau,v)
e(u,τ,v) 表示边
(
u
,
τ
,
v
)
(u,\tau,v)
(u,τ,v) 的任意矢量值特征。
Graph Pooling
图池化是学习者整个图嵌入的任务,其同样可被视为集合学习问题。
Set pooling approaches
实践中,有两种最常用于通过集合池化学习图级嵌入的方法。第一种方法是简单地取节点嵌入的总和(或平均值):
z
G
=
∑
v
∈
V
z
u
f
n
(
∣
V
∣
)
\mathbf{z}_\mathcal{G} = \frac{\sum_{v\in \mathcal{V}}\mathbf{z}_u}{f_n(|\mathcal{V}|)}
zG=fn(∣V∣)∑v∈Vzu
其中
f
n
f_n
fn 是一些标准化函数(例如恒等函数)。
第二种流行的基于集合的方法使用 LSTM 和注意力的组合来池化节点嵌入:
q
t
=
LSTM
(
o
t
−
1
,
q
t
−
1
)
e
v
,
t
=
f
a
(
z
v
,
q
t
)
,
∀
v
∈
V
a
v
,
t
=
exp
(
e
v
,
i
)
∑
u
∈
V
exp
(
e
u
,
t
)
,
∀
v
∈
V
o
t
=
∑
v
∈
V
a
v
,
t
z
v
\begin{align} \mathbf{q}_t &= \text{LSTM}(\mathbf{o}_{t-1},\mathbf{q}_{t-1})\\ e_{v,t} &= f_a(\mathbf{z}_v,\mathbf{q}_t),\forall v \in \mathcal{V}\\ a_{v,t} &= \frac{\text{exp}(e_{v,i})}{\sum_{u \in \mathcal{V}}\text{exp}(e_{u,t})},\forall v \in \mathcal{V}\\ \mathbf{o}_{t} &= \sum_{v\in \mathcal{V}}a_{v,t}\mathbf{z}_v \end{align}
qtev,tav,tot=LSTM(ot−1,qt−1)=fa(zv,qt),∀v∈V=∑u∈Vexp(eu,t)exp(ev,i),∀v∈V=v∈V∑av,tzv
其中,
q
t
\mathbf{q}_t
qt 向量表示每次迭代
t
t
t 时注意力的查询向量。通常,
q
0
\mathbf{q}_0
q0 和
o
0
\mathbf{o}_0
o0 向量使用全零值进行初始化,在迭代上述方程 T 次之后,整个图的嵌入计算如下:
z
G
=
o
1
⊕
o
2
⊕
.
.
.
⊕
o
T
\mathbf{z}_\mathcal{G} = \mathbf{o}_1 \oplus \mathbf{o}_2 \oplus...\oplus\mathbf{o}_T
zG=o1⊕o2⊕...⊕oT
Graph coarsening approaches
集合池化方法的一个限制是它们不利用图的结构。虽然将图池化任务视为简单的集合学习问题是合理的,但在池化阶段利用图拓扑也可以带来好处。实现此目的的一种流行策略是执行图聚类或粗化作为池化节点表示的方法。
假设存在聚类函数:
f
c
→
G
×
R
∣
V
∣
×
d
→
R
+
∣
V
∣
×
c
\mathbf{f}_c\rightarrow \mathcal{G}\times\R^{|V|\times d} \rightarrow \R^{+|V|\times c}
fc→G×R∣V∣×d→R+∣V∣×c
它将图中的所有节点映射到
c
c
c 个集群上的分配。假设该函数输出一个分配矩阵
S
=
f
c
(
G
,
Z
)
S = f_c(\mathcal{G}, \mathbf{Z})
S=fc(G,Z),其中
S
[
u
,
i
]
∈
R
+
S[u, i] \in \R^+
S[u,i]∈R+ 表示节点
u
u
u 和集群
i
i
i 之间的关联强度。无论使用哪种方法生成聚类分配矩阵
S
S
S,图粗化方法的关键思想是使用该矩阵来粗化图。
使用分配矩阵
S
S
S 来计算新的粗化邻接矩阵和节点特征:
A
new
=
S
⊤
A
S
∈
R
+
c
×
c
X
new
=
S
⊤
X
∈
R
c
×
d
\mathbf{A}^\text{new}=\mathbf{S}^\top\mathbf{A}\mathbf{S}\in \R^{+c\times c}\\ \mathbf{X}^\text{new}=\mathbf{S}^\top\mathbf{X} \in \R^{c\times d}
Anew=S⊤AS∈R+c×cXnew=S⊤X∈Rc×d
因此,这个新的邻接矩阵现在表示图中簇之间的关联强度(即边),而新的特征矩阵表示分配给每个簇的所有节点的聚合嵌入。然后,我们可以在这个粗化图上运行 GNN,并重复整个粗化过程多次迭代,其中图的大小在每一步都会减小。然后,通过对充分粗化的图中节点的嵌入进行集合池化来计算图的最终表示。
Generalized Message Passing
h ( u , v ) ( k ) = UPDATE edge ( h ( u , v ) ( k − 1 ) , h u ( k − 1 ) , h v ( k − 1 ) , h G ( k − 1 ) ) m N ( u ) = AGGREGATE node ( { h ( u , v ) ( k ) ∀ v ∈ N ( u ) } ) h u ( k ) = UPDATE node ( h u ( k − 1 ) , m N ( u ) , h G ( k − 1 ) ) h G ( k ) = UPDATE graph ( h G ( k − 1 ) , { h u ( k ) , ∀ u ∈ V } , { h ( u , v ) ( k ) ∀ ( u , v ) ∈ E } ) \begin{aligned} \mathbf{h}_{(u, v)}^{(k)} & =\operatorname{UPDATE}_{\text {edge }}\left(\mathbf{h}_{(u, v)}^{(k-1)}, \mathbf{h}_{u}^{(k-1)}, \mathbf{h}_{v}^{(k-1)}, \mathbf{h}_{\mathcal{G}}^{(k-1)}\right) \\ \mathbf{m}_{\mathcal{N}(u)} & =\operatorname{AGGREGATE}_{\text {node }}\left(\left\{\mathbf{h}_{(u, v)}^{(k)} \forall v \in \mathcal{N}(u)\right\}\right) \\ \mathbf{h}_{u}^{(k)} & =\operatorname{UPDATE}_{\text {node }}\left(\mathbf{h}_{u}^{(k-1)}, \mathbf{m}_{\mathcal{N}(u)}, \mathbf{h}_{\mathcal{G}}^{(k-1)}\right) \\ \mathbf{h}_{\mathcal{G}}^{(k)} & =\operatorname{UPDATE}_{\text {graph }}\left(\mathbf{h}_{\mathcal{G}}^{(k-1)},\left\{\mathbf{h}_{u}^{(k)}, \forall u \in \mathcal{V}\right\},\left\{\mathbf{h}_{(u, v)}^{(k)} \forall(u, v) \in \mathcal{E}\right\}\right) \end{aligned} h(u,v)(k)mN(u)hu(k)hG(k)=UPDATEedge (h(u,v)(k−1),hu(k−1),hv(k−1),hG(k−1))=AGGREGATEnode ({h(u,v)(k)∀v∈N(u)})=UPDATEnode (hu(k−1),mN(u),hG(k−1))=UPDATEgraph (hG(k−1),{hu(k),∀u∈V},{h(u,v)(k)∀(u,v)∈E})
上述广义消息传递过程在消息传递的每个阶段利用边缘和图级信息,这使得消息传递模型能够轻松集成边缘和图级特征,与标准 GNN 相比,这种广义消息传递方法在逻辑表达能力方面具有优势。
Reference: Hamilton W L. Graph representation learning[M]. Morgan & Claypool Publishers, 2020.