用节点的hidden state代替hidden state argument of the RNN update function(
h
(
t
)
h^{(t)}
h(t))
用从本地邻居聚合的信息代替观察矩阵(
x
(
t
)
x^{(t)}
x(t))
该方法在deep GNN architectures(超过10层)和防止过平滑上十分有效
jumping knowledge connection
防止过平滑:利用每一层消息传递的表征而不仅使用最后一层的输出
z
u
z_u
zu 为最后一层的节点表示
f
J
K
f_{JK}
fJK 是任意的可微函数
5.4 Edge Features and Multi-relational GNNs
处理多关系图或异构图的方法
Relational Graph Neural Networks (RGCN)
方法:为每个关系类型制定单独的转换矩阵(transformation matrix)
f
n
f_n
fn:归一化函数
既依赖节点u的neighborhood
又依赖被聚合的邻居v
缺点:参数的数量会快速增长
会导致过拟合和学习速度慢
解决方法:basis matrix approach : parameter sharing with basis matrices
basis matrices:
B
i
B_i
Bi:basis matrix
α
i
,
τ
\alpha_{i,τ}
αi,τ:特定关系的参数
aggregation function:
α
τ
\alpha_τ
ατ:包含关系τ的basis combination weights
RGCN:学习每个关系的嵌入,以及在所有关系中共享的tensor
Attention and feature concatenation
利用attention中边的特征(或者在消息传递过程中将边的特征与邻居的嵌入连接)来重新定义一个aggregate函数
A
G
G
R
E
G
A
T
E
b
a
s
e
AGGREGATE_{base}
AGGREGATEbase
5.5 Graph Pooling
目标:为了学习整个图的嵌入,pool together node embeddings
设计一个池化函数
f
p
f_p
fp将节点嵌入集合(
z
1
,
z
2
,
.
.
.
,
z
∣
v
∣
z_1,z_2,...,z_{|v|}
z1,z2,...,z∣v∣)表征为整个图的嵌入(
z
G
z_G
zG)
通过set pool的方式来学习graph-level嵌入
方法1:对节点嵌入做累加或取平均
- $f_n$:归一化函数
1
方法2:结合LSTMs和attention来pool节点嵌入
- $q_t$:a query vector for the attention at each iteration t
- 用来计算每个节点的注意力得分
- 步骤:
- 计算每个节点的注意力得分
- 将得分归一化
- 基于得分按权重累加节点嵌入
- 用累加的结果和LSTM来更新query vector