MuchGCN:Multi-Channel Graph Convolutional Networks

这篇文章在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=σ((Hk1+AHk1)Wk)Rn×dH_{k}=\sigma\left(\left(H_{k-1}+A H_{k-1}\right) W_{k}\right) \in \mathbb{R}^{n \times d}HkH_kkk次卷积后图上节点的embedding matrix,WkRd×dW_{k} \in \mathbb{R}^{d \times d}是线性变换矩阵。在经过KK此卷积后,得到Z=GNN(A,X)Rn×dZ=\operatorname{GNN}(A, X) \in \mathbb{R}^{n \times d}

Differentiable Pooling

这里用的公式和DiffPool论文里的一样,可以参考我之前写过的DiffPool的论文笔记:DiffPool: Hierarchical Graph Representation Learning with Differentiable Pooling

Multi-Graph Learning

在每一层的池化过程中,为了获得不同的池化结果,需要考虑不同的AiA^i来生成不同的ZiZ^iZi=GNN(Ai,X)Z^i=GNN(A^i, X),论文中提到 Considering graph instance i, a specific adjacency matrix AiA^i is formulated to consider one class of the node characteristics and correlations.

Multi-channel Graph Convolutional Networks

MuchGCN:Multi-Channel Graph Convolutional Networks

Definition

definition 1: layer

A layer is composed of operations of graph convolutions and feature learning

ll表示层号,如上图所示,每一层的输入是若干个图,例如第1层的输入是两个图[{X1,A1},{X2,A2}]\left[\left\{X^{1}, A^{1}\right\},\left\{X^{2}, A^{2}\right\}\right],层的输出是学到的节点的embedding,例如第一层的输出是[Z(1,1),,Z(1,4)]\left[Z^{(1,1)}, \cdots, Z^{(1,4)}\right]

definition 2: channel

Given a specific layer, a channel represents the input graph denoted by Gi=(Xi,Ai)G^i={(X^i, A^i)}, where i denotes the channel index.

例如上图中第0层只有一个channel:[G0=(X0,A0)][G^0={(X^0, A^0)}],第1层有两个channel:[G1=(X1,A1),G2=(X2,A2)][G^1={(X^1, A^1)},G^2={(X^2, A^2)} ]

Method

Single-channel Learning Process

在第llii个channel里的第kk步消息传递可用下式来表示:Hki=σ([Hk1i+AiHk1i]Wk(l))H_{k}^{i}=\sigma\left(\left[H_{k-1}^{i}+A^{i} \cdot H_{k-1}^{i}\right] \cdot W_{k}^{(l)}\right)通过将每一步的HkH_{k}拼接起来得到Hi=[Xi,Hki],k=1,,K\mathcal{H}^{i}=\left[X^{i}, H_{k}^{i}\right],k=1,\cdot \cdot \cdot, K。使用第ll层的第jj个卷积核θ(l,j)R1×(K+1)\theta^{(l, j)} \in \mathbb{R}^{1 \times(K+1)}Hi\mathcal{H}^{i}进行卷积操作:Z(l,j)=ϕ(sum(Hiθ(l,j))+b)Rnl×dZ^{(l, j)}=\phi\left(\operatorname{sum}\left(\mathcal{H}^{i} \odot \theta^{(l, j)}\right)+b\right) \in \mathbb{R}^{n_{l} \times d}得到第ll层上的第jj个embedding matrix。
如上图,在得到了第00层的Z0,1Z^{0,1}Z0,2Z^{0,2}后,按照DiffPool的方法可以得到S0,1S^{0,1}S0,2S^{0,2},进而得到第1层的两个channel[G1=(X1,A1),G2=(X2,A2)][G^1={(X^1, A^1)},G^2={(X^2, A^2)} ],同时,还能得到G1G^1G2G^2之间的inter-channel adjacency matrix A1,2=S(0,1)TA0S(0,2)Rn1×n1A^{1,2}=S^{(0,1)^{T}} A^{0} S^{(0,2)} \in \mathbb{R}^{n_{1} \times n_{1}}

Multi-channel Learning Process

当一层有多个channel时,不仅要聚合每个channel内部的信息,还要channel之间聚合信息Hki,c=σ([Hk1i,c+Ai,cHk1c]Wk(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,cH_{k}^{i, c}是第ii个channel在与第cc个channel进行kk步聚合后的embedding matrix。Ai,cA^{i,c}的定义在上一小节中已给出。
和single-channel类似,通过将每一步的HH拼接起来得到Hi=[Xi,Hki,Hki,c]\mathcal{H}^{i}=\left[X^{i}, H_{k}^{i}, H_{k}^{i, c}\right],然后在Hi\mathcal{H}^{i}θ(l,j)\theta^{(l, j)}进行卷积操作得到ZZ。这里有一点我没有看懂,不知道Hki,cH_{k}^{i, c}是不是包括了该层上channeli其他所有channel做信息传递的结果。

Multi-channel Graph Convolutional Net-works

在第ll层上对所有的Z(l,j)Z^{(l, j)}做池化得到一个该层的向量表示Y(l)=j=1ClTl( GlobalPool (Z(l,j)))Rd×1Y^{(l)}=\sum_{j=1}^{C_{l} T_{l}}\left(\text { GlobalPool }\left(Z^{(l, j)}\right)\right) \in \mathbb{R}^{d \times 1}ClC_l是第ll层的channel个数,且TlCl+1ClT_{l} \triangleq \frac{C_{l+1}}{C_{l}}
把所有的Y(l)Y^{(l)}拼接起来得到整张图最终的表示Y=lY(l)RdL×1Y=\oplus_{l} Y^{(l)} \in \mathbb{R}^{d \cdot L \times 1}