基础
傅里叶变换
傅里叶级数是对周期为T的确定性信号做展开,而傅里叶变换将周期推广到无穷,能对具有任意长度的信号做展开。
傅里叶级数和傅里叶变换是什么关系?
如下为傅里叶变换公式:
f
^
(
t
)
=
∫
f
(
x
)
exp
−
i
w
t
d
x
=
∫
f
(
x
)
(
c
o
s
(
w
x
)
+
i
s
i
n
(
w
x
)
)
d
x
\hat{f}(t)={\int}f(x){\exp}^{-iwt}dx = {\int}f(x) \left(cos(wx) + isin(wx) \right)dx
f^(t)=∫f(x)exp−iwtdx=∫f(x)(cos(wx)+isin(wx))dx
用欧拉公式将
exp
−
i
w
t
{\exp}^{-iwt}
exp−iwt展开后,可发现相当于用不同频率的正弦和余弦信号作为基向量和
f
(
x
)
f(x)
f(x)做内积,从而将其从时域变到频域空间。
图傅里叶变换
要将傅里叶变换推广到图上,其关键是找到图信号的基函数。
拉普拉斯算子(Laplacian operator) ∆ ∆ ∆的物理意义是空间二阶导数,其准确定义是:标量梯度场中的散度(梯度的散度,二阶偏导之和),可用于描述物理量的流入流出,例如热传播。
传统傅里叶的基函数
exp
−
i
w
t
{\exp}^{-iwt}
exp−iwt可视为拉普拉斯算子的特征向量,频率为特征值:
∆
e
−
i
w
t
=
∂
2
∂
t
2
e
−
i
w
t
=
−
w
2
e
−
i
w
t
∆{e}^{-iwt}=\frac{{\partial}^2}{{\partial}t^2}{e}^{-iwt}={-w^2}{e}^{-iwt}
∆e−iwt=∂t2∂2e−iwt=−w2e−iwt
其可视为广义的特征方程,和矩阵的特征向量类似(在经过变换后只是改变大小,而方向不变)。
图拉普拉斯矩阵 L \mathbf{L} L是拉普拉斯算子的在图(离散空间)上的的推广,其可用于衡量图上信号的平滑程度。
那么, L ∈ R N × N \mathbf{L} \in \mathbb{R}^{N \times N} L∈RN×N的特征向量就可以类比基函数 exp − i w t {\exp}^{-iwt} exp−iwt,作为图傅里叶变换的基函数(向量)。
L
=
D
−
A
=
U
Λ
U
T
,
拉普拉斯矩阵特征分解
\mathbf{L} = \mathbf{D} - \mathbf{A} = \mathbf{U} \mathbf{\Lambda} \mathbf{U}^{T}, 拉普拉斯矩阵特征分解
L=D−A=UΛUT,拉普拉斯矩阵特征分解
U
=
(
u
1
,
u
2
,
⋯
,
u
N
)
∈
R
N
×
N
,
拉普拉斯矩阵特征向量
\mathbf{U} = (\mathbf{u}_1, \mathbf{u}_2, {\cdots}, \mathbf{u}_N) \in \mathbb{R}^{N \times N}, 拉普拉斯矩阵特征向量
U=(u1,u2,⋯,uN)∈RN×N,拉普拉斯矩阵特征向量
U
−
1
=
U
T
,
U
U
T
=
I
\mathbf{U}^{-1} =\mathbf{U}^T, \mathbf{U} \mathbf{U}^T = \mathbf{I}
U−1=UT,UUT=I
Λ
,
拉普拉斯矩阵特征值对角矩阵
\mathbf{\Lambda}, 拉普拉斯矩阵特征值对角矩阵
Λ,拉普拉斯矩阵特征值对角矩阵
ϕ
l
=
u
l
T
x
,
基向量上的分量
\phi_l = \mathbf{u}_l^{T} \mathbf{x},基向量上的分量
ϕl=ulTx,基向量上的分量
一个包含
N
N
N个节点图,图上每个节点
i
i
i有一个标量信号,这时图信号
x
∈
R
N
\mathbf{x} \in \mathbb{R}^{N}
x∈RN都可表示为拉普拉斯矩阵特征向量(基向量)的线性组合。
Φ
=
[
ϕ
1
.
.
.
ϕ
N
]
=
U
T
x
,图傅里叶变换
\mathbf{\Phi} = \left[ \begin{matrix} \phi_1 \\ ... \\ \phi_N \end{matrix} \right]=\mathbf{U}^T \mathbf{x}, 图傅里叶变换
Φ=
ϕ1...ϕN
=UTx,图傅里叶变换
x
=
∑
l
ϕ
l
u
l
=
U
ϕ
,图傅里叶逆变换
\mathbf{x} ={\sum}_{l} \phi_l \mathbf{u}_l = \mathbf{U} \mathbf{\phi},图傅里叶逆变换
x=∑lϕlul=Uϕ,图傅里叶逆变换
图傅里叶变换,在这里就是将图信号
x
\mathbf{x}
x投影(内积计算分量)到
L
\mathbf{L}
L的特征向量构成的基向量上。就是将
x
\mathbf{x}
x从原始空间变到新的空间-频域。
Φ
=
U
T
x
=
U
T
(
U
Φ
)
,
x
=
U
Φ
=
U
(
U
T
x
)
\mathbf{\Phi}=\mathbf{U}^T \mathbf{x}= \mathbf{U}^T (\mathbf{U} \mathbf{\Phi}), \mathbf{x} = \mathbf{U} \mathbf{\Phi} = \mathbf{U} (\mathbf{U}^T \mathbf{x})
Φ=UTx=UT(UΦ),x=UΦ=U(UTx)
图傅里叶变换(Graph Fourier Transformation)就是基于图拉普拉斯矩阵,将图信号从空域(顶点上)转换到谱域(频域)的一种方法。
第一代:Spectral Network
卷积
卷积运算: 两个实值函数的卷积运算可以理解成,以其中一个函数为权重,对另一个函数做加权平均的操作(这样可以令函数平滑降噪)。
卷积运算的目的不限于此。其操作可以得到一个新的函数,相当于是这两个函数内积的结果。
例子,给定 f ( t ) f(t) f(t)表示时刻 t t t的测量值。由于测量值可能存在噪声,且时间上越近的测量结果越相关,可使用加权方法对最近测量值赋予高权重,来获得加权平滑结果。
可用一个加权函数 g ( a ) g(a) g(a)来实现,其中 a a a代表测量值距当前时刻的时间间隔:
s
(
t
)
=
(
f
∗
g
)
(
t
)
=
∑
a
=
−
∞
+
∞
f
(
a
)
g
(
t
−
a
)
,离散情况
s(t) = (f * g)(t) = \sum_{a=-\infty}^{+\infty} f(a) g(t-a), 离散情况
s(t)=(f∗g)(t)=a=−∞∑+∞f(a)g(t−a),离散情况
若
t
t
t为目标时刻,当
a
a
a取
t
t
t时,间隔为
t
−
a
=
0
t-a=0
t−a=0,有
f
(
t
)
g
(
0
)
f(t) g(0)
f(t)g(0),如下表所示(实际大于
t
t
t取不到):
a a a | t − 3 t-3 t−3 | t − 2 t-2 t−2 | t − 1 t-1 t−1 | t t t |
---|---|---|---|---|
f ( a ) f(a) f(a) | f ( t − 3 ) f(t-3) f(t−3) | f ( t − 2 ) f(t-2) f(t−2) | f ( t − 1 ) f(t-1) f(t−1) | f ( t ) f(t) f(t) |
g ( t − a ) g(t-a) g(t−a) | g ( 3 ) g(3) g(3) | g ( 2 ) g(2) g(2) | g ( 1 ) g(1) g(1) | g ( 0 ) g(0) g(0) |
s ( t ) = ( f ∗ g ) ( t ) = ∫ f ( a ) g ( t − a ) d a ,连续情况 s(t) =(f * g)(t) = \int f(a) g(t-a) d{a},连续情况 s(t)=(f∗g)(t)=∫f(a)g(t−a)da,连续情况
卷积定理:卷积的傅里叶变换等于傅里叶变换的乘积(时域卷积,等于在频域做乘积)
F
{
f
∗
g
}
=
F
[
f
]
⊙
F
[
g
]
]
F\{f*g\} = F[f] {\odot} F[g]]
F{f∗g}=F[f]⊙F[g]]
通过傅里叶逆变换可以得到:
f ∗ g = F − 1 [ F [ f ] ⊙ F [ g ] ] f*g = F^{-1}[F[f]{\odot}F[g]] f∗g=F−1[F[f]⊙F[g]]
图上的卷积
在图上做,图信号和滤波器g的卷积:
输入 x ∈ R N ,每一个节点有一个标量 输入 \mathbf{x} \in \mathbb{R}^{N},每一个节点有一个标量 输入x∈RN,每一个节点有一个标量
g
∈
R
N
,滤波器向量
\mathbf{g} \in \mathbb{R}^{N},滤波器向量
g∈RN,滤波器向量
那么,图上的卷积可以定义为:
x ⋆ g = U ( ( U T x ) ⊙ ( U T g ) ) = U ( U T x ⊙ θ ) \mathbf{x} \star \mathbf{g} = \mathbf{U} \left( (\mathbf{U}^{T}\mathbf{x}) {\odot} (\mathbf{U}^{T}\mathbf{g})\right) = \mathbf{U} (\mathbf{U}^{T}\mathbf{x} {\odot} \mathbf{\theta}) x⋆g=U((UTx)⊙(UTg))=U(UTx⊙θ)
把
U
T
g
统一视为一个,
θ
∈
R
N
(
傅里叶变换后的滤波器
g
)
把 \mathbf{U}^{T}\mathbf{g}统一视为一个,\mathbf{\theta} \in \mathbb{R}^{N} (傅里叶变换后的滤波器 \mathbf{g})
把UTg统一视为一个,θ∈RN(傅里叶变换后的滤波器g)
传统滤波器需根据经验设定,在这里可将滤波器视为:可参数化的卷积核
(
U
T
x
)
⊙
θ
,
θ
⊙
(
U
T
x
)
,交换顺序不影响
(\mathbf{U}^{T}\mathbf{x}) {\odot} \mathbf{\theta},\mathbf{\theta} {\odot} (\mathbf{U}^{T}\mathbf{x}),交换顺序不影响
(UTx)⊙θ,θ⊙(UTx),交换顺序不影响
卷积运算中的乘法为element-wise product,即在频域的乘法。在这里,其直观意义就是:
用卷积核的参数对频域信号的每个分量进行加权操作,来实现滤波(不同的频率分量有不同的权重系数,例如可对高频分量施以更低权重)
那么将卷积核向量展开为对角矩阵形式(行变换),有:
g
θ
=
d
i
a
g
(
θ
)
=
[
θ
1
.
.
.
0
.
.
.
.
.
.
.
.
.
0
.
.
.
θ
N
]
\mathbf{g}_{\theta} = diag{(\mathbf{\theta}) } = \left[ \begin{matrix} {\theta}_1 & ... & 0 \\ ... & ... & ... \\ 0 & ... & {\theta}_N \end{matrix} \right]
gθ=diag(θ)=
θ1...0.........0...θN
最后,可得到:
x
⋆
g
=
U
(
U
T
x
⊙
θ
)
=
U
(
θ
⊙
U
T
x
)
=
U
g
θ
U
T
x
\mathbf{x} \star \mathbf{g} = \mathbf{U} (\mathbf{U}^{T}\mathbf{x} {\odot} \mathbf{\theta} ) \\ = \mathbf{U} (\mathbf{\theta} {\odot} \mathbf{U}^{T}\mathbf{x} ) \\ = \mathbf{U} \mathbf{g}_{\theta} \mathbf{U}^{T} \mathbf{x}
x⋆g=U(UTx⊙θ)=U(θ⊙UTx)=UgθUTx
假设每个节点有
d
d
d维的特征,即通道数为
d
d
d(
d
d
d个图信号):
X
=
[
x
11
x
12
.
.
.
x
1
d
.
.
.
.
.
.
.
.
.
x
n
1
x
n
2
.
.
.
x
n
d
]
=
[
x
1
x
2
.
.
.
x
d
]
\mathbf{X} = \left[ \begin{matrix} {x_{11}} & {x_{12}} & ... & {x_{1d}} \\ ... & ... & ... \\ {x_{n1}} & {x_{n2}} & ... & {x_{nd}} \end{matrix} \right] = \left[ \begin{matrix} {\mathbf{x}_1} & {\mathbf{x}_2} & ... & {\mathbf{x}_d} \end{matrix} \right]
X=
x11...xn1x12...xn2.........x1dxnd
=[x1x2...xd]
注意,
X
∈
R
N
×
d
\mathbf{X} \in \mathbb{R}^{N \times d}
X∈RN×d, 每一个通道可使用多个卷积核(类似CNN,拓展通道数)。
对于第
l
l
l层谱图卷积,通道数为
d
l
{d_l}
dl:
假设第
l
和
l
+
1
层的节点状态为:
X
(
l
)
∈
R
N
×
d
l
,
X
(
l
+
1
)
∈
R
N
×
d
l
+
1
假设第 {l} 和{l+1}层的节点状态为: \mathbf{X}^{(l)} \in \mathbb{R}^{N \times d_l}, \mathbf{X}^{(l+1)} \in \mathbb{R}^{N \times d_{l+1}}
假设第l和l+1层的节点状态为:X(l)∈RN×dl,X(l+1)∈RN×dl+1
X
:
i
(
l
)
=
x
i
(
l
)
∈
R
N
\mathbf{X}^{(l)}_{:i} =\mathbf{x}^{(l)}_{i} \in \mathbb{R}^{N}
X:i(l)=xi(l)∈RN
使用
d
l
∗
d
(
l
+
1
)
d_l * d_{(l+1)}
dl∗d(l+1)个卷积核,每次在全部通道分别用
d
l
d_l
dl个卷积核并将结果求和,重复
d
(
l
+
1
)
d_{(l+1)}
d(l+1)次,得到输出特征通道:
x
j
l
+
1
=
σ
(
U
∑
i
=
1
d
l
Θ
i
,
j
l
U
T
x
i
l
)
,
(
j
=
1
,
…
,
d
(
l
+
1
)
)
\mathbf{x}^{l+1}_j={\sigma}(\mathbf{U} {\sum}_{i=1}^{d_l} \mathbf{\Theta}^l_{i,j} \mathbf{U}^T \mathbf{x}^l_i), (j = 1, \dots, d_{(l+1)})
xjl+1=σ(U∑i=1dlΘi,jlUTxil),(j=1,…,d(l+1))
Θ
i
,
j
l
直接视为模型参数,
U
Θ
i
,
j
l
U
T
对应
C
N
N
中的卷积核
(
复杂度
O
(
n
2
)
)
\mathbf{\Theta}^l_{i,j}直接视为模型参数, \mathbf{U} \mathbf{\Theta}^l_{i,j} \mathbf{U}^T对应CNN中的卷积核(复杂度 O(n^2))
Θi,jl直接视为模型参数,UΘi,jlUT对应CNN中的卷积核(复杂度O(n2))
Spectral Graph Convolution操作定义为:
- 计算图拉普拉斯(graph Laplacian)的特征值分解,得到特征向量
- 将图信号进行图傅里叶变换, 然后使用卷积核进行滤波,然后再进行图傅里叶逆变换
缺点:
- 图拉普拉斯特征分解 O ( n 3 ) O(n^3) O(n3)复杂度, 前向传播 O ( n 2 ) O(n^2) O(n2)。
- 卷积核参数量大: N ∗ d l ∗ d ( l + 1 ) N * d_l * d_(l+1) N∗dl∗d(l+1), 易过拟合($N $ 为节点数量)
- 在空域上没有明确定义,不能局部化到节点上
基于谱图卷积的频域方法,学到的滤波器都是基于拉普拉斯特征分解,也就是取决于图的结构。这也就意味着,在一个特定结构上训练得到的模型,并不能直接应用到另外一个结构不同的图上。
第二代:ChebNet
切比雪夫网络实现了:快速局部化和低复杂度
g
⋆
x
=
x
⋆
g
=
(
U
g
θ
U
T
)
x
,谱图卷积
\mathbf{g} \star \mathbf{x} = \mathbf{x} \star \mathbf{g} = (\mathbf{U} \mathbf{g}_{\theta} \mathbf{U}^{T}) \mathbf{x}, 谱图卷积
g⋆x=x⋆g=(UgθUT)x,谱图卷积
从图信号分析的角度考虑,希望这个过滤函数 g \mathbf{g} g能有较好的局部化(只影响节点的局部邻居点)。
故可把 g \mathbf{g} g定义成 L \mathbf{L} L的函数 g θ ( L ) \mathbf{g}_{\theta}(\mathbf{L}) gθ(L), 例如 L \mathbf{L} L的多项式。(这里就有从频域转向空域的意思)
因为作用一次拉普拉斯矩阵 L \mathbf{L} L, 相当于在图上把信息扩散到1阶邻居。
图信号被这个滤波器过滤后 (拉普拉斯矩阵乘法仅与特征值相关),得到:
y
=
g
θ
(
L
)
x
=
g
θ
(
U
Λ
U
T
)
x
=
U
g
θ
(
Λ
)
U
T
x
\mathbf{y} = \mathbf{g}_{\theta} (\mathbf{L})\mathbf{x} = \mathbf{g}_{\theta} (\mathbf{U} \mathbf{\Lambda} \mathbf{U}^{T}) \mathbf{x} = \mathbf{U} \mathbf{g}_{\theta} (\mathbf{\Lambda}) \mathbf{U}^{T} \mathbf{x}
y=gθ(L)x=gθ(UΛUT)x=Ugθ(Λ)UTx
也就是说,可把谱域图卷积中的卷积核, 看作拉普拉斯矩阵特征值
Λ
\mathbf{\Lambda}
Λ的函数。通常,可选择使用一个多项式卷积核:
g
θ
(
Λ
)
=
∑
k
=
0
K
θ
k
Λ
k
\mathbf{g}_{\theta}(\mathbf{\Lambda}) = \sum_{k=0}^{K} \mathbf{\theta_{k}} \mathbf{\Lambda}^{k}
gθ(Λ)=k=0∑KθkΛk
其中,参数
θ
k
\mathbf{\theta_{k}}
θk是多项式的系数。通过这个定义,我们现在只需要
K
+
1
个
K+1个
K+1个参数(
K
远小于
N
K远小于N
K远小于N)这大大降低了参数学习过程的复杂度。就相当于:
g
θ
(
L
)
=
∑
k
=
0
K
θ
k
L
k
\mathbf{g}_{\theta}(\mathbf{L}) = \sum_{k=0}^{K} \mathbf{\theta_{k}} \mathbf{L}^{k}
gθ(L)=k=0∑KθkLk
因此信息最多在每个节点传播
K
K
K步,即即卷积的局部化。
ChebNet进一步提出了加速方案,把
g
θ
(
Λ
)
\mathbf{g}_{\theta}(\mathbf{\Lambda})
gθ(Λ) 近似为
K
K
K阶切比雪夫多项式的:
g
θ
(
Λ
)
=
∑
k
=
0
K
θ
k
T
k
(
Λ
~
)
\mathbf{g}_{\theta}(\mathbf{\Lambda}) = \sum_{k=0}^{K} \theta_{k} T_{k}(\tilde{\mathbf{\Lambda}})
gθ(Λ)=k=0∑KθkTk(Λ~)
其中,
T
k
T_k
Tk是
k
k
k阶切比雪夫多项式。
Λ ~ = 2 Λ n / λ m a x − I n 是一个对角阵 主要将特征值对角阵映射到 [ − 1 , 1 ] 区间 λ m a x 是 L 最大的特征值, θ k ∈ R K 为切比雪夫系数向量 \tilde{\mathbf{\Lambda}} = 2 \mathbf{\Lambda}_n / \lambda_{max} - \mathbf{I}_n是一个对角阵 \\ 主要将特征值对角阵映射到[-1,1]区间 \\ \lambda_{max}是\mathbf{L} 最大的特征值,\theta_{k} \in \mathbb{R}^{K}为切比雪夫系数向量 Λ~=2Λn/λmax−In是一个对角阵主要将特征值对角阵映射到[−1,1]区间λmax是L最大的特征值,θk∈RK为切比雪夫系数向量
之所以采用切比雪夫多项式,是因为考虑到它具有很好的性质,可以循环递归求解:
T
k
(
x
)
=
2
x
T
k
−
1
(
x
)
−
T
k
−
2
(
x
)
T_{k}(\mathbf{x})=2 \mathbf{x} T_{k-1}(\mathbf{x})-T_{k-2}(\mathbf{x})
Tk(x)=2xTk−1(x)−Tk−2(x)
从初始值
T
0
(
x
)
=
1
,
T
1
(
x
)
=
x
开始
,
采用递归公式,可求得
k
阶
T
k
的值
从初始值 T_{0}(\mathbf{x})=1, T_{1}(\mathbf{x})=\mathbf{x}开始,采用递归公式,可求得k阶T_k的值
从初始值T0(x)=1,T1(x)=x开始,采用递归公式,可求得k阶Tk的值
为了避免特征值分解,将式(3.8)写回为L的函数:
y
=
g
∗
x
=
U
g
θ
(
Λ
)
U
T
x
=
U
(
∑
k
=
0
K
θ
k
T
k
(
Λ
~
)
)
U
T
x
=
∑
k
=
0
K
θ
k
(
U
T
k
(
Λ
~
)
U
T
)
x
=
∑
k
=
0
K
θ
k
T
k
(
L
~
)
x
\begin{aligned} \mathbf{y} =\boldsymbol{g} * \mathbf{x} & = \mathbf{U} \mathbf{g}_{\theta} (\mathbf{\Lambda}) \mathbf{U}^{T} \mathbf{x} \\ & = \mathbf{U} \left( \sum_{k=0}^{K} \theta_{k} T_{k}(\tilde{\mathbf{\Lambda}}) \right) \mathbf{U}^{T} \mathbf{x} \\ & = \sum_{k=0}^{K} \theta_{k} \left(\mathbf{U} T_{k}(\tilde{\mathbf{\Lambda}}) \mathbf{U}^{T}\right) x \\ &=\sum_{k=0}^{K} \theta_{k} T_{k}(\tilde{\mathbf{L}}) \mathbf{x} \end{aligned}
y=g∗x=Ugθ(Λ)UTx=U(k=0∑KθkTk(Λ~))UTx=k=0∑Kθk(UTk(Λ~)UT)x=k=0∑KθkTk(L~)x
其中
,
L
~
=
2
λ
max
L
−
I
N
。这个式子是拉普拉斯矩阵的
K
次多项式。
其中, \tilde{\mathbf{L}}=\frac{2}{\lambda_{\max }} \mathbf{L}-\mathbf{I}_{N}。这个式子是拉普拉斯矩阵的K次多项式。
其中,L~=λmax2L−IN。这个式子是拉普拉斯矩阵的K次多项式。
因此,它仍然保持
K
K
K-局部化(节点仅被其周围的
K
K
K阶邻居节点所影响)。可以看到,ChebNet本质上已经是在用多阶次的
L
\mathbf{L}
L对图信号进行处理。
ChebNet要学习的参数就是切比雪夫多项式的权重系数,同时还需确定切比雪夫多项式的阶数 K K K。
第三代:GCN
GCN进一步对ChebNet进行了局部化来限制卷积操作的范围,从而来减缓过拟合的问题。
具体地,它将切比雪夫多项式的项数设为
K
=
1
K=1
K=1,它还近似了
λ
max
≈
2
\lambda_{\max } \approx 2
λmax≈2,最后简化的方程如下:
g
θ
′
⋆
x
≈
θ
0
′
x
+
θ
1
′
(
L
−
I
N
)
x
=
θ
0
′
x
−
θ
1
′
D
−
1
2
A
D
−
1
2
x
\mathbf{g}_{\theta^{\prime}} \star \mathbf{x} \approx \theta_{0}^{\prime} \mathbf{x}+\theta_{1}^{\prime}\left(\mathbf{L}-\mathbf{I}_{N}\right) \mathbf{x}=\theta_{0}^{\prime} \mathbf{x}-\theta_{1}^{\prime} \mathbf{D}^{-\frac{1}{2}} \mathbf{A} \mathbf{D}^{-\frac{1}{2}} \mathbf{x}
gθ′⋆x≈θ0′x+θ1′(L−IN)x=θ0′x−θ1′D−21AD−21x
使用两个无限制的参数
θ
0
′
\theta'_0
θ0′和
θ
1
′
\theta'_1
θ1′。
在通过设置
θ
=
θ
0
′
=
−
θ
1
′
\theta=\theta_{0}^{\prime}=-\theta_{1}^{\prime}
θ=θ0′=−θ1′来限制参数的数量之后,可得到以下表达式:
y
=
g
∗
x
=
g
θ
⋆
x
≈
θ
(
I
N
+
D
−
1
2
A
D
−
1
2
)
x
\mathbf{y} =\boldsymbol{g} * \mathbf{x} = \mathbf{g}_{\theta} \star \mathbf{x} \approx \theta\left(\mathbf{I}_{N}+\mathbf{D}^{-\frac{1}{2}} \mathbf{A} \mathbf{D}^{-\frac{1}{2}}\right) \mathbf{x}
y=g∗x=gθ⋆x≈θ(IN+D−21AD−21)x
值得一提的是,叠加使用这个操作会导致数值不稳定性以及梯度爆炸或消失(因为不断地乘以同一个矩阵)。因此,该论文里面使用了重规范化操作(renormalization):
I
N
+
D
−
1
2
A
D
−
1
2
→
D
~
−
1
2
A
~
D
~
−
1
2
\mathbf{I}_{N}+\mathbf{D}^{-\frac{1}{2}} \mathbf{A} \mathbf{D}^{-\frac{1}{2}}\rightarrow{}\tilde{\mathbf{D}}^{-\frac{1}{2}} \tilde{\mathbf{A}} \tilde{\mathbf{D}}^{-\frac{1}{2}}
IN+D−21AD−21→D~−21A~D~−21
其中, 自环邻接矩阵
A
~
=
A
+
I
N
\tilde{\mathbf{A}}=\mathbf{A}+\mathbf{I}_{N}
A~=A+IN,
D
~
i
i
=
∑
j
A
~
i
j
\tilde{\mathbf{D}}_{i i}=\sum_{j} \tilde{\mathbf{A}}_{i j}
D~ii=∑jA~ij。
然后,论文将模型扩展为含有 C C C个输入通道的信号, X ∈ R N × C \mathbf{X} \in \mathbb{R}^{N \times C} X∈RN×C以及 F F F个滤波器来用于提取特征:
Z = D ~ − 1 2 A ~ D ~ − 1 2 X Θ \mathbf{Z}=\tilde{\mathbf{D}}^{-\frac{1}{2}} \tilde{\mathbf{A}} \tilde{\mathbf{D}}^{-\frac{1}{2}} \mathbf{X} \boldsymbol{\Theta} Z=D~−21A~D~−21XΘ
其中, Θ ∈ R C × F \Theta \in \mathbb{R}^{C \times F} Θ∈RC×F是滤波器参数矩阵, Z ∈ R N × F \mathbf{Z} \in\mathbb{R}^{N \times F} Z∈RN×F是卷积信号矩阵。
此时,GCN已经可以很好的联系到空域。GCN可以看成一层网络,而每一个GCN层相当于对目标节点的一阶邻居即自己做加权求和。具体推导可看之前博客: Pytorch-geometric: Creating Message Passing Networks 构建消息传递网络教程 中第三节关于GCN空域解释。
至此,单层的GCN变成了一个一阶模型,它每次卷积只能处理图上的1阶邻居信息。若要处理K阶邻居,需通过堆叠 K K K个上述GCN层,来扩大图卷积地感受野。
实际上后续地改进,通常也是从这个角度出发,如果将 D ~ − 1 2 A ~ D ~ − 1 2 \tilde{\mathbf{D}}^{-\frac{1}{2}} \tilde{\mathbf{A}} \tilde{\mathbf{D}}^{-\frac{1}{2}} D~−21A~D~−21 视为加了自环的转移矩阵 P \mathbf{P} P ,那么完全可以预先计算其幂 P k \mathbf{P}^{k} Pk或邻接矩阵的幂 A k \mathbf{A}^{k} Ak来直接获取高阶邻居信息。