这篇文章在DiffPool的基础上引入了多通道(Multi-channel)的概念,提出了multi channel graph convolutional networks (MuchGCN),通过inter-channel和intra-channel两种方式聚合通道上的信息。
本文被IJCAI2020接收,在写这篇博客时我看的是2019年12月挂到arXiv上的版本,整体感觉有点粗糙,被会议接收的论文可能是作者更新过的版本。地址:Multi-Channel Graph Convolutional Networks
Motivation
在DiffPool模型中,每一层池化后只有一个粗粒度的图生成,这样会造成一定的信息损失,例如在社交网络中,一个节点可能有多重身份,按照不同的身份进行聚类会得到不同的结果。所以在池化的过程中,需要生成多个图来保持原图上节点具有多重身份的特点。
Preliminaries
Graph Neural Networks
GNN模型可以用下式来表示: H k = σ ( ( H k − 1 + A H k − 1 ) W k ) ∈ R n × d H_{k}=\sigma\left(\left(H_{k-1}+A H_{k-1}\right) W_{k}\right) \in \mathbb{R}^{n \times d} Hk=σ((Hk−1+AHk−1)Wk)∈Rn×d H k H_k Hk是 k k k次卷积后图上节点的embedding matrix, W k ∈ R d × d W_{k} \in \mathbb{R}^{d \times d} Wk∈Rd×d是线性变换矩阵。在经过 K K K此卷积后,得到 Z = GNN ( A , X ) ∈ R n × d Z=\operatorname{GNN}(A, X) \in \mathbb{R}^{n \times d} Z=GNN(A,X)∈Rn×d。
Differentiable Pooling
这里用的公式和DiffPool论文里的一样,可以参考我之前写过的DiffPool的论文笔记:DiffPool: Hierarchical Graph Representation Learning with Differentiable Pooling
Multi-Graph Learning
在每一层的池化过程中,为了获得不同的池化结果,需要考虑不同的 A i A^i Ai来生成不同的 Z i Z^i Zi: Z i = G N N ( A i , X ) Z^i=GNN(A^i, X) Zi=GNN(Ai,X),论文中提到 Considering graph instance i, a specific adjacency matrix A i A^i Ai is formulated to consider one class of the node characteristics and correlations.
Multi-channel Graph Convolutional Networks
Definition
definition 1: layer
A layer is composed of operations of graph convolutions and feature learning
用 l l l表示层号,如上图所示,每一层的输入是若干个图,例如第1层的输入是两个图 [ { X 1 , A 1 } , { X 2 , A 2 } ] \left[\left\{X^{1}, A^{1}\right\},\left\{X^{2}, A^{2}\right\}\right] [{X1,A1},{X2,A2}],层的输出是学到的节点的embedding,例如第一层的输出是 [ Z ( 1 , 1 ) , ⋯ , Z ( 1 , 4 ) ] \left[Z^{(1,1)}, \cdots, Z^{(1,4)}\right] [Z(1,1),⋯,Z(1,4)]。
definition 2: channel
Given a specific layer, a channel represents the input graph denoted by G i = ( X i , A i ) G^i={(X^i, A^i)} Gi=(Xi,Ai), where i denotes the channel index.
例如上图中第0层只有一个channel: [ G 0 = ( X 0 , A 0 ) ] [G^0={(X^0, A^0)}] [G0=(X0,A0)],第1层有两个channel: [ G 1 = ( X 1 , A 1 ) , G 2 = ( X 2 , A 2 ) ] [G^1={(X^1, A^1)},G^2={(X^2, A^2)} ] [G1=(X1,A1),G2=(X2,A2)]
Method
Single-channel Learning Process
在第
l
l
l层
i
i
i个channel里的第
k
k
k步消息传递可用下式来表示:
H
k
i
=
σ
(
[
H
k
−
1
i
+
A
i
⋅
H
k
−
1
i
]
⋅
W
k
(
l
)
)
H_{k}^{i}=\sigma\left(\left[H_{k-1}^{i}+A^{i} \cdot H_{k-1}^{i}\right] \cdot W_{k}^{(l)}\right)
Hki=σ([Hk−1i+Ai⋅Hk−1i]⋅Wk(l))通过将每一步的
H
k
H_{k}
Hk拼接起来得到
H
i
=
[
X
i
,
H
k
i
]
,
k
=
1
,
⋅
⋅
⋅
,
K
\mathcal{H}^{i}=\left[X^{i}, H_{k}^{i}\right],k=1,\cdot \cdot \cdot, K
Hi=[Xi,Hki],k=1,⋅⋅⋅,K。使用第
l
l
l层的第
j
j
j个卷积核
θ
(
l
,
j
)
∈
R
1
×
(
K
+
1
)
\theta^{(l, j)} \in \mathbb{R}^{1 \times(K+1)}
θ(l,j)∈R1×(K+1)对
H
i
\mathcal{H}^{i}
Hi进行卷积操作:
Z
(
l
,
j
)
=
ϕ
(
sum
(
H
i
⊙
θ
(
l
,
j
)
)
+
b
)
∈
R
n
l
×
d
Z^{(l, j)}=\phi\left(\operatorname{sum}\left(\mathcal{H}^{i} \odot \theta^{(l, j)}\right)+b\right) \in \mathbb{R}^{n_{l} \times d}
Z(l,j)=ϕ(sum(Hi⊙θ(l,j))+b)∈Rnl×d得到第
l
l
l层上的第
j
j
j个embedding matrix。
如上图,在得到了第
0
0
0层的
Z
0
,
1
Z^{0,1}
Z0,1和
Z
0
,
2
Z^{0,2}
Z0,2后,按照DiffPool的方法可以得到
S
0
,
1
S^{0,1}
S0,1和
S
0
,
2
S^{0,2}
S0,2,进而得到第1层的两个channel
[
G
1
=
(
X
1
,
A
1
)
,
G
2
=
(
X
2
,
A
2
)
]
[G^1={(X^1, A^1)},G^2={(X^2, A^2)} ]
[G1=(X1,A1),G2=(X2,A2)],同时,还能得到
G
1
G^1
G1和
G
2
G^2
G2之间的inter-channel adjacency matrix
A
1
,
2
=
S
(
0
,
1
)
T
A
0
S
(
0
,
2
)
∈
R
n
1
×
n
1
A^{1,2}=S^{(0,1)^{T}} A^{0} S^{(0,2)} \in \mathbb{R}^{n_{1} \times n_{1}}
A1,2=S(0,1)TA0S(0,2)∈Rn1×n1。
Multi-channel Learning Process
当一层有多个channel时,不仅要聚合每个channel内部的信息,还要channel之间聚合信息
H
k
i
,
c
=
σ
(
[
H
k
−
1
i
,
c
+
A
i
,
c
⋅
H
k
−
1
c
]
⋅
W
k
(
l
)
)
H_{k}^{i, c}=\sigma\left(\left[H_{k-1}^{i, c}+A^{i, c} \cdot H_{k-1}^{c}\right] \cdot W_{k}^{(l)}\right)
Hki,c=σ([Hk−1i,c+Ai,c⋅Hk−1c]⋅Wk(l))
H
k
i
,
c
H_{k}^{i, c}
Hki,c是第
i
i
i个channel在与第
c
c
c个channel进行
k
k
k步聚合后的embedding matrix。
A
i
,
c
A^{i,c}
Ai,c的定义在上一小节中已给出。
和single-channel类似,通过将每一步的
H
H
H拼接起来得到
H
i
=
[
X
i
,
H
k
i
,
H
k
i
,
c
]
\mathcal{H}^{i}=\left[X^{i}, H_{k}^{i}, H_{k}^{i, c}\right]
Hi=[Xi,Hki,Hki,c],然后在
H
i
\mathcal{H}^{i}
Hi用
θ
(
l
,
j
)
\theta^{(l, j)}
θ(l,j)进行卷积操作得到
Z
Z
Z。这里有一点我没有看懂,不知道
H
k
i
,
c
H_{k}^{i, c}
Hki,c是不是包括了该层上channeli
其他所有channel做信息传递的结果。
Multi-channel Graph Convolutional Net-works
在第
l
l
l层上对所有的
Z
(
l
,
j
)
Z^{(l, j)}
Z(l,j)做池化得到一个该层的向量表示
Y
(
l
)
=
∑
j
=
1
C
l
T
l
(
GlobalPool
(
Z
(
l
,
j
)
)
)
∈
R
d
×
1
Y^{(l)}=\sum_{j=1}^{C_{l} T_{l}}\left(\text { GlobalPool }\left(Z^{(l, j)}\right)\right) \in \mathbb{R}^{d \times 1}
Y(l)=j=1∑ClTl( GlobalPool (Z(l,j)))∈Rd×1
C
l
C_l
Cl是第
l
l
l层的channel个数,且
T
l
≜
C
l
+
1
C
l
T_{l} \triangleq \frac{C_{l+1}}{C_{l}}
Tl≜ClCl+1。
把所有的
Y
(
l
)
Y^{(l)}
Y(l)拼接起来得到整张图最终的表示
Y
=
⊕
l
Y
(
l
)
∈
R
d
⋅
L
×
1
Y=\oplus_{l} Y^{(l)} \in \mathbb{R}^{d \cdot L \times 1}
Y=⊕lY(l)∈Rd⋅L×1。