文章来自https://tkipf.github.io/graph-convolutional-networks/
图卷积网络(GCNS)的定义
对于图卷积网络模型,目标是学习一种信号/特征的图表示函数 G = ( V , E ) \mathcal{G}=(\mathcal{V}, \mathcal{E}) G=(V,E),其输入为:
- 每个结点 i i i的特征 x i x_{i} xi组成的 N × D N \times D N×D的特征矩阵 X X X( N N N:节点的数量, D D D:输入特征的维度)
- 图结构的矩阵表示,常见的为图的邻接矩阵 A A A,输出为 N × F N \times F N×F的特征矩阵 Z Z Z, F F F为每个节点输出特征的维度。
每一个神经网络层可以用一个非线性函数来表示。
H
(
l
+
1
)
=
f
(
H
(
l
)
,
A
)
H^{(l+1)}=f\left(H^{(l)}, A\right)
H(l+1)=f(H(l),A)
网络初始输入 H ( 0 ) = X H^{(0)}=X H(0)=X,第 L L L层输出 H ( L ) = Z H^{(L)}=Z H(L)=Z。不同的模型一般只是在 f ( ⋅ , ⋅ ) f(\cdot, \cdot) f(⋅,⋅)的选择和参数的选择上有所不同。
图卷积网络一个简单的例子
假设我们考虑下面这种前向传播模型:
f
(
H
(
l
)
,
A
)
=
σ
(
A
H
(
l
)
W
(
l
)
)
f\left(H^{(l)}, A\right)=\sigma\left(A H^{(l)} W^{(l)}\right)
f(H(l),A)=σ(AH(l)W(l)),
W
(
l
)
W^{(l)}
W(l)为l-th的权重矩阵,
σ
(
⋅
)
\sigma(\cdot)
σ(⋅)为非线性激活函数。尽管这个模型很简单,但是他非常强大。
但是我们对这个模型提出两个限制。
- 在邻接矩阵中,主对角线上的值为0(除非有自环),意味着对每个结点,上面的操作会把除了节点本身的其他邻接节点的特征相加。为了解决这个问题,我们需要给每个节点添加自环,即给 A A A加一个单位阵。
- A A A是没有归一化的,因此左乘A会完全改变特征向量的尺度。归一化 A A A意味着每行行相加等于1,所以我们给A左乘一个“diagonal node degree matrix” D D D的逆,“diagonal node degree matrix”即对角线元素为每个节点度的矩阵。在实际中常使用规范化对称操作,i.e. D − 1 2 A D − 1 2 D^{-\frac{1}{2}} A D^{-\frac{1}{2}} D−21AD−21.
合并这两个限制,我们得到:
f
(
H
(
l
)
,
A
)
=
σ
(
D
^
−
1
2
A
^
D
^
−
1
2
H
(
l
)
W
(
l
)
)
f\left(H^{(l)}, A\right)=\sigma\left(\hat{D}^{-\frac{1}{2}} \hat{A} \hat{D}^{-\frac{1}{2}} H^{(l)} W^{(l)}\right)
f(H(l),A)=σ(D^−21A^D^−21H(l)W(l))
其中 A ^ = A + I \hat{A}=A+I A^=A+I,其中 I I I是单位矩阵, D ^ \hat{D} D^是矩阵 A ^ \hat{A} A^的对角节点度矩阵。
图卷积网络实战
上图是一个著名的图数据集: Zachary’s karate club network
我们采用随机初始权重的3-layer GCN.同时我们输入图的邻接矩阵和特征矩阵
X
=
I
X=I
X=I(令
X
X
X为单位矩阵,因为我们没有任何节点的特征)。这个三层的GCN进行三次前向传播,并且对每个节点的3-order邻居节点进行卷积。最后网络输出的的embedding如下图所示。
可以看到,embedding 很好地代表了不同的节点community的结构,而且是在没有训练的情况下。
我们可以用Weisfeiler-Lehman algorithm来解释这种现象。一维Weisfeiler-Lehman原理如下:
对于所有节点
v
i
∈
G
v_{i} \in \mathcal{G}
vi∈G:
- 获取所有相邻节点 { v j } \left\{v_{j}\right\} {vj}的特征 { h v j } \left\{h_{v_{j}}\right\} {hvj}
- 更新节点特征
h
v
i
←
hash
(
∑
j
h
v
j
)
h_{v_{i}} \leftarrow \operatorname{hash}\left(\sum_{j} h_{v_{j}}\right)
hvi←hash(∑jhvj),其中hash
(
⋅
)
(\cdot)
(⋅)是一个单射哈希函数
重复上面操作 k k k此,或者直到收敛。
在实际中, Weisfeiler-Lehman 会为大多数图产生一个不重复的特征集和,这样每个节点都在图中具有不同的角色。除了高度规则的图形,如网格、链。对于大多数不规则的图,这种特征分配可以用来检查图的同构性(即两个图是否是同构的)。
回到我们的图卷积前向传播规则(现在是向量形式)
h v i ( l + 1 ) = σ ( ∑ j 1 c i j h v j ( l ) W ( l ) ) h_{v_{i}}^{(l+1)}=\sigma\left(\sum_{j} \frac{1}{c_{i j}} h_{v_{j}}^{(l)} W^{(l)}\right) hvi(l+1)=σ(j∑cij1hvj(l)W(l))其中 j j j表示 v i v_{i} vi的相邻节点, c i j c_{i j} cij是边 ( v i , v j ) \left(v_{i}, v_{j}\right) (vi,vj)的归一化常数,源于规范化邻接矩阵 D − 1 2 A D − 1 2 D^{-\frac{1}{2}} A D^{-\frac{1}{2}} D−21AD−21。我们现在看到这个传播规则可以被解释为在初始Weisfeiler-Lehman algorithm里哈希函数使用的可微和参数化(使用 W ( l ) W^{(l)} W(l))变量。·如果我们现在选择一个适当的非线性激活函数并初始化随机权值矩阵使其正交,那么这个更新规则在实践中变得稳健。并且我们获得了更加平滑的embedding结果,这样我们就可以把节点间的距离解释为局部图结构的相似性。