扩展
拉普拉斯算子处理的对象一般是在欧氏空间中的,而图上的拉普拉斯则是将其拓展到了非欧氏空间上,并且其处理的数据不在是规则区域,而是具有一定拓扑结构的图。
先从离散的拉普拉斯说起: [ − 1 − 1 − 1 − 1 8 − 1 − 1 − 1 − 1 ] left[ egin{matrix}-1 & -1 & -1 \-1 & 8 & -1 \-1 & -1 & -1end{matrix} ight] ⎣⎡−1−1−1−18−1−1−1−1⎦⎤或者 [ 1 1 1 1 − 8 1 1 1 1 ] left[ egin{matrix}1 & 1 & 1 \1 & -8 & 1 \1 & 1 & 1end{matrix} ight] ⎣⎡1111−81111⎦⎤
这里算子的操作主要是对中心点的周围点进行运算,如果类比到图上的话就是对应顶点的邻接点。同样我们也需要定义一个关于顶点的函数来与之前的多元函数对应,并且还要相应的定义偏导与散度。
形式
邻接矩阵
W
W
W:对应描述了各顶点之间与边的关系,对应的
W
i
j
W_{ij}
Wij表示
i
,
j
i,j
i,j之间存在边(有向或无向),对应值为1(无权)或相应权值(有权),其余的元素为0。
度矩阵
D
D
D:该矩阵是一个对角矩阵,如果是无向图就对应为每个点的度,分布到对角的相应区域,如果是有向图就是取顶点的出度或者入度作为元素。
拉普拉斯矩阵:
D
−
W
D-W
D−W,度矩阵减去邻接矩阵。
拉普拉斯矩阵为一个实对称矩阵,并且由于其各行各列的元素和为0,所以其不是一个正定矩阵,而是一个半正定矩阵。于是其特征值有 0 = λ 1 ⩽ λ 2 ⩽ λ 3 ⩽ λ 4 ⩽ λ 5 . . . . ⩽ λ n 0=lambda_1leqslantlambda_2leqslantlambda_3leqslantlambda_4leqslantlambda_5....leqslantlambda_n 0=λ1⩽λ2⩽λ3⩽λ4⩽λ5....⩽λn特征值均为非负的。
拉普拉斯矩阵还有其他的形式,比如将其标准化,也就是对角上的数值为1:
D
−
1
2
L
D
−
1
2
=
I
−
D
−
1
2
W
D
−
1
2
D^{-frac12}LD^{-frac12}=I-D^{-frac12}WD^{-frac12}
D−21LD−21=I−D−21WD−21
其中的
I
I
I为单位矩阵。
关联
以一个图为例子:
其关联矩阵为
C
=
[
1
1
0
0
0
0
0
0
0
−
1
1
0
0
−
1
0
1
−
1
0
0
−
1
1
0
0
0
0
0
−
1
1
0
0
1
0
0
0
0
0
−
1
1
−
1
0
0
0
0
0
0
0
0
−
1
]
C=left[ egin{matrix}1 & 1 & 0 & 0 & 0 & 0 & 0 & 0\0 & -1 & 1 & 0 & 0 & -1 & 0 & 1\-1 & 0 & 0 & -1 & 1 & 0 & 0 & 0\0 & 0 & -1 & 1 & 0 & 0 & 1 & 0\0 & 0 & 0 & 0 & -1 & 1 & -1 & 0\0 & 0 & 0 & 0 & 0 & 0 & 0 & -1end{matrix}
ight]
C=⎣⎢⎢⎢⎢⎢⎢⎡10−10001−10000010−10000−11000010−100−100100001−1001000−1⎦⎥⎥⎥⎥⎥⎥⎤
其对应的行为顶点
V
1
−
V
6
V_1-V_6
V1−V6,其对应的列为边
e
1
−
e
8
e_1-e_8
e1−e8
进行一个转置相乘 C C T = [ 1 1 0 0 0 0 0 0 0 − 1 1 0 0 − 1 0 1 − 1 0 0 − 1 1 0 0 0 0 0 − 1 1 0 0 1 0 0 0 0 0 − 1 1 − 1 0 0 0 0 0 0 0 0 − 1 ] [ 1 0 − 1 0 0 0 1 − 1 0 0 0 0 0 1 0 − 1 0 0 0 0 − 1 1 0 0 0 0 1 0 − 1 0 0 − 1 0 0 1 0 0 0 0 1 − 1 0 0 1 0 0 0 − 1 ] CC^T=left[ egin{matrix}1 & 1 & 0 & 0 & 0 & 0 & 0 & 0\0 & -1 & 1 & 0 & 0 & -1 & 0 & 1\-1 & 0 & 0 & -1 & 1 & 0 & 0 & 0\0 & 0 & -1 & 1 & 0 & 0 & 1 & 0\0 & 0 & 0 & 0 & -1 & 1 & -1 & 0\0 & 0 & 0 & 0 & 0 & 0 & 0 & -1end{matrix} ight] left[ egin{matrix}1 & 0 & -1 & 0 & 0 & 0 \1 & -1 & 0 & 0 & 0 & 0 \0 & 1 & 0 & -1 & 0 & 0\0 & 0 & -1 & 1 & 0 & 0\0 & 0 & 1 & 0 & -1 & 0\0 & -1 & 0 & 0 & 1 & 0 \0 & 0 & 0 & 1 & -1 & 0 \0 & 1 & 0 & 0 & 0 & -1end{matrix} ight] CCT=⎣⎢⎢⎢⎢⎢⎢⎡10−10001−10000010−10000−11000010−100−100100001−1001000−1⎦⎥⎥⎥⎥⎥⎥⎤⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎡110000000−1100−101−100−1100000−1100100000−11−100000000−1⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎤
= [ 2 − 1 − 1 0 0 0 − 1 4 0 − 1 − 1 − 1 − 1 0 3 − 1 − 1 0 0 − 1 − 1 3 − 1 0 0 − 1 − 1 − 1 3 0 0 − 1 0 0 0 1 ] =left[ egin{matrix}2 & -1 & -1 & 0 & 0 & 0 \-1 & 4 & 0 & -1 & -1 & -1\-1 & 0 & 3 & -1 & -1 & 0 \0 & -1 & -1 & 3 & -1 & 0 \0 & -1 & -1 & -1 & 3 & 0 \0 & -1 & 0 & 0 & 0 & 1end{matrix} ight] =⎣⎢⎢⎢⎢⎢⎢⎡2−1−1000−140−1−1−1−103−1−100−1−13−100−1−1−1300−10001⎦⎥⎥⎥⎥⎥⎥⎤
= [ 2 0 0 0 0 0 0 4 0 0 0 0 0 0 3 0 0 0 0 0 0 3 0 0 0 0 0 0 3 0 0 0 0 0 0 1 ] − [ 0 1 1 0 0 0 1 0 0 1 1 1 1 0 0 1 1 0 0 1 1 0 1 0 0 1 1 1 0 0 0 1 0 0 0 0 ] =left[ egin{matrix}2 & 0 & 0 & 0 & 0 & 0 \0 & 4 & 0 & 0 & 0 & 0\0 & 0 & 3 & 0 & 0 & 0 \0 & 0 & 0 & 3 & 0 & 0 \0 & 0 & 0 & 0 & 3 & 0 \0 & 0 & 0 & 0 & 0 & 1end{matrix} ight]-left[ egin{matrix}0 & 1 & 1 & 0 & 0 & 0 \1 & 0 & 0 & 1 & 1 & 1\1 & 0 & 0 & 1 & 1 & 0 \0 & 1 & 1 & 0 & 1 & 0 \0 & 1 & 1 & 1 & 0 & 0 \0 & 1 & 0 & 0 & 0 & 0end{matrix} ight] =⎣⎢⎢⎢⎢⎢⎢⎡200000040000003000000300000030000001⎦⎥⎥⎥⎥⎥⎥⎤−⎣⎢⎢⎢⎢⎢⎢⎡011000100111100110011010011100010000⎦⎥⎥⎥⎥⎥⎥⎤
=
D
−
W
=
L
=D-W=L
=D−W=L
我们通过对关联矩阵的运算得到了拉普拉斯矩阵的形式,但是其描述的是无向图,并且得到的矩阵是一个是实对称矩阵(有向图的描述就不一定了),拉普拉斯矩阵在这一形式下常用于无向图(转置的操作使得边的方向抵消),并且在频域卷积(GCNN中)的时候无向图是其前提条件,因此我们主要考虑的是其描述无向图的应用。
类比
首先就是一个函数定义,对应到图中就是一个关于顶点的函数
F
G
(
V
)
F_G(V)
FG(V),对应离散的顶点就是其自变量,实现一个对顶点的映射。
在欧式空间中,偏导变量之间是要有一个正交的关系的,而在图中我们可以认为各个邻接边之间都是正交的, f ( x 1 , . . . x n ) − f ( x 1 ′ , . . . x n ′ ) x 1 − x 1 ′ frac{f(x_1,...x_n)-f(x'_1,...x'_n)}{x_1-x'_1} x1−x1′f(x1,...xn)−f(x1′,...xn′)描述在 x 1 x_1 x1方向上的变化率( x 1 ′ = x 1 + d x 1 x'_1=x_1+dx_1 x1′=x1+dx1),其中分母为函数值的差,同样在图中也可以由 F G ( V 2 ) − F G ( V 1 ) F_G(V_2)-F_G(V_1) FG(V2)−FG(V1)来表示,分子表示的就是自变量的变化,类比到图上就是两点之间的边,对应 V 1 , V 2 V_1,V_2 V1,V2就是需要 e 12 e_{12} e12(顶点1,2之间的边),但是这里描述时并不是以边的权值为分母,而是以其倒数,对应所有边表示的方向上的梯度就有如下的形式:
[ e 1 ( F G ( V 1 ) − F G ( V 3 ) ) e 2 ( F G ( V 1 ) − F G ( V 2 ) ) e 3 ( F G ( V 2 ) − F G ( V 4 ) ) e 4 ( F G ( V 4 ) − F G ( V 3 ) ) e 5 ( F G ( V 3 ) − F G ( V 5 ) ) e 6 ( F G ( V 5 ) − F G ( V 2 ) ) e 7 ( F G ( V 4 ) − F G ( V 5 ) ) e 8 ( F G ( V 2 ) − F G ( V 6 ) ) ] = [ e 1 0 − e 1 0 0 0 e 2 − e 2 0 0 0 0 0 e 3 0 − e 3 0 0 0 0 − e 4 e 4 0 0 0 0 e 5 0 − e 5 0 0 − e 6 0 0 e 6 0 0 0 0 e 7 − e 7 0 0 e 8 0 0 0 − e 8 ] [ F G ( V 1 ) F G ( V 2 ) F G ( V 3 ) F G ( V 4 ) F G ( V 5 ) F G ( V 6 ) F G ( V 7 ) F G ( V 8 ) ] left[ egin{matrix}e_1(F_G(V_1)-F_G(V_3))\e_2(F_G(V_1)-F_G(V_2))\e_3(F_G(V_2)-F_G(V_4))\e_4(F_G(V_4)-F_G(V_3)) \e_5(F_G(V_3)-F_G(V_5))\e_6(F_G(V_5)-F_G(V_2))\e_7(F_G(V_4)-F_G(V_5))\e_8(F_G(V_2)-F_G(V_6))end{matrix} ight]=left[ egin{matrix}e_1&0&-e_1&0&0&0\e_2&-e_2&0&0&0&0\0&e_3&0&-e_3&0&0\0&0&-e_4&e_4&0&0\0&0&e_5&0&-e_5&0\0&-e_6&0&0&e_6&0\0&0&0&e_7&-e_7&0\0&e_8&0&0&0&-e_8end{matrix} ight]left[ egin{matrix}F_G(V_1)\F_G(V_2)\F_G(V_3)\F_G(V_4)\F_G(V_5)\F_G(V_6)\F_G(V_7)\F_G(V_8)end{matrix} ight] ⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎡e1(FG(V1)−FG(V3))e2(FG(V1)−FG(V2))e3(FG(V2)−FG(V4))e4(FG(V4)−FG(V3))e5(FG(V3)−FG(V5))e6(FG(V5)−FG(V2))e7(FG(V4)−FG(V5))e8(FG(V2)−FG(V6))⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎤=⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎡e1e20000000−e2e300−e60e8−e100−e4e500000−e3e400e700000−e5e6−e700000000−e8⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎤⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎡FG(V1)FG(V2)FG(V3)FG(V4)FG(V5)FG(V6)FG(V7)FG(V8)⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎤
我们记每个边的梯度为
g
r
a
d
(
e
)
grad(e)
grad(e),之后相应的定义散度,用顶点处梯度的变化来描述,对应流入的梯度减去流出的梯度,于是有:
[
g
r
a
d
(
e
1
)
+
g
r
a
d
(
e
2
)
−
g
r
a
d
(
e
2
)
+
g
r
a
d
(
e
3
)
−
g
r
a
d
(
e
6
)
+
g
r
a
d
(
e
8
)
−
g
r
a
d
(
e
1
)
−
g
r
a
d
(
e
4
)
+
g
r
a
d
(
e
5
)
−
g
r
a
d
(
e
3
)
+
g
r
a
d
(
e
4
)
−
g
r
a
d
(
e
7
)
−
g
r
a
d
(
e
5
)
+
g
r
a
d
(
e
6
)
−
g
r
a
d
(
e
7
)
−
g
r
a
d
(
e
8
)
]
=
[
1
1
0
0
0
0
0
0
0
−
1
1
0
0
−
1
0
1
−
1
0
0
−
1
1
0
0
0
0
0
−
1
1
0
0
1
0
0
0
0
0
−
1
1
−
1
0
0
0
0
0
0
0
0
−
1
]
[
g
r
a
d
(
e
1
)
g
r
a
d
(
e
2
)
g
r
a
d
(
e
3
)
g
r
a
d
(
e
4
)
g
r
a
d
(
e
5
)
g
r
a
d
(
e
6
)
g
r
a
d
(
e
7
)
g
r
a
d
(
e
8
)
]
left[ egin{matrix}grad(e_1)+grad(e_2)\-grad(e_2)+grad(e_3)-grad(e_6)+grad(e_8)\-grad(e_1)-grad(e_4)+grad(e_5)\-grad(e_3)+grad(e_4)-grad(e_7)\-grad(e_5)+grad(e_6)-grad(e_7)\-grad(e_8)end{matrix}
ight]=left[ egin{matrix}1 & 1 & 0 & 0 & 0 & 0 & 0 & 0\0 & -1 & 1 & 0 & 0 & -1 & 0 & 1\-1 & 0 & 0 & -1 & 1 & 0 & 0 & 0\0 & 0 & -1 & 1 & 0 & 0 & 1 & 0\0 & 0 & 0 & 0 & -1 & 1 & -1 & 0\0 & 0 & 0 & 0 & 0 & 0 & 0 & -1end{matrix}
ight]left[ egin{matrix}grad(e_1)\grad(e_2)\grad(e_3)\grad(e_4)\grad(e_5)\grad(e_6)\grad(e_7)\grad(e_8)end{matrix}
ight]
⎣⎢⎢⎢⎢⎢⎢⎡grad(e1)+grad(e2)−grad(e2)+grad(e3)−grad(e6)+grad(e8)−grad(e1)−grad(e4)+grad(e5)−grad(e3)+grad(e4)−grad(e7)−grad(e5)+grad(e6)−grad(e7)−grad(e8)⎦⎥⎥⎥⎥⎥⎥⎤=⎣⎢⎢⎢⎢⎢⎢⎡10−10001−10000010−10000−11000010−100−100100001−1001000−1⎦⎥⎥⎥⎥⎥⎥⎤⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎡grad(e1)grad(e2)grad(e3)grad(e4)grad(e5)grad(e6)grad(e7)grad(e8)⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎤
与之前的相关矩阵的运算对应。
距离
对应于欧氏空间中的两点之间的距离(坐标差的平方和),拉普拉斯矩阵其实也对应相似的操作,对应顶点的函数
f
(
V
i
)
f(V_i)
f(Vi)与拉普拉斯矩阵
L
L
L:
f
T
L
f
=
f
T
(
D
−
W
)
f
=
f
T
D
f
−
f
T
W
f
f^TLf=f^T(D-W)f=f^TDf-f^TWf
fTLf=fT(D−W)f=fTDf−fTWf
=
∑
i
=
1
n
d
(
V
i
)
f
(
V
i
)
2
−
∑
i
,
j
=
1
n
W
i
j
f
(
V
i
)
f
(
V
j
)
=sum_{i=1}^nd(V_i)f(V_i)^2-sum_{i,j=1}^nW_{ij}f(V_i)f(V_j)
=∑i=1nd(Vi)f(Vi)2−∑i,j=1nWijf(Vi)f(Vj)
=
1
2
(
∑
i
=
1
n
d
(
V
i
)
f
(
V
i
)
2
+
∑
j
=
1
n
d
(
V
j
)
f
(
V
j
)
2
−
2
∑
i
,
j
=
1
n
W
i
j
f
(
V
i
)
f
(
V
j
)
)
=frac12(sum_{i=1}^nd(V_i)f(V_i)^2+sum_{j=1}^nd(V_j)f(V_j)^2-2sum_{i,j=1}^nW_{ij}f(V_i)f(V_j))
=21(∑i=1nd(Vi)f(Vi)2+∑j=1nd(Vj)f(Vj)2−2∑i,j=1nWijf(Vi)f(Vj))
由于
d
(
V
i
)
d(V_i)
d(Vi)为顶点的度,所以有
d
(
V
i
)
=
∑
j
=
1
n
W
i
j
d(V_i)=sum_{j=1}^nW_{ij}
d(Vi)=∑j=1nWij,原式为:
=
1
2
∑
i
,
j
=
1
n
W
i
j
(
f
(
V
i
)
−
f
(
V
j
)
)
2
=frac12sum_{i,j=1}^nW_{ij}(f(V_i)-f(V_j))^2
=21∑i,j=1nWij(f(Vi)−f(Vj))2
有类似欧式距离的形式。