论文地址:A Generalization of Convolutional Neural Networks to Graph-Structured Data
GNN的做法是将一个图结构的数据强行变化为一个类似规则的数据,从而实现1维的卷积。
传统卷积:固定数量的邻域节点排序后,与相同数量的卷积核参数相乘后求和。
那么卷积就可以分为两步:
1.构建邻域(邻节点固定且有序)
2.对邻域的点和卷积核参数内积
但是对于图结构数据而言:邻域节点不固定,且图结构无序。因此需要找到一个解决构建邻域的方法。
解决思路:随机游走,根据被选中的概率期望和大小选择固定数量的邻居节点。
实现:
首先定义
P
P
P矩阵 为图上的随机游走转移矩阵,
P
i
j
P_{ij}
Pij为i节点到j节点的转移概率。
S
S
S矩阵 为相似度矩阵,可以理解为邻接矩阵。
D
D
D矩阵 为度矩阵,
D
i
i
=
∑
j
S
i
j
D_{ii}=\sum_jS_{ij}
Dii=∑jSij。
假设图结构已知,则
S
S
S和
D
D
D已知,则
P
P
P定义如下:
P
=
D
−
1
S
P=D^{-1}S
P=D−1S
上式子相当于对S进行归一化,即使用归一化的邻接矩阵作为图转移矩阵。
多步转移矩阵定义为
Q
Q
Q:
Q
(
0
)
=
I
,
Q
(
1
)
=
I
+
P
,
…
Q
(
k
)
=
∑
j
=
0
k
P
k
Q^{(0)}=I,Q^{(1)}=I+P,\dots Q^{(k)}=\sum_{j=0}^kP^k
Q(0)=I,Q(1)=I+P,…Q(k)=j=0∑kPk
其中
k
k
k为步数,
Q
i
j
(
k
)
Q^{(k)}_{ij}
Qij(k)表示i节点进过k步达到j的期望访问次数,可视化如下图。
那么选择邻域的问题解决了,可以根据期望访问次数来选择需要的邻域节点,
π
i
(
k
)
(
c
)
\pi_i^{(k)}(c)
πi(k)(c)表示节点的序号,表示该节点是经过
k
k
k步内由
i
i
i节点出发的访问期望第
c
c
c大的节点,那么有节点期望访问大小排序:
Q
i
π
i
(
k
)
(
1
)
>
Q
i
π
i
(
k
)
(
2
)
>
⋯
>
Q
i
π
i
(
k
)
(
N
)
Q_{i\pi_i^{(k)}(1)}>Q_{i\pi_i^{(k)}(2)}>\dots>Q_{i\pi_i^{(k)}(N)}
Qiπi(k)(1)>Qiπi(k)(2)>⋯>Qiπi(k)(N)
定义卷积:
每个点选取前
p
p
p个期望最大的作为邻域节点,且顺序由期望
Q
Q
Q决定。卷积核为
W
W
W,具有
p
p
p个参数。
举例: