这篇文章在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模型可以用下式来表示:Hk=σ((Hk−1+AHk−1)Wk)∈Rn×dHk是k次卷积后图上节点的embedding matrix,Wk∈Rd×d是线性变换矩阵。在经过K此卷积后,得到Z=GNN(A,X)∈Rn×d。
Differentiable Pooling
这里用的公式和DiffPool论文里的一样,可以参考我之前写过的DiffPool的论文笔记:DiffPool: Hierarchical Graph Representation Learning with Differentiable Pooling
Multi-Graph Learning
在每一层的池化过程中,为了获得不同的池化结果,需要考虑不同的Ai来生成不同的Zi:Zi=GNN(Ai,X),论文中提到 Considering graph instance i, a specific adjacency matrix 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表示层号,如上图所示,每一层的输入是若干个图,例如第1层的输入是两个图[{X1,A1},{X2,A2}],层的输出是学到的节点的embedding,例如第一层的输出是[Z(1,1),⋯,Z(1,4)]。
definition 2: channel
Given a specific layer, a channel represents the input graph denoted by Gi=(Xi,Ai), where i denotes the channel index.
例如上图中第0层只有一个channel:[G0=(X0,A0)],第1层有两个channel:[G1=(X1,A1),G2=(X2,A2)]
Method
Single-channel Learning Process
在第l层i个channel里的第k步消息传递可用下式来表示:Hki=σ([Hk−1i+Ai⋅Hk−1i]⋅Wk(l))通过将每一步的Hk拼接起来得到Hi=[Xi,Hki],k=1,⋅⋅⋅,K。使用第l层的第j个卷积核θ(l,j)∈R1×(K+1)对Hi进行卷积操作:Z(l,j)=ϕ(sum(Hi⊙θ(l,j))+b)∈Rnl×d得到第l层上的第j个embedding matrix。
如上图,在得到了第0层的Z0,1和Z0,2后,按照DiffPool的方法可以得到S0,1和S0,2,进而得到第1层的两个channel[G1=(X1,A1),G2=(X2,A2)],同时,还能得到G1和G2之间的inter-channel adjacency matrix A1,2=S(0,1)TA0S(0,2)∈Rn1×n1。
Multi-channel Learning Process
当一层有多个channel时,不仅要聚合每个channel内部的信息,还要channel之间聚合信息Hki,c=σ([Hk−1i,c+Ai,c⋅Hk−1c]⋅Wk(l))Hki,c是第i个channel在与第c个channel进行k步聚合后的embedding matrix。Ai,c的定义在上一小节中已给出。
和single-channel类似,通过将每一步的H拼接起来得到Hi=[Xi,Hki,Hki,c],然后在Hi用θ(l,j)进行卷积操作得到Z。这里有一点我没有看懂,不知道Hki,c是不是包括了该层上channeli
其他所有channel做信息传递的结果。
Multi-channel Graph Convolutional Net-works
在第l层上对所有的Z(l,j)做池化得到一个该层的向量表示Y(l)=j=1∑ClTl( GlobalPool (Z(l,j)))∈Rd×1Cl是第l层的channel个数,且Tl≜ClCl+1。
把所有的Y(l)拼接起来得到整张图最终的表示Y=⊕lY(l)∈Rd⋅L×1。