EigenPool - Graph Convolutional Networks with EigenPooling KDD 2019
作者:互联网
文章目录
论文:Graph Convolutional Networks with EigenPooling
作者:Yao Ma , Suhang Wang , Charu C. Aggarwal , Jiliang Tang
密歇根州立大学,宾夕法尼亚州立大学
来源:KDD 2019
论文链接:Arxiv: https://arxiv.org/abs/1904.13107
代码:https://github.com/alge24/eigenpooling
1 前言
作者提出了EigenPool用来进行图的层次化Pooling操作,在图坍缩方面,与DiffPool的图坍缩机制不同的是,EigenPool方法进行图坍缩时不需要引入任何需要训练的参数,而是采用如谱聚类的方式对图进行划分,然后再进行池化操作。谱聚类算法的思想是将图映射到特征空间后再使用聚类算法进行聚类(如Kmeans聚类算法),使得不同的簇之间的相连节点之间的权重尽可能大,而同一个簇之间的节点之间的权重尽可能小。在谱聚类中常用的聚类算法就是谱聚类,那么节点到簇的分配方式就是一种硬分配的方式,这样就保证了每一个节点只能分配的下一层的一个簇中,从而保证了网络连接的稀疏性,大大降低了参数量和计算开销。
此外,DiffPool在池化时,采样加和的方式聚合节点特征,这一定程度上丢失了每个簇的结构信息。为了解决结构信息丢失的问题,EigenPool使用谱图理论的知识来整合子图的结构信息和属性信息。
EigenPool的优点
- 硬簇聚类矩阵,减少合并后超级节点之间信息传递的计算量
EigenPool的缺点:
- 聚类过程非参数化无法进行学习,硬簇聚类可能会对准确率有所损失
总的来说,本文有以下4个贡献点
- 引入了EigenPool 层
- 对EigenPool 进行了理论分析
- 应用EigenPool 到GCN中,提出了EigenGCN
- EigenPool实验效果的评估
2 图池化相关工作
全局池化方法
- Convolutional networks on graphs for learning molecular fingerprints,NIPS 2015
将所有节点的表示求平均值作为图的表示 - Gated graph sequence neural networks,ICLR 2016
将连接到图中所有节点的“虚拟节点”添加到图中,并将其节点表示作为图的表示 - Neural Message Passing for Quantum Chemistry,ICML 2017
使用深度学习架构来聚合节点embedding,将图大小排列相同后使用全连接层或卷积层 - An end-to-end deep learning architecture for graph classification,AAAI 2018
将图大小排列相同后使用全连接层或卷积层
这些全局池方法不能分层学习图表示,从而忽略了图结构中的重要信息。
分层池化方法
- Convolutional neural networks on graphs with fast localized spectral filtering,NIPS2016
- SplineCNN: Fast geometric deep learning with continuous B-spline kernels,CVPR 2018
- Dynamic edge-conditioned filters in convolutional neural networks on graphs,CVPR 2017
使用确定性图聚类算法确定池化模式。 - Hierarchical graph representation learning with differentiable pooling,NIPS 2018
分层池化的两个步骤
- 将节点分组为超级节点来粗化一个图,形成层次结构;
- 逐级学习超级节点表示,最后得到图的表示。
这些方法在生成超节点表示时使用平均池或最大池,忽略了子图中重要的结构信息。
3 EigenPool
EigenPool是一种基于谱图理论的图坍缩方法,EigenPool的思想和DiffPool类似,都是采用层次化的方式提取整个图的特征,在每个图的池化层中都将前一层的一个簇映射到下一层的一个超节点,从而最后用一个超节点的特征向量来表示一个图的全局信息。
EigenPool模型可分成图坍缩和池化操作两个核心部分:
基于硬分配的图坍缩(图粗化)
DiffPool在进行图坍缩时,需要学习一个簇的软分配矩阵 S ( l ) ∈ R n ( l ) × n ( l + 1 ) S^{(l)} \in R^{n^{(l)} \times n^{(l+1)}} S(l)∈Rn(l)×n(l+1), S i j ( l ) S_{ij}^{(l)} Sij(l)表示第 l l l层的节点 i i i分配到下一层的超级节点(簇) j j j的概率。为了实现将每个节点以概率的形式分配到下一层网络的每一个簇中,需要使用全连接的方式连接每一个节点和下一层的簇,因此,需要引入大量的参数,从而导致大大增加了模型的时间和空间复杂度。
与DiffPool的图坍缩机制不同的是,EigenPool方法进行图坍缩时不需要引入任何需要训练的参数,而是采用如谱聚类的方式对图进行划分,然后再进行池化操作。谱聚类算法的思想是将图映射到特征空间后再使用聚类算法进行聚类(如Kmeans聚类算法),使得不同的簇之间的相连节点之间的权重尽可能大,而同一个簇之间的节点之间的权重尽可能小。在谱聚类中常用的聚类算法就是谱聚类,那么节点到簇的分配方式就是一种硬分配的方式,这样就保证了每一个节点只能分配的下一层的一个簇中,从而保证了网络连接的稀疏性,大大降低了参数量和计算开销。
经典的谱聚类算法流程如下:
- 计算拉普拉斯矩阵 L = D − A ∈ R n × n L=D-A \in \mathbb{R}^{n \times n} L=D−A∈Rn×n
- 构建正则化后的拉普拉斯矩阵 L = D − 1 2 L D − 1 2 L=D^{-\frac{1}{2}} L D^{-\frac{1}{2}} L=D−21LD−21
- 计算 L L L的特征值,取最小的 k k k个特征值,并计算对应的特征向量 u 1 , u 2 , … , u k ∈ R n u_{1}, u_{2}, \ldots, u_{k} \in \mathbb{R}^{n} u1,u2,…,uk∈Rn
- 将上面的 k k k 个列向量组成矩阵 U = u 1 ∥ u 2 ∥ … ∥ u k ∈ R n × k U=u_{1}\left\|u_{2}\right\| \ldots \| u_{k} \in \mathbb{R}^{n \times k} U=u1∥u2∥…∥uk∈Rn×k
- 对矩阵 U U U 按行标准化
- 令 y i ∈ R k y_{i} \in \mathbb{R}^{k} yi∈Rk 是 U U U 的第 i i i行的向量
- 使用k-means算法将新样本点 Y = { y 1 , y 2 , … , y n } Y=\left\{y_{1}, y_{2}, \ldots, y_{n}\right\} Y={y1,y2,…,yn} 聚类成族 C 1 , C 2 , … , C k C_{1}, C_{2}, \ldots, C_{k} C1,C2,…,Ck
- 输出族 A 1 , A 2 , … , A k , A_{1}, A_{2}, \ldots, A_{k}, A1,A2,…,Ak, 其中, A i = { j ∣ y j ∈ C i } A_{i}=\left\{j \mid y_{j} \in C_{i}\right\} Ai={j∣yj∈Ci}
图粗化是作用在整张图
G
G
G 切割后的子图
G
(
k
)
G^{(k)}
G(k) 上的。子图与子图之间没有交集,也就是说
G
(
k
)
G^{(k)}
G(k) 满足
G
(
1
)
∪
G
(
2
)
∪
⋯
∪
G
(
k
)
∪
G^{(1)} \cup G^{(2)} \cup \cdots \cup G^{(k)} \cup
G(1)∪G(2)∪⋯∪G(k)∪
⋯
∪
G
(
K
)
=
G
\cdots \cup G^{(K)}=G
⋯∪G(K)=G 且
G
(
1
)
∩
G
(
2
)
∩
⋯
∩
G
(
k
)
∩
⋯
∩
G
(
K
)
=
∅
G^{(1)} \cap G^{(2)} \cap \cdots \cap G^{(k)} \cap \cdots \cap G^{(K)}=\emptyset
G(1)∩G(2)∩⋯∩G(k)∩⋯∩G(K)=∅。文中选用谱聚类方法将大图切为一个个子图。
图粗化的结果是对于每一个子图,都希望能用一个节点来表示,这个节点也可以称为超节点(supernode)。经过粗化,可以希望得 到粗化后的图的邻接矩阵。
记
A
∈
R
N
×
N
A \in \mathbb{R}^{N \times N}
A∈RN×N 为包含
N
N
N 个节点的图
G
G
G 的邻接矩阵,
X
∈
R
N
×
d
X \in \mathbb{R}^{N \times d}
X∈RN×d 为图
G
G
G 的特征矩阵,
d
d
d 表示节点的特征维度。需要注意的 是,每个子图中的节点数量并不相同, 记
N
k
N_{k}
Nk 为子图
G
(
k
)
G^{(k)}
G(k) 中的节点数量,
Γ
k
\Gamma^{k}
Γk 是子图
G
(
k
)
G^{(k)}
G(k) 中的所有节点组成的列表, 即
Γ
k
=
\Gamma^{k}=
Γk=
[
v
1
,
v
2
,
…
,
v
j
,
…
,
v
N
k
]
\left[v_{1}, v_{2}, \ldots, v_{j}, \ldots, v_{N_{k}}\right]
[v1,v2,…,vj,…,vNk] 且
v
j
∈
G
(
k
)
∘
v_{j} \in G^{(k)} \circ
vj∈G(k)∘ 定义表示图
G
G
G 与子图
G
(
k
)
G^{(k)}
G(k) 关系的上采样矩阵
C
(
k
)
∈
R
N
×
N
k
:
C^{(k)} \in \mathbb{R}^{N \times N_{k}}:
C(k)∈RN×Nk:
C ( k ) [ i , j ] = 1 if and only if Γ ( k ) ( j ) = v i C^{(k)}[i, j]=1 \text { if and only if } \Gamma^{(k)}(j)=v_{i} C(k)[i,j]=1 if and only if Γ(k)(j)=vi
设图
G
G
G 的某维特征
x
∈
R
N
×
1
x \in \mathbb{R}^{N \times 1}
x∈RN×1, 在谱图论中,
x
x
x 称为图
G
G
G 的某一维信号,那么图
G
G
G 中属于子图
G
(
k
)
G^{(k)}
G(k) 的信号为
x
(
k
)
=
(
C
(
k
)
)
T
x
x^{(k)}=\left(C^{(k)}\right)^{T} x
x(k)=(C(k))Tx。反之, 可以将子图
G
(
k
)
G^{(k)}
G(k) 中的某一维信号映射回图
G
G
G, 即
x
ˉ
=
C
(
k
)
x
(
k
)
\bar{x}=C^{(k)} x^{(k)}
xˉ=C(k)x(k) 。在
x
ˉ
\bar{x}
xˉ 中, 不属于子图
G
(
k
)
G^{(k)}
G(k) 的,值为
0
∘
0_{\circ}
0∘ 同理,可以作用在多维信 号
X
∈
R
N
×
d
X \in \mathbb{R}^{N \times d}
X∈RN×d 上。这样看似也得到了粗化图的特征矩阵,但是如果就这样结束了,巳不没有任何需要深度学习的地方了吗?
表示子图
G
(
k
)
G^{(k)}
G(k) 中节点连接情况的邻接矩阵
A
(
k
)
∈
R
N
k
×
N
k
A^{(k)} \in \mathbb{R}^{N_{k} \times N_{k}}
A(k)∈RNk×Nk 可以由下式计算:
A
(
k
)
=
(
C
(
k
)
)
T
A
C
(
k
)
A^{(k)}=\left(C^{(k)}\right)^{T} A C^{(k)}
A(k)=(C(k))TAC(k)
那么对于整张图 G G G 来说,不包含子图与子图之间的边的邻接矩阵 A i n t A_{i n t} Aint 可由下式计算:
A i n t = ∑ k K C ( k ) A ( k ) ( C ( k ) ) T A_{i n t}=\sum_{k}^{K} C^{(k)} A^{(k)}\left(C^{(k)}\right)^{T} Aint=k∑KC(k)A(k)(C(k))T
那么只包含子图与子图之间的边的邻接矩阵
A
e
x
t
=
A
−
A
i
n
t
A_{e x t}=A-A_{i n t}
Aext=A−Aint。
定义分配矩阵
S
∈
R
N
×
K
S \in \mathbb{R}^{N \times K}
S∈RN×K 满足:
S [ i , k ] = 1 if and only if v i ∈ Γ ( k ) S[i, k]=1 \text { if and only if } v_{i} \in \Gamma^{(k)} S[i,k]=1 if and only if vi∈Γ(k)
分配矩阵 S S S 表示图 G G G 中节点 v i v_{i} vi 与所有子图之间的关系。那么,粗化的图 G c o a r G_{c o a r} Gcoar 的邻接矩阵可以表示为 A c o a r = S T A e x t S , A_{c o a r}=S^{T} A_{e x t} S, Acoar=STAextS, 即图 G G G 经 过粗化后,子图变为超节点, A c o a r A_{c o a r} Acoar 为表示超节点之间边关系的邻接矩阵。
基于特征向量的池化
DiffPool在池化时,采样加和的方式聚合节点特征,这一定程度上丢失了每个簇的结构信息。为了解决结构信息丢失的问题,EigenPool使用谱图理论的知识来整合子图的结构信息和属性信息。
在这一步,希望得到粗话的图的特征矩阵 X c o a r X_{c o a r} Xcoar。此处的下采样操作是基于谱图论的,特征向量就是指拉普拉斯矩阵 L L L 的特征向量。记 U = [ u 1 , u 2 , … , u N ] ∈ R N × N U=\left[u_{1}, u_{2}, \ldots, u_{N}\right] \in \mathbb{R}^{N \times N} U=[u1,u2,…,uN]∈RN×N 是由拉普拉斯矩阵 L L L 的特征向量组成的矩阵, x x x 为图的某一信号,则图的傅里叶变换可以表示为:
x ^ = U T x \hat{x}=U^{T} x x^=UTx
即
x
^
\hat{x}
x^ 为
x
x
x 在频域中的表示。
记
L
(
k
)
L^{(k)}
L(k) 为子图
G
(
k
)
G^{(k)}
G(k) 的拉普拉斯矩阵,其特征向量为
u
1
(
k
)
,
…
,
u
N
k
(
k
)
,
u_{1}^{(k)}, \ldots, u_{N_{k}}^{(k)},
u1(k),…,uNk(k), 经过上采样操作
C
(
k
)
C^{(k)}
C(k) 可以将子图
G
(
k
)
G^{(k)}
G(k) 的拉普拉斯矩阵
L
(
k
)
L^{(k)}
L(k) 的特征向量
u
l
(
k
)
u_{l}^{(k)}
ul(k) 映射回怪张图
G
G
G :
u ˉ l ( k ) = C ( k ) u l ( k ) , l = 1 … N k \bar{u}_{l}^{(k)}=C^{(k)} u_{l}^{(k)}, l=1 \ldots N_{k} uˉl(k)=C(k)ul(k),l=1…Nk
将所有子图的
u
ˉ
l
\bar{u}_{l}
uˉl 组成一个矩阵,记为
Θ
l
∈
R
N
×
K
,
\Theta_{l} \in \mathbb{R}^{N \times K},
Θl∈RN×K, 即
Θ
l
=
[
u
ˉ
l
(
1
)
,
…
,
u
ˉ
l
(
K
)
]
\Theta_{l}=\left[\bar{u}_{l}^{(1)}, \ldots, \bar{u}_{l}^{(K)}\right]
Θl=[uˉl(1),…,uˉl(K)]。
记
X
l
∈
R
K
×
d
X_{l} \in \mathbb{R}^{K \times d}
Xl∈RK×d 表示图
G
G
G 的特征矩阵
X
X
X 经过
Θ
l
T
\Theta_{l}^{T}
ΘlT 下采样后的特征矩阵,其第
k
\mathrm{k}
k 行为第
k
\mathrm{k}
k 个子图
G
(
k
)
G^{(k)}
G(k) 经下采样的信息。
前面提到过,每个子图中的节点数量不同,所以其拉普拉斯矩阵的特征向量的数量(等于节点数量)也不同。所以,当
N
k
<
l
N_{k}<l
Nk<l 时, 必然存在子图
G
(
k
)
G^{(k)}
G(k) 没有
u
l
(
k
)
u_{l}^{(k)}
ul(k) 的情况,这种时候令
u
l
(
k
)
=
0
u_{l}^{(k)}=0
ul(k)=0 。记所有子图的节点数量的最大值为
N
max
,
N_{\max },
Nmax, 那么
l
≤
N
max
l \leq N_{\max }
l≤Nmax。
级联所有经过下采样的
X
X
X 得到最终下采样的结果
X
p
o
o
l
e
d
∈
R
K
×
d
⋅
N
m
a
x
X_{pooled} \in \mathbb{R}^{K \times d \cdot N_{m a x}}
Xpooled∈RK×d⋅Nmax。 为了简化操作,取
H
≪
N
max
,
H \ll N_{\max },
H≪Nmax, 则粗化后的图的特征矩阵为
X
c
o
a
r
=
[
X
0
,
…
,
X
H
]
0
X_{c o a r}=\left[X_{0}, \ldots, X_{H}\right]_{0}
Xcoar=[X0,…,XH]0
论文后续给出了关于上述操作的证明,包括
H
H
H 取值的证明。
和DiffPool相比而言,EigenPool模型使得不同的网络层中各个超级节点(簇)之间的连接保持了稀疏性,提升了存储和计算的高效性。在图的坍缩过程中,使用谱聚类的方式划分子图,池化时也使用图的傅里叶变换将图信号映射到谱空间,从而使得池化过程兼顾各个簇内的结构和属性信息。
和DiffPool相比而言,EigenPool模型使得不同的网络层中各个超级节点(簇)之间的连接保持了稀疏性,提升了存储和计算的高效性。在图的坍缩过程中,使用谱聚类的方式划分子图,池化时也使用图的傅里叶变换将图信号映射到谱空间,从而使得池化过程兼顾各个簇内的结构和属性信息。
3 实验
作者主要从两个角度进行实验,一个是相比其他pool算法对准确率的提升,另一个是超参数H的影响。
其中,EigenGCN后面的数字表示H的大小,对比实验中,作者得到如下若干结论
- DIFFPOOL与EigenPool显著超过其他不使用层次化聚类的结果
- EigenPool对网络的准确率有显著改进
- 更大的H可以保留更多的信息,但是也可能会引入更多的噪声
- EigenPool达到了SOTA的准确率
下图是真实数据集上,H的大小对保留能量比率的影响
4 总结
EigenPool的提出告诉我们对传统算法的研究永远不过时,EigenPool使用的是图论中的GFT进行变换和操作,与DIFFPOOL算法相比有更强的理论依据。不过有一个缺点在于没有对时间代价的分析,EigenPool的两步处理可能比较耗时。
有错误的地方还望不吝指出,欢迎进群交流GNNs(入群备注信息!!!,格式:姓名(或网名) -(学校或其他机构信息)- 研究方向)。
标签:Convolutional,mathbb,子图,KDD,Graph,矩阵,EigenPool,聚类,节点 来源: https://blog.csdn.net/yyl424525/article/details/112340913