一些补充
图(Graph)
图用 G = ( V , E ) G=(V, E) G=(V,E)表示,V中元素为顶点(vertex),E中元素为边(edge)。图中边为无序对时为无向图,为有序对时为有向图。以下为一个无向图的例子。
邻居(Neighborhood)
无向图中,如果顶点
v
i
v_i
vi是顶点
v
j
v_j
vj的邻居,那么顶点
v
j
v_j
vj也是顶点
v
i
v_i
vi的邻居。 顶点
v
i
v_i
vi的邻居
N
(
i
)
N(i)
N(i)
N
(
i
)
=
{
v
i
∈
V
∣
v
i
v
j
∈
E
}
N(i)=\{v_i\in V|v_iv_j\in E\}
N(i)={vi∈V∣vivj∈E}
度矩阵(Degree)
度矩阵是对角阵,对角上的元素为各个顶点的度。顶点 v i v_i vi的度表示和该顶点相关联的边的数量。无向图中顶点 v i v_i vi的度 d ( v i ) = N ( i ) d(v_i)=N(i) d(vi)=N(i)。有向图中,顶点 v i v_i vi的度分为顶点 v i v_i vi的出度和入度,即从顶点 v i v_i vi出去的有向边的数量和进入顶点 v i v_i vi的有向边的数量。
邻接矩阵(Adjacency)
邻接矩阵表示顶点间关系,是n阶方阵(n为顶点数量)。分为有向图邻接矩阵和无向图邻接矩阵,无向图邻接矩阵是对称矩阵,而有向图的邻接矩阵不一定对称。对于有向图,
v
i
v
j
v_iv_j
vivj是有方向的,即
v
i
→
v
j
v_i \to v_j
vi→vj .
[
A
(
G
)
]
i
j
=
{
1
,
if
v
i
v
j
∈
E
,
0
,
otherwise
[A(G)]_{ij}=\begin{cases} & 1, \text{ if } v_iv_j\in E, \\ & 0, \text{ otherwise } \end{cases}
[A(G)]ij={1, if vivj∈E,0, otherwise
Introduction
GCN也是一个神经网络层,它的层与层之间的传播方式是
H
(
l
+
1
)
=
σ
(
D
~
−
1
/
2
A
~
D
~
−
1
/
2
)
H
(
l
)
W
(
l
)
H^{(l+1)} = \sigma(\tilde D^{-1/2}\tilde A\tilde D^{-1/2})H^{(l)}W^{(l)}
H(l+1)=σ(D~−1/2A~D~−1/2)H(l)W(l)
- A ~ = A + I \tilde A=A+I A~=A+I, I I I是单位矩阵
- D ~ \tilde D D~是A波浪的度矩阵(degree matrix),
- 公式为 H是每一层的特征,对于输入层的话,H就是X
- σ是非线性激活函数
上图中的GCN输入一个图,通过若干层GCN每个node的特征从X变成了Z,但是无论中间有多少层,node之间的连接关系,即A都是共享的。
假设我们构造一个两层的GCN,则整体的正向传播的公式为:
Z
=
f
(
X
,
A
)
=
R
e
L
U
(
A
^
t
a
n
h
(
A
^
X
W
(
0
)
)
W
(
1
)
)
Z=f(X,A)=ReLU(\hat A tanh(\hat AXW^{(0)})W^{(1)})
Z=f(X,A)=ReLU(A^tanh(A^XW(0))W(1))
针对所有带标签的节点计算cross entropy损失函数
L
=
−
∑
l
∈
y
l
∑
f
=
1
F
Y
l
f
l
n
Z
l
f
\mathcal L=-\sum_{l\in y_l}\sum_{f=1}^F Y_{lf}lnZ_{lf}
L=−l∈yl∑f=1∑FYlflnZlf
- 每一层GCN的输入都是邻接矩阵A和node的特征H,那么我们直接做一个内积,再乘一个参数矩阵W,然后激活一下,得到一个简单的神经网络层。
f ( H ( l ) , A ) = σ ( A H ( l ) W ( l ) ) f(H^{(l)}, A)=\sigma(AH^{(l)}W^{(l)}) f(H(l),A)=σ(AH(l)W(l))
但是这个模型有几个局限性:
- 只使用A的话,由于A的对角线上都是0,所以在和特征矩阵H相乘的时候,只会计算一个node的所有邻居的特征的加权和,该node自己的特征却被忽略了。因此,需要做一个小改动,给A加上一个单位矩阵 I I I ,这样就让对角线元素变成了1。
- A是没有经过归一化的矩阵,这样与特征矩阵相乘会改变特征原本的分布,产生一些不可预测的问题。所以要对A做一个标准化处理。首先让A的每一行加起来为1,我们可以乘以一个D的逆,D就是度矩阵。我们可以进一步把D的拆开与A相乘,得到一个对称且归一化的矩阵。
- 通过对上面两个局限的改进,我们便得到了最终的层特征传播公式
f ( H ( l ) , A ) = σ ( D ~ − 1 / 2 A ~ D ~ − 1 / 2 ) H ( l ) W ( l ) f(H^{(l)}, A) = \sigma(\tilde D^{-1/2}\tilde A\tilde D^{-1/2})H^{(l)}W^{(l)} f(H(l),A)=σ(D~−1/2A~D~−1/2)H(l)W(l)