一.概述
本文作者提出了一种获取图级(graph-level)表示的新图池化(graph pooling)——STURCTPOOL。通过STRUCTPOOL将图池化视为节点聚簇问题,通过其可以对原始图的节点进行聚簇,然后基于此生成一个新图,新图上的每个节点都由原始图上一个簇的节点生成。在聚簇的过程中,不仅考虑了节点的特征,还考虑了其它节点的簇分配(一种拓扑信息,通过条件随机场获得)。作者在多个数据集上进行实验,证明了通过STRUCTPOOL可以获取到更具表达力的图表示。
二.STRUCTURED GRAPH POOLING
2.1 图和图卷积的定义
图:图 G G G可以用其邻接矩阵 A = { 0 , 1 } n × n A = \{0,1\}^{n \times n} A={0,1}n×n和特征矩阵 X ∈ R n × c X \in \mathbb{R}^{n \times c} X∈Rn×c表示,其中 n n n表示图中的节点数, c c c表示节点特征的维数。
作者使用的图卷积与标准的GCN略有不同,其公式如下所示:
X
i
+
1
=
f
(
D
−
1
A
^
X
i
P
i
)
(1)
X_{i+1}=f\left(D^{-1} \hat{A} X_{i} P_{i}\right) \tag{1}
Xi+1=f(D−1A^XiPi)(1)
其中
A
^
=
A
+
I
\hat{A} = A + I
A^=A+I表示加了自环的邻接矩阵,
X
i
∈
R
n
×
c
i
X_i \in \mathbb{R}^{n \times c_i}
Xi∈Rn×ci表示第
i
i
i个卷积层后的节点表示,
P
i
∈
R
c
i
×
c
i
+
1
P_i \in \mathbb{R}^{c_i \times c_{i + 1}}
Pi∈Rci×ci+1是可学习的特征变换矩阵,
f
f
f表示非线性激活函数。
2.2 通过节点聚簇进行图池化
作者考虑通过节点聚类(node clustering)来进行图池化。原始图 G G G中的节点被划分到 k k k个簇中,每个簇都被转换为新图上的一个节点。假定图池化生成一个包含 k k k个节点的新图 G ~ \tilde{G} G~,该图对应的表示为 X ~ ∈ R k × c ~ \tilde{X} \in \mathbb{R}^{k \times \tilde{c}} X~∈Rk×c~和 A ~ ∈ { 0 , 1 } k × k \tilde{A} \in \{0,1\}^{k \times k} A~∈{0,1}k×k。
聚簇问题可以被表示为一个分配矩阵 M ∈ R n × k M \in \mathbb{R}^{n \times k} M∈Rn×k。对于硬分配, m i , j ∈ { 0 , 1 } m_{i,j} \in \{0,1\} mi,j∈{0,1}表示是否节点 i i i属于簇 j j j。对于软分配, m i , j ∈ [ 0 , 1 ] m_{i,j} \in [0,1] mi,j∈[0,1]表示节点 i i i属于簇 j j j的概率,且 ∑ j m i , j = 1 \sum_{j}m_{i,j} = 1 ∑jmi,j=1。
原始图到新图
G
~
\tilde{G}
G~的转换公式如下:
X
~
=
M
T
X
,
A
~
=
g
(
M
T
A
M
)
(2)
\tilde{X}=M^{T} X, \tilde{A}=g\left(M^{T} A M\right) \tag{2}
X~=MTX,A~=g(MTAM)(2)
其中
g
(
⋅
)
g(\cdot)
g(⋅)是一个函数,当
a
~
i
,
j
>
0
\tilde{a}_{i,j} > 0
a~i,j>0时,
g
(
a
~
i
,
j
)
=
1
g(\tilde{a}_{i,j})=1
g(a~i,j)=1,否则
g
(
a
~
i
,
j
)
=
0
g(\tilde{a}_{i,j})=0
g(a~i,j)=0。
2.3 通过条件随机场学习簇分配
节点特征描述了不同节点属性,具有相似特征的节点有更高的概率被分配到同一个簇里。也就是说,任何节点的簇分配不仅依赖于节点的特征矩阵 X X X还取决于其它节点的簇分配。作者认为高阶图结构信息对于graph pooling是有用的,应该在学习簇分配时被显式捕获。为此作者提出名为STRUCTPOOL的图池化,其考虑通过特征矩阵 X X X和不同节点分配间的关系来生成分配矩阵。作者将其表示为条件随机场(Conditional Random Field, CRF)问题。
以
X
X
X为观测值,定义
Y
=
{
Y
1
,
.
.
.
,
Y
n
}
Y = \{Y_1,...,Y_n\}
Y={Y1,...,Yn}为随机场,其中
Y
i
∈
{
1
,
.
.
.
,
k
}
Y_i \in \{1,...,k\}
Yi∈{1,...,k}是一个随机变量,表示节点
i
i
i被分配的簇,则
P
(
Y
∣
X
)
=
1
Z
(
X
)
exp
(
−
∑
c
∈
C
G
′
ψ
c
(
Y
c
∣
X
)
)
(3)
P(Y \mid X)=\frac{1}{Z(X)} \exp \left(-\sum_{c \in C_{G^{\prime}}} \psi_{c}\left(Y_{c} \mid X\right)\right) \tag{3}
P(Y∣X)=Z(X)1exp⎝⎛−c∈CG′∑ψc(Yc∣X)⎠⎞(3)
其中
c
c
c表示一个团,
C
G
′
C_{G'}
CG′表示
G
′
G'
G′上的团集合。
Z
(
X
)
Z(X)
Z(X)是划分函数,
ψ
c
(
⋅
)
\psi_c(\cdot)
ψc(⋅)是由
c
c
c诱导的势(potential)函数。然后对一个分配
y
=
{
y
1
,
.
.
.
,
y
n
}
y=\{y_1,...,y_n\}
y={y1,...,yn}的Gibbs能量函数可以定义为:
E
(
y
∣
X
)
=
∑
c
∈
C
G
′
ψ
c
(
y
c
∣
X
)
(4)
E(y|X) = \sum_{c \in C_{G'}} \psi_c(y_c | X) \tag{4}
E(y∣X)=c∈CG′∑ψc(yc∣X)(4)
寻找一个最优分配相当于最大化
P
(
Y
∣
X
)
P(Y|X)
P(Y∣X),也相当于最小化Gibbs能量。
2.4 带拓扑信息的Gibbs Energy
C
G
′
C_{G'}
CG′表示在图
G
′
G'
G′上定义的团集(clique set),作者使用
C
G
′
C_{G'}
CG′上的一元(unary)团(只包含一个节点的团)。作者基于**
ℓ
\ell
ℓ-hop连接性**来定义成对的团。
A
ℓ
∈
{
0
,
1
}
n
×
n
A^{\ell} \in\{0,1\}^{n \times n}
Aℓ∈{0,1}n×n表示图
G
G
G的
ℓ
\ell
ℓ-hop连接性,若
a
i
,
j
ℓ
=
1
a^{\ell}_{i,j}=1
ai,jℓ=1,则表示节点
i
i
i和节点
j
j
j在
ℓ
\ell
ℓ-hop内可达。因此若
(
i
,
j
)
∈
C
G
′
(i,j) \in C_{G'}
(i,j)∈CG′是成对团,则
a
i
,
j
ℓ
=
1
a^{\ell}_{i,j}=1
ai,jℓ=1。基于此,关于簇分配
y
y
y的Gibbs能量可以形式化为:
E
(
y
)
=
∑
i
ψ
u
(
y
i
)
+
∑
i
≠
j
ψ
p
(
y
i
,
y
j
)
a
i
,
j
ℓ
(5)
E(y)=\sum_{i} \psi_{u}\left(y_{i}\right)+\sum_{i \neq j} \psi_{p}\left(y_{i}, y_{j}\right) a_{i, j}^{\ell} \tag{5}
E(y)=i∑ψu(yi)+i=j∑ψp(yi,yj)ai,jℓ(5)
其中
- ψ u ( y i ) \psi_{u}\left(y_{i}\right) ψu(yi)表示节点 u u u分配给簇 y i y_i yi的一元能量。
- ψ p ( y i , y j ) \psi_{p}\left(y_{i}, y_{j}\right) ψp(yi,yj)为成对能量,表示将节点 i , j i,j i,j分别分配给簇 y i , y j y_i,y_j yi,yj的能量。
为了简单起见,公式(5)中去掉了条件 X X X。
作者使用神经网络来获取上述两种能量。
对于一元能量 Ψ u ∈ R n × k \Psi_{u} \in \mathbb{R}^{n \times k} Ψu∈Rn×k,作者在节点特征矩阵 X X X上应用多层图卷积来获取。
已经工作采用高斯核来计算成对能量,基于此成对能量可以被表示为:
ψ
p
(
y
i
,
y
j
)
=
μ
(
y
i
,
y
j
)
∑
m
=
1
K
w
(
m
)
k
(
m
)
(
x
i
,
x
j
)
(6)
\psi_{p}\left(y_{i}, y_{j}\right)=\mu\left(y_{i}, y_{j}\right) \sum_{m=1}^{K} w^{(m)} k^{(m)}\left(x_{i}, x_{j}\right) \tag{6}
ψp(yi,yj)=μ(yi,yj)m=1∑Kw(m)k(m)(xi,xj)(6)
其中
k
(
m
)
(
⋅
,
⋅
)
k^{(m)}(\cdot, \cdot)
k(m)(⋅,⋅)表示第
m
m
m个高斯核,
x
i
x_i
xi即节点
i
i
i在
X
X
X中对应的特征向量,
w
(
m
)
w^{(m)}
w(m)是可学习的权重参数,
μ
(
y
i
,
y
j
)
\mu(y_i,y_j)
μ(yi,yj)是相容性(compatibility)函数,可以用来建模不同分配对间的相容性。但由于精确计算高斯核的输出计算效率比较低,因此作者提出用注意力矩阵来作为成对能量的度量。高斯核反映了不同特征向量之间的联系有多强,注意力矩阵反映了不同特征向量之间的相似性,这两者有相似之处,且后者的计算成本显著降低。基于此,成对能量定义如下:
ψ
p
(
y
i
,
y
j
)
=
μ
(
y
i
,
y
j
)
x
i
T
x
j
∑
k
≠
i
x
i
T
x
k
(7)
\psi_{p}\left(y_{i}, y_{j}\right)=\mu\left(y_{i}, y_{j}\right) \frac{x_{i}^{T} x_{j}}{\sum_{k \neq i} x_{i}^{T} x_{k}} \tag{7}
ψp(yi,yj)=μ(yi,yj)∑k=ixiTxkxiTxj(7)
作者指出公式(5)的优化是比较困难的,因此使用了一种平均场近似(mean field approximation),它是一种迭代更新算法。作者使用mean field approximation可以获取最可能的簇分配。
2.5 STRUCTPOOL总结
STRUCTPOOL算法如下所示:
作者指出该算法可以用GNN操作来实现:
- 一元能量矩阵 Ψ \Psi Ψ可以通过几层GCN卷积来获取;
- 正则化操作(Algorithm1中的3&9)等价于softmax操作;
- 相容性函数 μ ( i , j ) \mu(i,j) μ(i,j)可以实现为可训练矩阵 N ∈ R k × k \mathcal{N} \in \mathbb{R}^{k \times k} N∈Rk×k;
- 其它步骤可以通过矩阵乘法来实现。
STRUCTPOOL可视化为:
其中原始图 G G G包含6个节点,颜色表示其特征,从该图可以看出一元能量矩阵是通过GCNs获取的,成对能量是使用节点特征 X X X和拓扑信息 A A A获取的注意力矩阵。然后执行迭代更新,通过mean field approximation来生成最可能的分配矩阵。最终得到新生成的图 G ~ \tilde{G} G~。
在图分类中,首先通过STRUCTPOOL可以获取到每个图的 k k k个向量,然后应用1维卷积和全连接层来进行分类。
三.实验
测评的benchmark数据集统计特征如下:
不同池化技术的结果为:
结论:STRUCTPOOL处于SOTA地位。
不同迭代更新次数的结果为:
结论:随着迭代次数的增加,性能也变得更好。
拓扑信息的影响实验结果为:
结论: ℓ \ell ℓ越大,更多的成对关系被考虑,性能越好。
在GIN中整合STRUCTPOOL结果为:
结论:在GIN中加入STRUCTPOOL可以显著提升预测性能。