课程链接
输入是图:
考虑结构和关系信息。

如何在图结构中做Convolution?
Spatial-based GNN

Aggregate:用neighbor feature update下一层的hidden state
Readout:把所有nodes的feature集合起来代表整个graph
NN4G (Neural Networks for Graph)

输出:

每一层的结果取平均后再相加。
DCNN (Diffusion-Convolution Neural Network)

d为距离(图中表示的是到节点3的距离)
第 i 层,找到距离为i的节点的特征取mean,再乘上权重。
每个节点的表示,由k个这样的层组成:

concat 之后, 乘以权重得到输出。
DGC (Diffusion Graph Convolution)
和上一篇类似,得到的输出是直接相加:

MoNET (Mixture Model Networks)
无脑相加 -> 给一个权重的定义:重新定义距离,用定义的距离做weight,再进行sum 或 mean。

GraphSAGE

对邻居feature的处理方式:
mean
max-pooling
LSTM(把邻居节点喂给LSTM,output是hidden state,每次update时,随便sample一个邻居节点的顺序来消除LSTM对顺序的关注)
GAT (Graph Attention Networks)
对邻居做attention。
节点特征:

计算energy(weight):

计算attention分数:


每个节点的feature = sum{ 所有邻居节点 * 邻居节点各自的energy(attention weight) }
GIN (Graph Isomorphism Network)

自己的feature + sum(邻居features)
用sum,不用mean或max pooling,区别不同形态的图:

资源
GNN库: Deep Graph Library dgl.ai