文章目录
Graph Convolutional Neural Network
Convolutional Neural Network
传统的cnn针对的是分布在欧式空间(Euclidean domains)的数据,这些数据最显著的特征就是具有规则的空间结构,例如图像是规则的二维矩阵,语音是规则的一维序列等。这些Euclidean domains data可以用一维或二维矩阵来表示,cnn可以非常高效地处理。
- 平移不变性(translation invariance):无论输入怎么变形(平移,旋转等),输出都不变,网络越深平移不变性越明显;
- 平移可变性(translation variance):针对目标检测地,比如一只猫在图像中从左侧移到了右侧,网络检测出的猫的坐标发生了变化。
离散卷积本质上就是一种加权求和。cnn中的卷积是一种离散卷积,本质上是利用过一个共享参数的滤波器(kernel),通过计算中心像素点以及相邻像素点的加权和,来构成feature map,实现空间特征的抽取。当然加权系数就是卷积核的权重系数(W)。
卷积核的参数W随机初始化后,通过网络最小化误差函数,经过反向传播,梯度下降法进行迭代优化。所以说,通过优化卷积核的参数,从而实现特征抽取。GCN的理论很大部分工作是引入了可以优化的卷积参数。
Graph Convolutional Neural Network
Non-Euclidean Domain data:生活中大量的数据不具备规则的空间结构,例如推荐系统、电子交易、分子结构等抽象出来的图谱。这些图谱中的每个节点连接不尽相同,有的节点有三个连接,有的节点只有一个连接,是不规则的结构。对于这些不规则的数据对象,传统卷积网络的效果不尽人意。CNN卷积操作配合pooling等在结构规则的图像等数据上效果显著,但是在非欧氏空间比如图(即graph,流形也是典型的非欧结构,这里只考虑图),难以选取固定的卷积核来适应整个图的不规则性,如邻居节点数量的不确定和节点顺序的不确定。
Graph数据的空间特征:
- 节点特征:每个节点有自己的特征(体现在Node);
- 结构特征:图数据中的每个节点具有结构特征,即节点与节点之间存在连接(Graph中的Eadge)。总的来说,Graph数据既要考虑节点信息,又要考虑结构信息。GCN网络可以自动化地学习节点特征,又能学习节点之间的关联信息。
综上,图卷积的核心思想是利用边的信息对节点信息进行聚合从而生成新的节点表示。
GCN的两种理解方式
GCN的本质目的就是用来提取拓扑图的空间特征:
- 基于空间域(Spatial Domain)的GCN;
- 基于频谱域(Spectral Domain)的GCN。
基于spatial domain的gcn可以类比到直接在图片的像素点上进行卷积,而基于spectral domain的gcn类比到对图片的像素点进行傅里叶变换后,再进行卷积。
空间域(Spatial Domain):
基于spatial domain的gcn直接将卷积定义在各个节点的边(连接关系)上,跟传统的cnn更相似一些。比较有代表性的方法有:
- Message Passing Neural Network (MPNN);
- GraphSAGE;
- Diffusion Convolution Neural Networks(DCNN);
- Patchy-SAN.
频谱域(Spectral Domain):
通过Spectral Graph Thesis(图谱理论)来实现拓扑图上的卷积操作。Spectral Graph Thesis通过Graph的Laplacian Matrix的特征值和特征向量来研究Graph的性质。GSP(Graph Signal Processing)定义了graph上的傅里叶变换(Fourier Transformation),进而定义了graph上的卷积。
Laplacian Matrix
对于Graph: G = ( V , E ) G=(V,E) G=(V,E),其Laplacian矩阵: L = D − A L=D-A L=D−A,其中 L L L是Laplacian矩阵, D : d i i = ∑ j A i j D:d_{ii}=\sum_{j}A_{ij} D:dii=∑jAij是节点的度量矩阵, A A A是邻居矩阵。
无向图的拉普拉斯矩阵性质
-
拉普拉斯矩阵是半正定矩阵(最小特征值大于等于0) f T L f ≥ 0 f^TLf\ge0 fTLf≥0:
f T L f = f T D f − f T A f = f T diag ( D ) f − f T A f = ∑ i = 1 n d i f i 2 − ∑ j = 1 n [ ∑ i = 1 n f j ∗ a i j ] f j = ∑ i = 1 n d i f i 2 − ∑ i , j = 1 n f i ∗ f j ∗ a i j = 1 2 [ ∑ i = 1 n d i f i 2 − 2 ∑ i , j = 1 n f i f j a i j + ∑ j = 1 n d j f j 2 ] = 1 2 ∑ i , j = 1 n a i j ( f i − f j ) 2 f^TLf=f^TDf-f^TAf=f^T\text{diag}(D)f-f^TAf\\ =\sum_{i=1}^{n}d_if_i^2-\sum_{j=1}^{n}[\sum_{i=1}^{n}f_j*a_{ij}]f_j=\sum_{i=1}^{n}d_if^2_i-\sum_{i,j=1}^{n}f_i*f_j*a_{ij}\\ =\frac{1}{2}[\sum_{i=1}^{n}d_if_i^2-2\sum_{i,j=1}^{n}f_if_ja_{ij}+\sum_{j=1}^{n}d_jf_j^2]\\ =\frac{1}{2}\sum_{i,j=1}^{n}a_{ij}(f_i-f_j)^2 fTLf=fTDf−fTAf=fTdiag(D)f−fTAf=i=1∑ndifi2−j=1∑n[i=1∑nfj∗aij]fj=i=1∑ndifi2−i,j=1∑nfi∗fj∗aij=21[i=1∑ndifi2−2i,j=1∑nfifjaij+j=1∑ndjfj2]=21i,j=1∑naij(fi−fj)2
所以,对于任意一个向量 f ∈ R n f\in \mathbb R^{n} f∈Rn,都有:
f T L f = 1 2 ∑ i , j = 1 n a i j ( f i − f j ) 2 f^TLf=\frac{1}{2}\sum_{i,j=1}^{n}a_{ij}(f_i-f_j)^2 fTLf=21i,j=1∑naij(fi−fj)2 -
特征值中0出现的次数就是Graph连通区域的个数。
-
最小特征值是0。
拉普拉斯矩阵是对称矩阵,可以进行特征分解(谱分解)。由于卷积在傅里叶域的计算相对简单,为了在graph上做傅里叶变换,需要找到graph的连续的正交基对应于傅里叶变换的基,因此要使用拉普拉斯矩阵的特征向量。
拉普拉斯矩阵的谱分解(特征分解)
特征分解(Eigenvalue Decomposition),又称谱分解(Spectral Decomposition),是将矩阵分解为其特征值和特征向量矩阵之积的方法。
只有可对角化矩阵或有 n n n个线性无关的特征向量的矩阵才可以特征分解。矩阵可以进行特征分解的充要条件是 n n n阶方阵存在 n n n个线性无关的特征向量。由于拉普拉斯矩阵是半正定(半正定矩阵本身就是对称矩阵),有如下三个性质:
- 对称矩阵一定n个线性无关的特征向量
- 半正定矩阵的特征值一定非负
- 对阵矩阵的不同特征值对应的特征向量相互正交,这些正交的特征向量构成的矩阵为正交矩阵。
拉普拉斯矩阵的谱分解:
L
=
U
Λ
U
−
1
=
U
[
λ
1
⋱
λ
n
]
U
−
1
L=U\Lambda U^{-1}=U\left[ \begin{matrix} \lambda_1 & & \\ & \ddots & \\ & & \lambda_n \end{matrix} \right]U^{-1}
L=UΛU−1=U⎣⎡λ1⋱λn⎦⎤U−1
其中
U
=
(
u
⃗
1
,
u
⃗
2
,
…
,
u
⃗
n
)
U=(\vec u_1,\vec u_2,\dots,\vec u_n)
U=(u1,u2,…,un)是正交矩阵,
Λ
\Lambda
Λ是由
n
n
n个特征值构成的对角阵。由于
U
U
T
=
I
UU^T=I
UUT=I,所以
L
=
U
Λ
U
−
1
=
U
Λ
U
T
L=U\Lambda U^{-1}=U\Lambda U^T
L=UΛU−1=UΛUT。
拉普拉斯算子
定义:拉普拉斯算子是
n
n
n维欧几里德空间中的一个二阶微分算子,定义为梯度(
∇
f
\nabla f
∇f)的散度(
∇
⋅
f
\nabla \cdot f
∇⋅f,即
∇
f
⋅
f
\nabla f\cdot f
∇f⋅f)。故如果
f
f
f是二阶可微的实函数,则
f
f
f的拉普拉斯算子
Δ
\Delta
Δ定义为:
Δ
f
=
∇
2
f
=
∇
⋅
∇
f
\Delta f=\nabla^2f=\nabla\cdot\nabla f
Δf=∇2f=∇⋅∇f
f
f
f的拉普拉斯算子也是笛卡尔坐标系
x
i
x_i
xi中所有非混合二阶偏导数:
Δ
f
=
∑
i
=
1
n
∂
2
f
∂
x
i
2
\Delta f=\sum_{i=1}^n\frac{\partial^2f}{\partial x_i^2}
Δf=i=1∑n∂xi2∂2f
函数
f
f
f的拉普拉斯算子,也等于该函数的海森矩阵的迹:
Δ
f
=
trace
(
H
(
f
)
)
\Delta f=\text{trace}(H(f))
Δf=trace(H(f))
卷积
连续形式的一维卷积
两个函数中的一个(取 g ( x ) g(x) g(x),可以任意取)函数,把 g ( x ) g(x) g(x)经过翻转平移,然后与 f ( x ) f(x) f(x)的相乘,得到的一个新的函数,对这个函数积分,也就是对这个新的函数求它所围成的曲边梯形的面积。
设
f
(
t
)
,
g
(
t
)
f(t),g(t)
f(t),g(t)是两个可积函数,
f
(
t
)
f(t)
f(t)与
g
(
t
)
g(t)
g(t)的卷积记为
f
(
t
)
∗
g
(
t
)
f(t)*g(t)
f(t)∗g(t),它是其中一个函数翻转并平移后与另一个函数乘积的积分,是一个自变量是平移量的函数。也就是:
f
(
t
)
∗
g
(
t
)
=
∫
−
∞
+
∞
f
(
τ
)
g
(
t
−
τ
)
d
τ
=
∫
−
∞
+
∞
f
(
t
−
τ
)
g
(
τ
)
d
τ
f(t)*g(t)=\int_{-\infin}^{+\infin}f(\tau)g(t-\tau)d\tau=\int_{-\infin}^{+\infin}f(t-\tau)g(\tau)d\tau
f(t)∗g(t)=∫−∞+∞f(τ)g(t−τ)dτ=∫−∞+∞f(t−τ)g(τ)dτ
离散形式的一维卷积
( f ∗ g ) ( t ) = ∑ τ = − ∞ + ∞ f ( τ ) g ( t − τ ) (f*g)(t)=\sum_{\tau=-\infin}^{+\infin}f(\tau)g(t-\tau) (f∗g)(t)=τ=−∞∑+∞f(τ)g(t−τ)
所谓卷积,其实就是把一个函数卷(翻)过来,然后与另一个函数求内积。
g g g函数既可以看作deep learning中的kernel(核),也可以对应到信号处理中的filter(滤波器)。而 f f f函数是机器学习中的Feature(特征),也可以是信号处理中的Signal。函数 f f f和 g g g的卷积 f ∗ g f*g f∗g就可以看作是对 f f f的加权求和:
傅里叶变换
连续形式的傅里叶变换
任意函数可以分解为奇偶函数之和:
f
(
x
)
=
f
(
x
)
+
f
(
−
x
)
2
+
f
(
x
)
−
f
(
−
x
)
2
=
f
e
v
e
n
+
f
o
d
d
f(x)=\frac{f(x)+f(-x)}{2}+\frac{f(x)-f(-x)}{2}=f_{even}+f_{odd}
f(x)=2f(x)+f(−x)+2f(x)−f(−x)=feven+fodd
任意一个周期函数可以由若干个正交函数(由
s
i
n
sin
sin,
c
o
s
cos
cos构成)的线性组合构成,写出傅里叶级数的形式:
f
(
x
)
=
a
0
+
∑
n
=
1
∞
(
a
n
c
o
s
(
2
π
n
T
x
)
+
b
n
s
i
n
(
2
π
n
T
x
)
)
,
a
0
∈
R
f(x)=a_0+\sum_{n=1}^{\infin}\big (a_ncos(\frac{2\pi n}{T}x)+b_nsin(\frac{2\pi n}{T}x) \big), a_0\in \mathbb R
f(x)=a0+n=1∑∞(ancos(T2πnx)+bnsin(T2πnx)),a0∈R
利用欧拉公式
e
i
x
=
cos
x
+
i
sin
x
e^{ix}=\text{cos}\ x+i\text{sin}\ x
eix=cos x+isin x:
cos
x
=
e
i
x
+
e
−
i
x
2
,
sin
x
=
e
i
x
−
e
−
i
x
2
i
\text{cos}\ x=\frac{e^{ix}+e^{-ix}}{2},\text{sin}\ x=\frac{e^{ix}-e^{-ix}}{2i}
cos x=2eix+e−ix,sin x=2ieix−e−ix
-
在时间轴 t t t上,把 e i t e^{it} eit向量的虚部记录下来,得到 s i n ( t sin\ (t sin (t):
-
实部记录下来,得到 c o s ( t ) cos\ (t) cos (t):
更一般的:
e
i
w
t
⟺
{
sin
(
w
t
)
cos
(
w
t
)
e^{iwt}\Longleftrightarrow \begin{cases} \text{sin}(wt)\\ \text{cos}(wt) \end{cases}
eiwt⟺{sin(wt)cos(wt)
这两种角度,一个可以观察到旋转的频率,所以称为频域;一个可以看到流逝的时间,所以称为时域:
**任意周期函数可以表示为以
e
i
w
t
e^{iwt}
eiwt为基函数,用傅里叶级数的指数形式。**即,对于一个周期函数
f
(
x
)
f(x)
f(x)可以表示为傅里叶级数的指数形式:
f
(
x
)
=
∑
n
=
−
∞
∞
c
n
⏟
基
的
坐
标
⋅
e
i
2
π
n
x
T
⏟
正
交
基
f(x)=\sum_{n=-\infin}^{\infin}\underbrace{c_n}_{基的坐标}\cdot \underbrace{e^{i \frac{2\pi nx}{T}}}_{正交基}
f(x)=n=−∞∑∞基的坐标
cn⋅正交基
eiT2πnx
对于非周期函数:
f
(
x
)
=
∫
−
∞
+
∞
[
∫
−
∞
+
∞
f
(
x
)
e
−
i
w
t
d
x
]
e
i
w
t
d
w
=
∫
−
∞
+
∞
F
(
w
)
e
i
w
t
d
w
f(x)=\int^{+\infin}_{-\infin}\big[\int^{+\infin}_{-\infin}f(x)e^{-iwt}dx\big]e^{iwt}dw=\int^{+\infin}_{-\infin}F(w)e^{iwt}dw
f(x)=∫−∞+∞[∫−∞+∞f(x)e−iwtdx]eiwtdw=∫−∞+∞F(w)eiwtdw
其中**
F
(
w
)
F(w)
F(w)就是
f
(
x
)
f(x)
f(x)的连续形式的傅里叶变换:**
F
(
w
)
=
F
[
f
(
x
)
]
=
∫
−
∞
+
∞
f
(
x
)
e
−
i
w
t
d
x
F(w)=\mathcal F[f(x)]=\int^{+\infin}_{-\infin}f(x)e^{-iwt}dx
F(w)=F[f(x)]=∫−∞+∞f(x)e−iwtdx
由上述公式可以看出,
f
(
x
)
f(x)
f(x)和
F
(
w
)
F(w)
F(w)可以通过指定的积分运算相互表达:
F
(
w
)
=
F
(
f
(
x
)
)
,
f
(
x
)
=
F
−
1
[
F
(
w
)
]
F(w)=\mathcal F(f(x)),f(x)=\mathcal F^{-1}[F(w)]
F(w)=F(f(x)),f(x)=F−1[F(w)]
- F ( ω ) F(ω) F(ω)叫做 f ( x ) f(x) f(x)的象函数或傅里叶变换,即通过傅里叶变换后关于频率的函数,函数图像就是频谱图, w w w就是 f f f对应在频域中的频率;
- f ( x ) f(x) f(x)叫做 F ( w ) F(w) F(w)的原象函数。
其实可以发现这个对信号 f ( x ) f(x) f(x)的傅立叶变换 F ( w ) F(w) F(w)形式上是 f ( x ) f(x) f(x)与基函数 e − i w x e^{−iwx} e−iwx的积分,本质上将函数 f ( x ) f(x) f(x)映射到了以 e − i w x e^{-iwx} e−iwx为基向量的空间中。
频域(Frequency Domain)和时域(Time Domain)的理解
周期性离散傅里叶变换
Graph上的傅里叶变换及卷积
把传统的傅里叶变换以及卷积迁移到Graph上来,核心工作其实就是把拉普拉斯算子的特征函数 e − i w t e^{-iwt} e−iwt变为Graph对应的拉普拉斯矩阵的特征向量。
傅立叶变换与拉普拉斯矩阵的关系:传统傅立叶变换的基,就是拉普拉斯矩阵的一组特征向量。
Graph上的傅里叶变换
Graph上傅里叶变换的矩阵形式
利用矩阵乘法将Graph上的傅里叶变换推广到矩阵形式:
⟮
f
^
(
λ
1
)
f
^
(
λ
2
)
⋮
f
^
(
λ
N
)
⟯
=
⟮
u
1
(
1
)
u
1
(
2
)
…
u
1
(
N
)
u
2
(
1
)
u
2
(
2
)
…
u
2
(
N
)
⋮
⋮
⋱
⋮
u
N
(
1
)
u
N
(
2
)
…
u
N
(
N
)
⟯
⟮
f
(
1
)
f
(
2
)
⋮
f
(
N
)
⟯
\left \lgroup \begin{matrix} \hat f(\lambda_1)\\ \hat f(\lambda_2)\\ \vdots\\ \hat f(\lambda_N) \end{matrix} \right \rgroup= \left \lgroup \begin{matrix} u_1(1)&u_1(2)&\dots&u_1(N)\\ u_2(1)&u_2(2)&\dots&u_2(N)\\ \vdots&\vdots&\ddots&\vdots\\ u_N(1)&u_N(2)&\dots&u_N(N)\\ \end{matrix} \right \rgroup \left \lgroup \begin{matrix} f(1)\\ f(2)\\ \vdots\\ f(N) \end{matrix} \right \rgroup
⎩⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎧f^(λ1)f^(λ2)⋮f^(λN)⎭⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎫=⎩⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎧u1(1)u2(1)⋮uN(1)u1(2)u2(2)⋮uN(2)……⋱…u1(N)u2(N)⋮uN(N)⎭⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎫⎩⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎧f(1)f(2)⋮f(N)⎭⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎫
即
f
f
f在Graph上傅里叶变换的矩阵形式为:
f
^
=
U
T
f
\hat f=U^Tf
f^=UTf
Graph行的傅里叶逆变换的矩阵形式
⟮ f ( 1 ) f ( 2 ) ⋮ f ( N ) ⟯ = ⟮ u 1 ( 1 ) u 2 ( 1 ) … u N ( 1 ) u 1 ( 2 ) u 1 ( 2 ) … u N ( 2 ) ⋮ ⋮ ⋱ ⋮ u 1 ( N ) u 2 ( N ) … u N ( N ) ⟯ ⟮ f ^ ( λ 1 ) f ^ ( λ 2 ) ⋮ f ^ ( λ N ) ⟯ \left \lgroup \begin{matrix} f(1)\\ f(2)\\ \vdots\\ f(N) \end{matrix} \right \rgroup= \left \lgroup \begin{matrix} u_1(1)&u_2(1)&\dots&u_N(1)\\ u_1(2)&u_1(2)&\dots&u_N(2)\\ \vdots&\vdots&\ddots&\vdots\\ u_1(N)&u_2(N)&\dots&u_N(N)\\ \end{matrix} \right \rgroup \left \lgroup \begin{matrix} \hat f(\lambda_1)\\ \hat f(\lambda_2)\\ \vdots\\ \hat f(\lambda_N) \end{matrix} \right \rgroup ⎩⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎧f(1)f(2)⋮f(N)⎭⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎫=⎩⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎧u1(1)u1(2)⋮u1(N)u2(1)u1(2)⋮u2(N)……⋱…uN(1)uN(2)⋮uN(N)⎭⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎫⎩⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎧f^(λ1)f^(λ2)⋮f^(λN)⎭⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎫
即
f
f
f在Graph上的傅里叶逆变换的矩阵形式为:
f
=
U
f
^
f=U\hat f
f=Uf^
Graph上的傅里叶变换到GCN
在上面的基础上,利用卷积定理类比来将卷积运算,推广到Graph上。
卷积定理:函数卷积的傅里叶变换是函数傅立叶变换的乘积,即对于函数
f
f
f与
g
g
g两者的卷积是其函数傅立叶变换乘积的逆变换:
f
∗
g
=
F
−
1
{
F
(
f
)
⋅
F
(
g
)
}
=
F
−
1
{
f
^
⋅
g
^
}
f*g=\mathcal F^{-1}\{\mathcal F(f)\cdot\mathcal F(g)\}=\mathcal F^{-1}\{\hat f\cdot\hat g\}
f∗g=F−1{F(f)⋅F(g)}=F−1{f^⋅g^}
所以对Graph上的
f
f
f和卷积核
g
g
g的卷积操作可以表示为:
(
f
∗
g
)
G
=
U
(
(
U
T
f
)
(
u
T
g
)
)
=
U
T
f
U
g
θ
(f*g)_G=U\big ((U^Tf)(u^Tg)\big)=U^TfU_{g\theta}
(f∗g)G=U((UTf)(uTg))=UTfUgθ
Deep Learning中的GCN:
g θ ∗ x = U g θ U T x = U ⟮ g ^ ( λ 1 ) ⋱ g ^ ( λ n ) ⟯ U T x g_\theta*x=U_{g\theta}U^Tx=U \left\lgroup \begin{matrix} \hat g(\lambda_1)& & \\ &\ddots&\\ & &\hat g(\lambda_n) \end{matrix} \right\rgroup U^Tx gθ∗x=UgθUTx=U⎩⎪⎪⎪⎪⎪⎧g^(λ1)⋱g^(λn)⎭⎪⎪⎪⎪⎪⎫UTx
Deep Learning中的卷积就是要设计含有trainable共享参数的kernel。
上式计算量很大,特征向量矩阵 U U U的复杂度是 O ( N 2 ) O(N^2) O(N2)。此外,对于大型graph来说,拉普拉斯矩阵 L L L特征分解的计算量也很大。
Spectral CNN
简单的说,Spectral CNN把
g
θ
g_\theta
gθ看作是一个可学习参数的集合:
g
θ
=
Θ
i
,
j
k
g_\theta=\Theta^k_{i,j}
gθ=Θi,jk,gcn定义为:
X
:
,
j
k
+
1
=
δ
(
∑
i
=
1
f
k
−
1
U
Θ
i
,
j
k
U
T
X
:
,
j
k
)
X^{k+1}_{:,j}=\delta(\sum^{f_{k-1}}_{i=1}U\Theta^{k}_{i,j}U^TX^k_{:,j})
X:,jk+1=δ(i=1∑fk−1UΘi,jkUTX:,jk)
- X k ∈ R N × f k − 1 X^k\in\mathbb R^{N\times f_{k-1}} Xk∈RN×fk−1是输入,对应Graph上就是节点的输入特征;
- N N N是节点数量;
- f k − 1 f_{k-1} fk−1是输入通道的数量;
- f k f_k fk是输出通道的数量;
- Θ i , j k \Theta^k_{i,j} Θi,jk是一个可学习参数的对角矩阵,初始化赋值后,利用误差反向传播迭代优化;
- δ ( ⋅ ) \delta(\cdot) δ(⋅)是激活函数。
第一代的参数方法存在着一些弊端,主要在于:
- 计算复杂:如果一个样本一个图,那么每个样本都需要进行图的拉普拉斯矩阵的特征分解求 U U U矩阵计算复杂;每一次前向传播,都要计算 U , d i a g ( Θ ℓ ) U,diag(\Theta_\ell) U,diag(Θℓ)及 U T U^T UT 三者的乘积,特别是对于大规模的graph,计算的代价较高,需要 O ( n 2 ) \mathcal{O}(n^2) O(n2)的计算复杂度;
- 是非局部性连接的;
- 卷积核需要N个参数,当图中的节点N很大时是不可取的。
Chebyshev谱CNN
定义特征向量对角矩阵的切比雪夫多项式为滤波器:
g
θ
=
g
θ
(
Λ
)
≈
∑
i
=
0
K
−
1
θ
i
T
k
(
Λ
~
)
g_\theta=g_\theta(\Lambda)\approx\sum^{K-1}_{i=0}\theta_iT_k(\tilde \Lambda)
gθ=gθ(Λ)≈i=0∑K−1θiTk(Λ~)
其实就是利用Chebyshev多项式拟合卷积核的方法,来降低计算复杂度。
推导过程如下:
g
θ
∗
x
=
U
g
θ
U
T
x
g_\theta*x=Ug_\theta U^Tx %\label{eq:chebyshev}
gθ∗x=UgθUTx
其中
-
U U U是对称归一化的拉帕拉斯矩阵 L L L的特征向量矩阵, Λ \Lambda Λ是由 L L L的特征值构成的对角矩阵
L = D − 1 2 ( D − A ) D − 1 2 = I N − D − 1 2 A D − 1 2 = U Λ U T L=D^{-\frac{1}{2}}(D-A)D^{-\frac{1}{2}}=I_N-D^{-\frac{1}{2}}AD^{-\frac{1}{2}}=U\Lambda U^T L=D−21(D−A)D−21=IN−D−21AD−21=UΛUT
因为 L L L是对称矩阵,所以特征向量矩阵 U U U是正交矩阵: U U T = I N UU^T=I_N UUT=IN; -
U T x U^Tx UTx是 x x x的傅里叶变换;
-
g θ = g θ ( Λ ) g_\theta=g_\theta(\Lambda) gθ=gθ(Λ)是由参数 θ \theta θ构成的对角矩阵 diag ( θ ) \text{diag}(\theta) diag(θ)。
公式\eqref{eq:chebyshev}的计算量也很大,因为特征向量矩阵 U U U的复杂度是 O ( N 2 ) O(N^2) O(N2),此外,对于大型graph, L L L特征值分解的计算量也很大。
为解决这个问题,Wavelets on graphs via spectral graph theory提出
g
θ
(
Λ
)
g_\theta(\Lambda)
gθ(Λ)可以很好的通过Chebyshev多项式
T
k
(
x
)
T_k(x)
Tk(x)的
K
t
h
−
Kth-
Kth−阶截断展开来拟合,并对
Λ
\Lambda
Λ进行尺度变换使其元素位于
[
−
1
,
1
]
[-1,1]
[−1,1]:
g
θ
(
Λ
)
≈
∑
k
=
0
K
θ
k
T
K
(
Λ
~
)
g_\theta(\Lambda)\approx\sum^{K}_{k=0}\theta_kT_K(\tilde\Lambda) %\label{eq:cheby0}
gθ(Λ)≈k=0∑KθkTK(Λ~)
其中
- Λ ~ = 2 Λ λ m a x − I N \tilde\Lambda=2\frac{\Lambda}{\lambda_{max}}-I_N Λ~=2λmaxΛ−IN为缩放后的特征向量矩阵,缩放的目的是为了满足Chebyshev多项式 T k ( x ) T_k(x) Tk(x)的 K t h K^{th} Kth阶截断展开条件:自变量范围要在 [ − 1 , 1 ] [-1,1] [−1,1]之间;
- λ m a x \lambda_{max} λmax是 L L L的最大特征值,也叫谱半径;
- θ ∈ R K \theta\in \mathbb R^K θ∈RK是切比雪夫系数的向量;
- Chebyshev多项式递归定义为: T k ( x ) = 2 x T k − 1 − T k − 2 ( x ) T_k(x)=2xT_{k-1}-T_{k-2}(x) Tk(x)=2xTk−1−Tk−2(x),其中 T 0 ( x ) = 1 , T 1 ( x ) = x T_0(x)=1,T_1(x)=x T0(x)=1,T1(x)=x。
则Chebyshev在graph上卷积:
g
θ
∗
x
=
∑
k
=
0
K
θ
k
T
K
(
L
~
)
x
g_\theta*x=\sum^K_{k=0}\theta_kT_K(\tilde L)x %\label{eq:cheb}
gθ∗x=k=0∑KθkTK(L~)x
其中
- L ~ = 2 L λ m a x − I N = U Λ ~ U T \tilde L=2\frac{L}{\lambda_{max}}-I_N=U\tilde \Lambda U^T L~=2λmaxL−IN=UΛ~UT;
- ( U Λ U T ) k = U Λ k U T (U\Lambda U^T)^k=U\Lambda^kU^T (UΛUT)k=UΛkUT。
现在,相比于第一种Spectral CNN:
- 此表达式现在是
K
−
l
o
c
a
l
i
z
e
d
K-localized
K−localized,具有局部连接性,因为它是拉普拉斯算子中的
K
t
h
Kth
Kth-阶多项式,即它仅取决于离中央节点(
K
t
h
Kth
Kth阶邻域)最大
K
K
K步的节点
T K ( L ~ ) x T_K(\tilde L)x TK(L~)x的复杂度是 O ( ∣ E ∣ ) O(|E|) O(∣E∣),即与边数 E E E呈线性关系,整个运算的复杂度是 O ( K ∣ E ∣ ) O(K|E|) O(K∣E∣)。当graph是稀疏图的时候,计算加速尤为明显,这个时候复杂度远低于 O ( n 2 ) O(n^2) O(n2)。
公式\eqref{eq:cheby0}公式\eqref{eq:cheb}的证明:
-
先用数学归纳法证明:
U T k ( Λ ~ ) U T = T k ( U Λ ~ U T ) UT_k(\tilde\Lambda)U^T=T_k(U\tilde\Lambda U^T) UTk(Λ~)UT=Tk(UΛ~UT)
证明:
由切比雪夫多项式的定义,已知:
U T 0 ( Λ ~ ) U T = U U T = 1 = T 0 ( U Λ ~ U T ) UT_0(\tilde\Lambda)U^T=UU^T=1=T_0(U\tilde\Lambda U^T) UT0(Λ~)UT=UUT=1=T0(UΛ~UT)
U T 1 ( Λ ~ ) U T = U Λ ~ U T = T 1 ( U Λ ~ U T ) UT_1(\tilde\Lambda)U^T=U\tilde\Lambda U^T=T_1(U\tilde\Lambda U^T) UT1(Λ~)UT=UΛ~UT=T1(UΛ~UT)
假设对于任意 k > 0 k>0 k>0,满足:
U T k − 2 ( Λ ~ ) U T = T k − 2 ( U Λ ~ U T ) UT_{k-2}(\tilde\Lambda)U^T=T_{k-2}(U\tilde\Lambda U^T) UTk−2(Λ~)UT=Tk−2(UΛ~UT)
U T k − 1 ( Λ ~ ) U T = T k − 1 ( U Λ ~ U T ) UT_{k-1}(\tilde\Lambda)U^T=T_{k-1}(U\tilde\Lambda U^T) UTk−1(Λ~)UT=Tk−1(UΛ~UT)
则:
U T k ( Λ ~ ) U T = 2 U Λ ~ T k − 1 ( Λ ~ ) U T − U T k − 2 ( Λ ~ ) U T = 2 ( U Λ ~ U T ) [ U T k − 1 ( Λ ~ ) U T ] − U T k − 2 ( U Λ ~ U T ) = T k ( U Λ ~ U T ) \begin{aligned} UT_k(\tilde\Lambda)U^T&=2U\tilde\Lambda T_{k-1}(\tilde\Lambda)U^T-UT_{k-2}(\tilde\Lambda)U^T\\ &=2(U\tilde\Lambda U^T)\big[UT_{k-1}(\tilde\Lambda)U^T\big]-UT_{k-2}(U\tilde\Lambda U^T)\\ &=T_k(U\tilde\Lambda U^T) \end{aligned} UTk(Λ~)UT=2UΛ~Tk−1(Λ~)UT−UTk−2(Λ~)UT=2(UΛ~UT)[UTk−1(Λ~)UT]−UTk−2(UΛ~UT)=Tk(UΛ~UT)
证毕。 -
已知 L ~ = U Λ ~ U T \tilde L=U\tilde\Lambda U^T L~=UΛ~UT
g θ ∗ x = U g θ U T x = U g θ ( Λ ) U T x = U ( ∑ k − 0 K θ k T K ( U Λ ~ U T ) ) U T x = ∑ k = 0 K θ k T K ( L ~ ) x \begin{aligned} g_\theta*x&=Ug_\theta U^Tx=Ug_\theta(\Lambda)U^Tx\\ &=U\big(\sum^K_{k-0}\theta_kT_K(U\tilde\Lambda U^T)\big)U^Tx\\ &=\sum^K_{k=0}\theta_kT_K(\tilde L)x \end{aligned} gθ∗x=UgθUTx=Ugθ(Λ)UTx=U(k−0∑KθkTK(UΛ~UT))UTx=k=0∑KθkTK(L~)x
CayleyNet
CayleyNet进一步应用了参数有理符合函数的Cayley多项式来捕获狭窄的频带,其谱图卷积定义为:
x ∗ g θ = c 0 x + 2 Re ⟮ ∑ j = 1 r c j ( h L − i I ) j ( h L + i I ) − j x ⟯ x*g_\theta=c_0x+2\text{Re}\lgroup\sum^r_{j=1}c_j(hL-iI)^j(hL+iI)^{-j}x\rgroup x∗gθ=c0x+2Re⟮j=1∑rcj(hL−iI)j(hL+iI)−jx⟯
1 s t 1st 1stChebNet-GCN
Semi-supervised classification with graph convolutional networks,nips17是GCN的开山之作:
- 作者对于直接操作于图结构数据的网络模型,根据频谱图卷积(Hammond等人于2011年提出的Wavelets on graphs via spectral graph theory),使用一阶近似简化计算的方法,提出了一种简单有效的层式传播方法。
- 作者验证了图结构神经网络模型可用于快速可扩展式的处理图数据中节点半监督分类问题,作者通过在一些公有数据集上验证了自己的方法的效率和准确率能够媲美现有的顶级半监督方法。
Kipf等人引入了一种一阶近似ChebNet,假设
K
=
1
,
λ
m
a
x
=
2
K=1,\lambda_{max}=2
K=1,λmax=2,则ChebNet卷积公式简化为:
x
∗
g
θ
=
θ
0
x
−
θ
1
D
−
1
2
A
D
−
1
2
x*g_\theta=\theta_0x-\theta_1D^{-\frac{1}{2}}AD^{-\frac{1}{2}}
x∗gθ=θ0x−θ1D−21AD−21
为防止过拟合,
1
s
t
1st
1stChebNet假设
θ
=
θ
0
=
−
θ
1
\theta=\theta_0=-\theta_1
θ=θ0=−θ1:
g
θ
∗
x
=
θ
(
I
N
+
D
−
1
2
A
D
−
1
2
)
x
g_\theta*x=\theta(I_N+D^{-\frac{1}{2}}AD^{-\frac{1}{2}})x
gθ∗x=θ(IN+D−21AD−21)x
其中
-
I N + D − 1 2 A D − 1 2 I_N+D^{-\frac{1}{2}}AD^{-\frac{1}{2}} IN+D−21AD−21由在 [ 0 , 2 ] [0,2] [0,2]范围内的特征值,如果在dnn中反复使用该计算方式,会导致数值不问题,进而引起梯度发散和梯度爆炸/消失等,为解决该问题,ChebNet引入了一个re-normalization trick:
I N + D − 1 2 A D − 1 2 ⟶ A ~ = A + I N D ~ − 1 2 A ~ D ~ − 1 2 I_N+D^{-\frac{1}{2}}AD^{-\frac{1}{2}}\stackrel{\tilde A=A+I_N}\longrightarrow \tilde D^{-\frac{1}{2}}\tilde A\tilde D^{-\frac{1}{2}} IN+D−21AD−21⟶A~=A+IND~−21A~D~−21
-
A ~ = A + I N , D ~ i i = ∑ j A ~ i j \tilde A=A+I_N,\tilde D_{ii}=\sum_{j}\tilde A_{ij} A~=A+IN,D~ii=∑jA~ij,即graph中加上自环。再加上一个激活函数,即得到ChebNet的快速卷积公式:
KaTeX parse error: Undefined control sequence: \label at position 106: …(l)}W^{(l)}) \̲l̲a̲b̲e̲l̲{eq:chebnet}
将定义KaTeX parse error: Undefined control sequence: \eqref at position 1: \̲e̲q̲r̲e̲f̲{eq:chebnet}推广到具有
C
C
C个输入通道(即每个节点为
C
C
C维特征向量)的信号
X
∈
R
N
×
C
X\in\mathbb R^{N\times C}
X∈RN×C和
F
F
F个滤波器:
Z
=
D
~
−
1
2
A
~
D
~
−
1
2
X
Θ
Z=\tilde D^{-\frac{1}{2}}\tilde A\tilde D^{-\frac{1}{2}}X\Theta
Z=D~−21A~D~−21XΘ
其中:
- Θ ∈ R N × F \Theta\in\mathbb R^{N\times F} Θ∈RN×F是一个filter的参数矩阵,实际上就是 W W W;
- Z ∈ R N × F Z\in\mathbb R^{N\times F} Z∈RN×F是卷积的输出。
带一阶滤波器的多层GCN结构如下:
Input:Feature matrix X ∈ R N × D X \in \mathbb{R}^{N \times D} X∈RN×D, preprocessed adjacency matrix A ~ \tilde A A~
实验
使用一个俱乐部会员的关系网络,使用随机初始化的GCN抽取特征,得到各个节点的embedding,可视化如下如:
经过GCN提取出的特征,已经自动聚类:
在semi-supervised设定下,只提供一个样本标签:
总结
-
GCN的优点
- **权值共享,参数共享:**从 A X W AXW AXW可以看出每个节点的参数矩阵都是 W W W;
- **局部连接:**每次聚合的只是一阶邻居;
- **感受野正比于卷积层层数:**第一层的节点只包含与直接相邻节点有关的信息,第二层以后,每个节点还包含相邻节点的相邻节点的信息,这样的话,参与运算的信息就会变多。层数越多,感受野越大,参与运算的信息量越充分。也就是说随着卷积层的增加,从远处邻居的信息也会逐渐聚集过来。
- 复杂度大大降低,不用再计算拉普拉斯矩阵,特征分解。
-
不足:
-
**扩展性差:**由于训练时需要需要知道关于训练节点、测试节点在内的所有节点的邻接矩阵AAA,因此是transductive的,不能处理大图,然而工程实践中几乎面临的都是大图问题,因此在扩展性问题上局限很大,为了解决transductive的的问题,GraphSAGE:Inductive Representation Learning on Large Graphs被提出;
-
**局限于浅层:**GCN论文中表明,目前GCN只局限于浅层,实验中使用2层GCN效果最好。为了加深,需要使用残差连接等trick,但是即使使用了这些trick,也只能勉强保存性能不下降,并没有提高。
Deeper Insights into Graph Convolutional Networks for Semi-Supervised Learning一文也针对When GCNs Fail ?这个问题进行了分析。
论文:DeepGCNs-Can GCNs Go as Deep as CNNs?就是解决GCN局限于浅层的这个问题的,但个人觉得并没有解决实质性的问题,这方面还有值得研究的空间。
-
GCN的改进
邻接矩阵 A A A:
Adaptive Graph Convolution Network (AGCN)
自适应GCN(AGCN, AAAI18)利用残差图来扩充图。残差图是通过计算节点对的距离来构造,计算量为 O ( N 2 ) O(N^2) O(N2)。自适应图卷积网络(AGCN)通过图的邻接矩阵学习未知的隐藏结构关系。它通过一个以两个节点的特征为输入的可学习的距离函数来构造一个所谓的残差图邻接矩阵。
Dual Graph Convolutional Network(DGCN)
对偶图卷积网络(DGCN)引入了一种对偶图卷积结构,该结构具有两个并行的图卷积层。虽然这些对偶层共享参数,他们使用归一化了的邻接矩阵 A A A,和归一化了的节点态互信息(PPMI)的共生矩阵提取节点随机游走。DGCN通过对偶图卷积层的集成输出,无需叠加多个图卷积层即可捕获局部和全局结构信息。
Spatial Domain GCN
Neural Network for Graphs (NN4G)
**NN4G是第一个基于Spatial Domain的ConvGNNs,**通过直接聚合节点的邻域信息来实现Graph的卷积。此外,还应用剩余链接和跳跃连接来记忆每一层的信息:
KaTeX parse error: Undefined control sequence: \label at position 121: …^{(k-1)}\Bigg) \̲l̲a̲b̲e̲l̲{eq:nn4g}
- f ( ⋅ ) f(\cdot) f(⋅)是激活函数;
- h v ( 0 ) = 0 \bf h^{(0)}_v=0 hv(0)=0。
公式KaTeX parse error: Undefined control sequence: \eqref at position 1: \̲e̲q̲r̲e̲f̲{eq:nn4g}写成矩阵形式:
H
(
k
)
=
f
(
X
W
(
k
−
1
)
+
∑
i
=
1
k
−
1
A
H
(
k
−
)
Θ
(
k
−
1
)
)
\bf H^{(k)}=f\Bigg(\bf X \bf W^{(k-1)}+\sum^{k-1}_{i=1}\bf A \bf H^{(k-)}\Theta^{(k-1)}\Bigg)
H(k)=f(XW(k−1)+i=1∑k−1AH(k−)Θ(k−1))
Diffusion Convolutional Neural Network (DCNN)扩散卷积神经网络
DCNN将图卷积看作一个扩散过程,假设信息以一定的转移概率,从一个节点转移到相邻的一个节点,使信息分布在几轮后达到均衡。DCNN将扩散图卷积定义为:
H
(
k
)
=
f
(
w
(
k
)
⊙
P
(
k
)
X
)
\bf H^{(k)}=f\Big(\bf w^{(k)}\odot\bf P^{(k)}\bf X\Big)
H(k)=f(w(k)⊙P(k)X)
- 概率转移矩阵 P = D − 1 A ∈ R n × n \bf P=\bf D^{-1}\bf A\in \mathbb R^{n\times n} P=D−1A∈Rn×n;
- 在DCNN中,隐式表示矩阵KaTeX parse error: Can't use function '\H' in math mode at position 1: \̲H̲^{(k)}和输入矩阵KaTeX parse error: Undefined control sequence: \X at position 1: \̲X̲具有相同的维度,不是前一层隐式表示矩阵KaTeX parse error: Can't use function '\H' in math mode at position 1: \̲H̲^{(k-1)}的函数;
- DCNN将 H ( 1 ) , H ( 2 ) , … , H ( k ) \bf{H^{(1)},H^{(2)},\dots,H^{(k)}} H(1),H(2),…,H(k)连接起来为模型的最终输出。
**扩散图卷积:**DCNN扩散过程的平稳分布,是概率转移矩阵的幂级数的总和。因此扩散图卷积(Diffusion Graph Convolution, DGC)将每个扩散步骤的输出相加,而不是拼接。它定义扩散图卷积为:
H
=
∑
k
=
0
k
f
(
P
k
X
W
(
k
)
)
\bf H=\sum^{k}_{k=0}f\bigg(\bf{P^kXW^{(k)}}\bigg)
H=k=0∑kf(PkXW(k))
GraphSAGE
GraphSage(Inductive representation learning on large graphs,NIPS 2017)引入聚合函数的概念定义图形卷积。聚合函数本质上是聚合节点的邻域信息,需要满足对节点顺序的排列保持不变,例如均值函数,求和函数,最大值函数都对节点的顺序没有要求。图的卷积运算定义为:
h
v
(
k
)
=
δ
(
W
(
k
)
⋅
f
k
(
h
v
(
k
−
1
)
,
{
h
u
(
k
−
1
)
,
∀
u
∈
S
N
(
v
)
}
)
)
\bf h^{(k)}_v=\delta\bigg(\bf W^{(k)}\cdot f_k\bigg(\bf h^{(k-1)}_v,\big\{h^{(k-1)}_u,\forall u\in S_{\mathcal N(v)} \big\} \bigg) \bigg) %\label{eq:graphsage}
hv(k)=δ(W(k)⋅fk(hv(k−1),{hu(k−1),∀u∈SN(v)}))
- h v ( 0 ) = x v \bf h^{(0)}_v=\bf x_v hv(0)=xv;
- f k ( ⋅ ) f_k(\cdot) fk(⋅)是聚合函数,不受节点排序的影响(如均值,求和或最大值);
- S N ( v ) S_{\mathcal N_{(v)}} SN(v)表示节点 v v v的邻居节点,的随机采样。
**通常GCN这样的训练函数需要将整个图数据和所有节点中间状态保存到内存中。特别是当一个图包含数百万个节点时,针对ConvGNNs的full-batch训练算法受到内存溢出问题的严重影响。为了节省内存,GraphSage提出了一种batch训练算法。它将节点看作一棵树的根节点,然后通过递归地进行K步邻域扩展,扩展时保持采样大小固定不变。对于每一棵采样树,GraphSage通过从下到上的层次聚集隐含节点表示来计算根节点的隐含表示。**首先,对一个节点的 k − h o p k-hop k−hop邻居节点采样;然后通过聚合其邻居节点的信息,来更新中心节点的最终状态;最后利用中心节点的最终状态计算误差,反向传播更新网络。
Graph Attention Network (GAT)图注意力网络
GAT在聚合邻居节点信息时,使用注意力机制确定每个邻居节点对中心节点的重要性,即权重:
h
v
(
0
)
=
δ
(
∑
u
∈
N
(
v
)
∪
v
α
v
u
W
(
k
−
1
)
h
u
(
k
−
1
)
)
\bf h^{(0)}_v=\delta\bigg(\sum_{u\in\mathcal N(v)\cup v}\alpha_{vu}\bf W^{(k-1)}\bf h^{(k-1)}_u \bigg)
hv(0)=δ(u∈N(v)∪v∑αvuW(k−1)hu(k−1))
其中
-
h v ( 0 ) = x v \bf h^{(0)}_v=\bf x_v hv(0)=xv;
-
α v u \alpha_{vu} αvu表示节点 v v v与其邻居节点 u u u之间连接的权重:
α v u = softmax ( g ( a T [ W ( k − 1 ) h v ∥ W ( k − 1 h u ∥ ] ) ) \alpha_{vu}=\text{softmax}\bigg(g\bigg(\bf a^T\bigg[\bf W^{(k-1)}\bf h_v\|\bf W^{(k-1}\bf h_u\| \bigg] \bigg) \bigg) αvu=softmax(g(aT[W(k−1)hv∥W(k−1hu∥]))
-
g ( ⋅ ) g(\cdot) g(⋅)是LeakReLU激活函数;
-
a \bf a a是一个科学系的参数向量。
Softmax函数可以保证节点 v v v的所有邻居节点的注意力权值之和为1。GAT使用了multi-head注意力方式,并以concat方式对不同注意力节点进行整合,提高了模型的表达能力,在节点分类任务上比GraphSAGE有了明显的提升。
上图展示了GCN和GAN在聚合邻居节点信息时候的不同。
- 图(a)是GCN(Semi-supervised classification with graph convolutional networks)在聚合过程中,给节点 v i v_i vi的邻居节点 v j v_j vj分配了一个非参数的权重 a i j = 1 d e g ( v i ) d e g ( v j ) a_{ij}=\frac{1}{\sqrt{deg(v_i)}deg(v_j)} aij=deg(vi)deg(vj)1;
- 图(b)为GAT通过端到端的神经网络结构隐式地捕获权重 a i j a_{ij} aij,从而实现,重要性越高的邻居节点,有更大的权重。
GCN相关数据集
Spatial Domain GCN
信息传递机制:从邻居节点中聚集信息,用来更新中心节。如下图所示:红色节点 s 1 s1 s1的邻居节点是蓝色 B 1 , B 2 , B 3 B1,B2,B3 B1,B2,B3。通过一定的信息传递机制,将信息聚合到红色节点上。
加入一个线性变换矩阵
W
W
W,作为聚合邻居节点的转换矩阵:
∑
u
∈
N
(
v
)
H
(
l
)
(
u
)
W
(
l
)
\sum_{u\in\mathcal N(v)}\bf H^{(l)}(u)\bf W^{(l)}
u∈N(v)∑H(l)(u)W(l)
写成矩阵形式有:
H
(
l
+
1
)
=
(
H
(
l
)
,
A
)
=
δ
(
A
H
(
l
)
W
(
l
)
)
\bf H^{(l+1)}=(\bf H^{(l)},\bf A)=\delta(\bf{AH^{(l)}W^{(l)}})
H(l+1)=(H(l),A)=δ(AH(l)W(l))
上式中
H
(
l
)
W
(
l
)
\bf{H^{(l)}W^{(l)}}
H(l)W(l)乘以邻接矩阵
A
\bf A
A,本质上是选择一阶邻居节点,以实现信息传递。信息聚合时考虑中心节点本身的信息,可以在图中加入一个自环:
A
~
=
A
+
I
N
D
i
i
~
=
∑
j
A
~
i
j
\tilde{\bf A}=\bf{A+I_N}\\ \tilde{\bf D_{ii}}=\sum_{j}\tilde{\bf A}_{ij}
A~=A+INDii~=j∑A~ij
标准化邻接矩阵
A
\bf A
A使得每行之和为1:
A
~
=
D
~
−
1
A
~
\tilde{\bf A}=\tilde{\bf D}^{-1}\tilde{\bf A}
A~=D~−1A~
举例说明:
A
=
{
0
1
0
0
1
0
1
0
1
0
1
0
0
1
0
1
0
0
0
0
1
0
1
1
1
1
0
1
0
0
0
0
0
1
0
0
}
,
D
=
{
2
0
0
0
0
0
0
3
0
0
0
0
0
0
2
0
0
0
0
0
0
3
0
0
0
0
0
0
3
0
0
0
0
0
0
1
}
A
~
=
A
+
I
N
=
{
1
1
0
0
1
0
1
1
1
0
1
0
0
1
1
1
0
0
0
0
1
1
1
1
1
1
0
1
1
0
0
0
0
1
0
1
}
,
\bf A=\left\{ \begin{matrix} 0&1&0&0&1&0\\ 1&0&1&0&1&0\\ 0&1&0&1&0&0\\ 0&0&1&0&1&1\\ 1&1&0&1&0&0\\ 0&0&0&1&0&0 \end{matrix} \right\}, \bf D=\left\{ \begin{matrix} 2&0&0&0&0&0\\ 0&3&0&0&0&0\\ 0&0&2&0&0&0\\ 0&0&0&3&0&0\\ 0&0&0&0&3&0\\ 0&0&0&0&0&1 \end{matrix} \right\} \tilde{\bf A}=\bf A+\bf I_N=\left\{ \begin{matrix} 1&1&0&0&1&0\\ 1&1&1&0&1&0\\ 0&1&1&1&0&0\\ 0&0&1&1&1&1\\ 1&1&0&1&1&0\\ 0&0&0&1&0&1 \end{matrix} \right\},
A=⎩⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎧010010101010010100001011110100000100⎭⎪⎪⎪⎪⎪⎪⎬⎪⎪⎪⎪⎪⎪⎫,D=⎩⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎧200000030000002000000300000030000001⎭⎪⎪⎪⎪⎪⎪⎬⎪⎪⎪⎪⎪⎪⎫A~=A+IN=⎩⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎧110010111010011100001111110110000101⎭⎪⎪⎪⎪⎪⎪⎬⎪⎪⎪⎪⎪⎪⎫,
D
~
=
∑
j
A
~
i
j
=
D
+
I
N
=
{
3
0
0
0
0
0
0
4
0
0
0
0
0
0
3
0
0
0
0
0
0
4
0
0
0
0
0
0
4
0
0
0
0
0
0
2
}
\tilde{\bf D}=\sum_{j}\tilde{\bf A}_{ij}=\bf {D+I_N}=\left\{ \begin{matrix} 3&0&0&0&0&0\\ 0&4&0&0&0&0\\ 0&0&3&0&0&0\\ 0&0&0&4&0&0\\ 0&0&0&0&4&0\\ 0&0&0&0&0&2 \end{matrix} \right\}
D~=j∑A~ij=D+IN=⎩⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎧300000040000003000000400000040000002⎭⎪⎪⎪⎪⎪⎪⎬⎪⎪⎪⎪⎪⎪⎫
归一化后:
D
~
−
1
A
~
=
{
1
/
3
0
0
0
0
0
0
1
/
4
0
0
0
0
0
0
1
/
3
0
0
0
0
0
0
1
/
4
0
0
0
0
0
0
1
/
4
0
0
0
0
0
0
1
/
2
}
⋅
{
1
1
0
0
1
0
1
1
1
0
1
0
0
1
1
1
0
0
0
0
1
1
1
1
1
1
0
1
1
0
0
0
0
1
0
1
}
\tilde{\bf D}^{-1}\tilde{\bf A}=\left\{ \begin{matrix} 1/3&0&0&0&0&0\\ 0&1/4&0&0&0&0\\ 0&0&1/3&0&0&0\\ 0&0&0&1/4&0&0\\ 0&0&0&0&1/4&0\\ 0&0&0&0&0&1/2 \end{matrix} \right\}\cdot \left\{ \begin{matrix} 1&1&0&0&1&0\\ 1&1&1&0&1&0\\ 0&1&1&1&0&0\\ 0&0&1&1&1&1\\ 1&1&0&1&1&0\\ 0&0&0&1&0&1 \end{matrix} \right\}
D~−1A~=⎩⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎧1/30000001/40000001/30000001/40000001/40000001/2⎭⎪⎪⎪⎪⎪⎪⎬⎪⎪⎪⎪⎪⎪⎫⋅⎩⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎧110010111010011100001111110110000101⎭⎪⎪⎪⎪⎪⎪⎬⎪⎪⎪⎪⎪⎪⎫
=
{
1
/
3
1
/
3
0
0
1
/
3
0
1
/
4
1
/
4
1
/
4
0
1
/
4
0
0
1
/
3
1
/
3
1
/
3
0
0
0
0
1
/
4
1
/
4
1
/
4
1
/
4
1
/
4
1
/
4
0
1
/
4
1
/
4
0
0
0
0
1
/
2
0
1
/
2
}
= \left\{ \begin{matrix} 1/3&1/3&0&0&1/3&0\\ 1/4&1/4&1/4&0&1/4&0\\ 0&1/3&1/3&1/3&0&0\\ 0&0&1/4&1/4&1/4&1/4\\ 1/4&1/4&0&1/4&1/4&0\\ 0&0&0&1/2&0&1/2 \end{matrix} \right\}
=⎩⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎧1/31/4001/401/31/41/301/4001/41/31/400001/31/41/41/21/31/401/41/400001/401/2⎭⎪⎪⎪⎪⎪⎪⎬⎪⎪⎪⎪⎪⎪⎫
上式对邻接矩阵进行了标准化
D
~
−
1
A
~
\tilde{\bf D}^{-1}\tilde{\bf A}
D~−1A~,称之为random walk normalization。在实际应用中,经常使用的re-normalization:
A
~
=
D
~
−
1
/
2
A
D
~
−
1
/
2
\tilde{\bf A}=\tilde{\bf D}^{-1/2}\tilde{\bf A\bf D}^{-1/2}
A~=D~−1/2AD~−1/2
D ~ − 1 / 2 = { 1 3 0 0 0 0 0 0 1 4 0 0 0 0 0 0 1 3 0 0 0 0 0 0 1 4 0 0 0 0 0 0 1 4 0 0 0 0 0 0 1 2 } A ~ = D ~ − 1 / 2 A D ~ − 1 / 2 = { 1 3 0 0 0 0 0 0 1 4 0 0 0 0 0 0 1 3 0 0 0 0 0 0 1 4 0 0 0 0 0 0 1 4 0 0 0 0 0 0 1 2 } ⋅ { 1 1 0 0 1 0 1 1 1 0 1 0 0 1 1 1 0 0 0 0 1 1 1 1 1 1 0 1 1 0 0 0 0 1 0 1 } ⋅ { 1 3 0 0 0 0 0 0 1 4 0 0 0 0 0 0 1 3 0 0 0 0 0 0 1 4 0 0 0 0 0 0 1 4 0 0 0 0 0 0 1 2 } = { 1 9 1 12 0 0 1 12 0 1 12 1 16 1 12 0 1 16 0 0 1 12 1 9 1 12 0 0 0 0 1 12 1 16 1 16 1 8 1 12 1 16 0 1 16 1 16 0 0 0 0 1 8 0 1 4 } \tilde{\bf D}^{-1/2}=\left\{ \begin{matrix} \frac{1}{\sqrt{3}}&0&0&0&0&0\\ 0&\frac{1}{\sqrt{4}}&0&0&0&0\\ 0&0&\frac{1}{\sqrt{3}}&0&0&0\\ 0&0&0&\frac{1}{\sqrt{4}}&0&0\\ 0&0&0&0&\frac{1}{\sqrt{4}}&0\\ 0&0&0&0&0&\frac{1}{\sqrt{2}} \end{matrix} \right\}\\ \tilde{\bf A}=\tilde{\bf D}^{-1/2}\tilde{\bf A\bf D}^{-1/2}=\left\{ \begin{matrix} \frac{1}{\sqrt{3}}&0&0&0&0&0\\ 0&\frac{1}{\sqrt{4}}&0&0&0&0\\ 0&0&\frac{1}{\sqrt{3}}&0&0&0\\ 0&0&0&\frac{1}{\sqrt{4}}&0&0\\ 0&0&0&0&\frac{1}{\sqrt{4}}&0\\ 0&0&0&0&0&\frac{1}{\sqrt{2}} \end{matrix} \right\}\cdot \left\{ \begin{matrix} 1&1&0&0&1&0\\ 1&1&1&0&1&0\\ 0&1&1&1&0&0\\ 0&0&1&1&1&1\\ 1&1&0&1&1&0\\ 0&0&0&1&0&1 \end{matrix} \right\} \cdot \left\{ \begin{matrix} \frac{1}{\sqrt{3}}&0&0&0&0&0\\ 0&\frac{1}{\sqrt{4}}&0&0&0&0\\ 0&0&\frac{1}{\sqrt{3}}&0&0&0\\ 0&0&0&\frac{1}{\sqrt{4}}&0&0\\ 0&0&0&0&\frac{1}{\sqrt{4}}&0\\ 0&0&0&0&0&\frac{1}{\sqrt{2}} \end{matrix} \right\}\\ =\left\{ \begin{matrix} \frac{1}{\sqrt{9}}&\frac{1}{\sqrt{12}}&0&0&\frac{1}{\sqrt{12}}&0\\ \frac{1}{\sqrt{12}}&\frac{1}{\sqrt{16}}&\frac{1}{\sqrt{12}}&0&\frac{1}{\sqrt{16}}&0\\ 0&\frac{1}{\sqrt{12}}&\frac{1}{\sqrt{9}}&\frac{1}{\sqrt{12}}&0&0\\ 0&0&\frac{1}{\sqrt{12}}&\frac{1}{\sqrt{16}}&\frac{1}{\sqrt{16}}&\frac{1}{\sqrt{8}}\\ \frac{1}{\sqrt{12}}&\frac{1}{\sqrt{16}}&0&\frac{1}{\sqrt{16}}&\frac{1}{\sqrt{16}}&0\\ 0&0&0&\frac{1}{\sqrt{8}}&0&\frac{1}{\sqrt{4}} \end{matrix} \right\} D~−1/2=⎩⎪⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎪⎧310000004100000031000000410000004100000021⎭⎪⎪⎪⎪⎪⎪⎪⎬⎪⎪⎪⎪⎪⎪⎪⎫A~=D~−1/2AD~−1/2=⎩⎪⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎪⎧310000004100000031000000410000004100000021⎭⎪⎪⎪⎪⎪⎪⎪⎬⎪⎪⎪⎪⎪⎪⎪⎫⋅⎩⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎧110010111010011100001111110110000101⎭⎪⎪⎪⎪⎪⎪⎬⎪⎪⎪⎪⎪⎪⎫⋅⎩⎪⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎪⎧310000004100000031000000410000004100000021⎭⎪⎪⎪⎪⎪⎪⎪⎬⎪⎪⎪⎪⎪⎪⎪⎫=⎩⎪⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎪⎧91121001210121161121016100121911210000121161161811211610161161000081041⎭⎪⎪⎪⎪⎪⎪⎪⎬⎪⎪⎪⎪⎪⎪⎪⎫
r
e
−
n
o
r
m
a
l
i
z
a
t
i
o
n
re-normalization
re−normalization后有:
L
s
y
m
:
=
D
−
1
/
2
L
D
−
1
/
2
=
D
−
1
/
2
(
D
−
A
)
D
−
1
/
2
=
I
N
−
D
−
1
/
2
A
D
−
1
/
2
\bf L^{sym}:=\bf{D^{-1/2}LD^{-1/2}}=\bf{D^{-1/2}(D-A)D^{-1/2}}=\bf{I_N-D^{-1/2}AD^{-1/2}}
Lsym:=D−1/2LD−1/2=D−1/2(D−A)D−1/2=IN−D−1/2AD−1/2
邻接矩阵添加自环后:
H
(
l
+
1
)
=
f
(
H
l
,
A
)
=
δ
(
D
~
−
1
/
2
A
~
D
~
−
1
/
2
H
(
l
)
W
(
l
)
)
}
=
{
1
9
1
12
0
0
1
12
0
1
12
1
16
1
12
0
1
16
0
0
1
12
1
9
1
12
0
0
0
0
1
12
1
16
1
16
1
8
1
12
1
16
0
1
16
1
16
0
0
0
0
1
8
0
1
4
}
\bf{H^{(l+1)}}=f(\bf{H^{l},A})=\delta\bigg(\bf{\tilde D^{-1/2}\tilde A\tilde D^{-1/2}H^{(l)}W^{(l)}} \bigg) \}\\ =\left\{ \begin{matrix} \frac{1}{\sqrt{9}}&\frac{1}{\sqrt{12}}&0&0&\frac{1}{\sqrt{12}}&0\\ \frac{1}{\sqrt{12}}&\frac{1}{\sqrt{16}}&\frac{1}{\sqrt{12}}&0&\frac{1}{\sqrt{16}}&0\\ 0&\frac{1}{\sqrt{12}}&\frac{1}{\sqrt{9}}&\frac{1}{\sqrt{12}}&0&0\\ 0&0&\frac{1}{\sqrt{12}}&\frac{1}{\sqrt{16}}&\frac{1}{\sqrt{16}}&\frac{1}{\sqrt{8}}\\ \frac{1}{\sqrt{12}}&\frac{1}{\sqrt{16}}&0&\frac{1}{\sqrt{16}}&\frac{1}{\sqrt{16}}&0\\ 0&0&0&\frac{1}{\sqrt{8}}&0&\frac{1}{\sqrt{4}} \end{matrix} \right\}
H(l+1)=f(Hl,A)=δ(D~−1/2A~D~−1/2H(l)W(l))}=⎩⎪⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎪⎧91121001210121161121016100121911210000121161161811211610161161000081041⎭⎪⎪⎪⎪⎪⎪⎪⎬⎪⎪⎪⎪⎪⎪⎪⎫
re-normalization后有:
L
s
y
m
:
=
D
−
1
/
2
L
D
−
1
/
2
=
D
−
1
/
2
(
D
−
A
)
D
−
1
/
2
=
I
N
−
D
−
1
/
2
A
D
−
1
/
2
\bf L^{sym}:=\bf{D^{-1/2}LD^{-1/2}}=\bf{D^{-1/2}(D-A)D^{-1/2}}=\bf{I_N-D^{-1/2}AD^{-1/2}}
Lsym:=D−1/2LD−1/2=D−1/2(D−A)D−1/2=IN−D−1/2AD−1/2
邻接矩阵添加自环后:
H
(
l
+
1
)
=
f
(
H
l
,
A
)
=
δ
(
D
~
−
1
/
2
A
~
D
~
−
1
/
2
H
(
l
)
W
(
l
)
)
\bf{H^{(l+1)}}=f(\bf{H^{l},A})=\delta\bigg(\bf{\tilde D^{-1/2}\tilde A\tilde D^{-1/2}H^{(l)}W^{(l)}} \bigg)
H(l+1)=f(Hl,A)=δ(D~−1/2A~D~−1/2H(l)W(l))