1. 图傅里叶变换
请参考文章
2. 图傅里叶变换到图卷积
有了图傅里叶傅里叶变换(Ggraph Fourier Transform,GTF)后,就可以把图从空域转化到频域分析。
对于图信号 x 1 x_1 x1 和 x 2 x_2 x2,先使用图傅里叶变换把图信号从空域转换到频域:
x 1 ^ = V T x 1 x 2 ^ = V T x 2 \hat{x_1}=V^T x_1 \\ \hat{x_2}=V^T x_2 x1^=VTx1x2^=VTx2
其中
V
V
V是由拉普拉斯矩阵
L
L
L的特征向量组成的特征矩阵,即
V
=
[
v
1
,
v
2
,
…
,
v
n
]
V=[v_1, v_2, \dots, v_n]
V=[v1,v2,…,vn]。
然后再将从频域上将
x
1
x_1
x1和
x
2
x_2
x2进行哈达玛积(element-wise,逐元素相乘)
x 1 ^ ⊙ x 2 ^ \hat{x_1} \odot \hat{x_2} x1^⊙x2^
最后在把结果使用逆图傅里叶变换(Inverse Graph Fourier Transform,IGFT)转回到空域。
V ( x 1 ^ ⊙ x 2 ^ ) V (\hat{x_1} \odot \hat{x_2}) V(x1^⊙x2^)
这就是图卷积的定义:
x 1 ∗ x 2 = V ( x 1 ^ ⊙ x 2 ^ ) = V ( ( V T x 1 ) ⊙ ( V T x 2 ) ) x_1*x_2=V (\hat{x_1} \odot \hat{x_2})=V( (V^Tx_1)\odot (V^T x_2)) x1∗x2=V(x1^⊙x2^)=V((VTx1)⊙(VTx2))
其中 ∗ * ∗是卷积操作, ⊙ \odot ⊙是哈达玛积(Hadamard 积,element-wise)
为什么是使用 Hadamard 积: Hadamard 积 操作可以解释为两个图信号在每个基函数上的结合。举个例子, x 2 i x_{2_i} x2i 和 x 1 i x_{1_i} x1i 是 x 2 x_2 x2与 x 1 x_1 x1在第 i 个基上的系数,那么 ( x 1 ∗ x 2 ) i = x 1 i × x 2 i (x_1*x_2)_i=x_{1_i} \times x_{2_i} (x1∗x2)i=x1i×x2i,把所有基上的系数向量化组合后就是 Hadamard 积。
对图卷积操作进行进一步推导:
x 1 ∗ x 2 = V ( ( V T x 1 ) ⊙ ( V T x 2 ) ) = V ( x 1 ^ ⊙ ( V T x 2 ) ) = V ( d i a g ( x 1 ^ ) V T x 2 ) = ( V d i a g ( x 1 ^ ) V T ) x 2 = ( V g θ V ) x 2 \begin{aligned} x_1*x_2&=V( (V^Tx_1)\odot (V^T x_2))\\ &=V(\hat{x_1}\odot(V^Tx_2))\\ &=V(diag(\hat{x_1})V^Tx_2)\\ &=(V diag(\hat{x_1})V^T)x_2\\ &=(Vg_\theta V)x_2 \end{aligned} x1∗x2=V((VTx1)⊙(VTx2))=V(x1^⊙(VTx2))=V(diag(x1^)VTx2)=(Vdiag(x1^)VT)x2=(VgθV)x2
从这个式子可以看出,图卷积操作可以转换成图滤波操作,其中
d
i
a
g
(
x
1
^
)
diag(\hat{x_1})
diag(x1^)是滤波器,因此对于不同的图,需要不同的滤波器来进行滤波,以提取出有效的信息。
借助深度学习中卷积神经网络的做法:
- 把滤波器进行参数化,引入自适应的滤波器
- 引入激活函数,增加非线性表达
那么图卷积就变成了:
X ′ = σ ( V [ θ 1 θ 2 ⋱ θ N ] V T X ) = σ ( V d i a g ( θ ) V T X ) = σ ( Θ X ) \begin{aligned} &X'=\sigma(V\begin{bmatrix}\theta_1&&&\\&\theta_2&&\\&&\ddots&\\&&&\theta_N\end{bmatrix}V^\mathrm{T}X)\\ &=\sigma(Vdiag(\theta)V^TX)\\ &=\sigma(\Theta X)\\ \end{aligned} X′=σ(V θ1θ2⋱θN VTX)=σ(Vdiag(θ)VTX)=σ(ΘX)
其中, σ \sigma σ是激活函数, θ = [ θ 1 , θ 2 , … , θ n ] \theta=[\theta_1, \theta_2, \dots, \theta_n] θ=[θ1,θ2,…,θn]是需要学习的参数, Θ \Theta Θ是对应学习的图滤波器。 X X X是输入矩阵, X ′ X' X′是输出矩阵。
3. 从图卷积到图卷积神经网络(GCN)
参数化后图卷积核有一些缺点:
- 需要对拉普拉斯矩阵进行谱分解来求,在 graph 很大的时候复杂度很高。另外,还需要计算矩阵乘积,复杂度为 O(n²)。
- 卷积核参数为 n,当 graph 很大的时候,n 会很大。
因此为了减小计算量,需要对图卷积进行近似(使用多项式来近似可以减少计算量),由于图傅里叶变换是关于特征值(相当于普通傅里叶变换的频率)的函数, g ( λ 1 ) , g ( λ 2 ) , … , g ( λ n ) g(\lambda_1), g(\lambda_2), \dots, g(\lambda_n) g(λ1),g(λ2),…,g(λn),把特征值组成向量,就变成了 g ( Λ ) g(\Lambda) g(Λ), 然后使用 K 阶多项式进行近似:
g θ ′ ( Λ ) ≈ ∑ k = 0 K θ k ′ Λ k g_{\theta^{\prime}}(\Lambda)\approx\sum_{k=0}^K\theta_k^{\prime}\Lambda^k gθ′(Λ)≈k=0∑Kθk′Λk
带入到卷积公式中有:
g θ ′ ∗ x ≈ V ∑ k = 0 K θ k ′ Λ k V T x = ∑ k = 0 K θ k ′ ( V Λ k V T ) x = ∑ k = 0 K θ k ′ ( V Λ V T ) k x = ∑ k = 0 K θ k ′ L k x \begin{aligned}g_{\theta^{\prime}}*x&≈ V\sum_{k=0}^K\theta_k^{\prime}\Lambda^kV^T{x}\\&=\sum_{k=0}^K\theta_k^{\prime}\left({V}\Lambda^k{V}^T\right)x\\&=\sum_{k=0}^K\theta_k^{\prime}\left({V}\Lambda{V}^T\right)^kx\\&=\sum_{k=0}^K\theta_k^{\prime}{L}^kx\end{aligned} gθ′∗x≈Vk=0∑Kθk′ΛkVTx=k=0∑Kθk′(VΛkVT)x=k=0∑Kθk′(VΛVT)kx=k=0∑Kθk′Lkx
这就可以看出,使用多项式进行近似后,就不需要做特征分解了,可以直接对拉普拉斯矩阵做变换,通过事先将拉普拉斯矩阵求出来,以及求出来 L k L^k Lk,前向传播的时候,就可以直接使用,复杂度为 O ( K n 2 ) O(Kn^2) O(Kn2)。
对于每一次拉普拉斯矩阵和相乘,对于节点 n,相当于从邻居节点传递一次信息给节点 n,由 于连续乘以了 K 次拉普拉斯矩阵,那么相当于 n 节点的 k-hop 之内的节点能够传递信息给 n,因此,实际上只利用了节点的 K-Localized 信息
GCN 论文中使用的是切比雪夫多项式来近似计算:
g θ ′ ( Λ ) ≈ ∑ k = 0 K θ k ′ T k ( Λ ~ ) , g_{\theta^{\prime}}(\Lambda)\approx\sum_{k=0}^{K}\theta_{k}^{\prime}T_{k}(\tilde{\Lambda}) , gθ′(Λ)≈k=0∑Kθk′Tk(Λ~),
其中 Λ ~ = 2 λ m a x λ − I N , θ ′ ∈ R K \tilde{\Lambda}=\frac{2}{\lambda_{max}}\lambda-I_N,\theta'\in\mathbb{R}^K Λ~=λmax2λ−IN,θ′∈RK为切比雪夫向量 θ k ′ θ_k' θk′的第k个分量。
切比雪夫多项式使用递归定义:
T
k
(
x
)
=
2
x
T
k
−
1
(
x
)
−
T
k
−
2
(
x
)
,
T
0
=
1
,
T
1
=
x
T_k(x)=2xT_{k-1}(x)-T_{k-2}(x),T_0=1,T_1=x
Tk(x)=2xTk−1(x)−Tk−2(x),T0=1,T1=x。
带入卷积公式可得
g θ ′ ∗ x ≈ V ∑ k = 0 K θ k ′ T k ( Λ ~ ) V T x ≈ ∑ k = 0 K θ k ′ ( V T k ( Λ ~ ) V T ) x = ∑ k = 0 K θ k ′ T k ( L ~ ) x , \begin{aligned}g_{\theta^{\prime}}*x&≈ V\sum_{k=0}^K\theta_k^{\prime}T_k(\tilde{\boldsymbol{\Lambda}})V^T\boldsymbol{x}\\&\approx\sum_{k=0}^K\theta_k^{\prime}\left(V T_k(\tilde{\boldsymbol{\Lambda}})V^T\right)x\\&=\sum_{k=0}^K\theta_k^{\prime}T_k(\tilde{\boldsymbol{L}})x\end{aligned}, gθ′∗x≈Vk=0∑Kθk′Tk(Λ~)VTx≈k=0∑Kθk′(VTk(Λ~)VT)x=k=0∑Kθk′Tk(L~)x,
其中 L ^ = 2 λ m a x L − I N \hat{L}=\frac{2}{\lambda_{max}}L-I_N L^=λmax2L−IN
为了进一步简化,考虑只从一阶邻居中获取信息,令 K=1, λ m a x = 2 \lambda_{max}=2 λmax=2(可证明拉普拉斯矩阵的特征值在[0, 2]),则图卷积可以进行一步化简为
g
θ
′
∗
x
≈
θ
0
′
x
+
θ
1
′
(
L
−
I
n
)
x
=
θ
0
′
x
+
θ
1
′
(
L
−
I
n
)
x
=
θ
0
′
x
−
θ
1
′
(
D
−
1
/
2
A
D
−
1
/
2
)
x
\begin{aligned}\boldsymbol{g}_{\boldsymbol{\theta}^{\prime}}*\boldsymbol{x}&\approx\boldsymbol{\theta}_0^{\prime}\boldsymbol{x}+\boldsymbol{\theta}_1^{\prime}\left(\boldsymbol{L}-\boldsymbol{I}_n\right)\boldsymbol{x}\\&=\boldsymbol{\theta}_0^{\prime}\boldsymbol{x}+\boldsymbol{\theta}_1^{\prime}\left(\boldsymbol{L}-\boldsymbol{I}_n\right)\boldsymbol{x}\\&=\boldsymbol{\theta}_0^{\prime}\boldsymbol{x}-\boldsymbol{\theta}_1^{\prime}\left(\boldsymbol{D}^{-1/2}\boldsymbol{A}\boldsymbol{D}^{-1/2}\right)\boldsymbol{x}\end{aligned}
gθ′∗x≈θ0′x+θ1′(L−In)x=θ0′x+θ1′(L−In)x=θ0′x−θ1′(D−1/2AD−1/2)x
其中归一化拉普拉斯矩阵
L
~
=
(
D
−
1
/
2
A
D
−
1
/
2
)
\tilde{L}=(\boldsymbol{D}^{-1/2}\boldsymbol{A}\boldsymbol{D}^{-1/2})
L~=(D−1/2AD−1/2)。由于拉普拉斯矩阵的特征值在[0, 2]之间,在反向传播时会导致梯度消失/梯度爆炸,因此使用一个trick,具体操作是用
A
~
=
A
+
I
N
\tilde{A}=A+I_N
A~=A+IN,这样特征值就从[0, 2]变成了[-1, 1]。
为什么特征值会影响反向传播: ∂ σ ( L X ) ∂ X = ∂ σ ∂ ( L X ) ⋅ ∂ ( L X ) ∂ X = ∂ σ ∂ ( L X ) ⋅ ∂ λ X ∂ X = λ ∂ σ ∂ ( L X ) ⋅ ∂ X ∂ X = λ ∂ σ ∂ ( L X ) \frac{∂ \sigma (LX)}{∂ X} =\frac{\partial\sigma}{∂ (LX)}⋅ \frac{∂ (LX)}{∂ X}=\frac{\partial\sigma}{∂ (LX)}⋅ \frac{∂ λ X}{∂ X}=λ\frac{\partial\sigma}{∂ (LX)}⋅ \frac{∂ X}{∂ X}=λ\frac{\partial\sigma}{∂ (LX)} ∂X∂σ(LX)=∂(LX)∂σ⋅∂X∂(LX)=∂(LX)∂σ⋅∂X∂λX=λ∂(LX)∂σ⋅∂X∂X=λ∂(LX)∂σ 在反向传播时梯度会被特征值影响,因此把特征值稳定在[-1,1]之间可以缓解
进一步简化,令
θ
0
′
=
−
θ
1
′
=
θ
{\theta}_0^{\prime}=-{\theta}_1^{\prime}=\theta
θ0′=−θ1′=θ,可得
g
θ
∗
x
=
θ
L
~
x
g_{\theta}*x=θ \tilde{L}x
gθ∗x=θL~x
最后把这个公式推广到多通过(把不同通过的拼接成矩阵)就可以得到图卷积神经网络的传播公式
H
l
+
1
=
σ
(
D
−
1
/
2
A
~
D
−
1
/
2
W
l
H
l
)
\mathbf{H}^{l+1}=\sigma(\mathbf{D}^{-1/2}\tilde{A}\mathbf{D}^{-1/2}\mathbf{W}^{l}\mathbf{H}^{l})
Hl+1=σ(D−1/2A~D−1/2WlHl),
其中
W
W
W可学习的参数(
θ
\theta
θ),H是隐藏层(当l=0时,
H
0
H^0
H0是输入的特征矩阵X),
σ
\sigma
σ是激活函数。
参考: 1.深入浅出图神经网络GCN原理解析 2.图神经网络基础,前沿与应用(吴凌飞)3.图神经网络基础与前沿沿(马腾飞)