从图傅里叶变换到图卷积神经网络

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)) x1x2=V(x1^x2^)=V((VTx1)(VTx2))

其中 ∗ * 是卷积操作, ⊙ \odot 是哈达玛积(Hadamard 积,element-wise)

为什么是使用 Hadamard 积: Hadamard 积 操作可以解释为两个图信号在每个基函数上的结合。举个例子,KaTeX parse error: Double subscript at position 4: x_2_̲iKaTeX parse error: Double subscript at position 4: x_1_̲i x 2 与 x 1 x_2与x_1 x2x1在第 i 个基上的系数,那么 ( x 1 ∗ x 2 ) i = x 1 i × x 2 i (x_1*x_2)_i=x_{1_i} \times x_{2_i} (x1x2)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} x1x2=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^)是滤波器,因此对于不同的图,需要不同的滤波器来进行滤波,以提取出有效的信息。
图滤波操作

借助深度学习中卷积神经网络的做法:

  1. 把滤波器进行参数化,引入自适应的滤波器
  2. 引入激活函数,增加非线性表达

那么图卷积就变成了:

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)

参数化后图卷积核有一些缺点:

  1. 需要对拉普拉斯矩阵进行谱分解来求,在 graph 很大的时候复杂度很高。另外,还需要计算矩阵乘积,复杂度为 O(n²)。
  2. 卷积核参数为 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=0Kθ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θxVk=0KθkΛkVTx=k=0Kθk(VΛkVT)x=k=0Kθk(VΛVT)kx=k=0KθkLkx

这就可以看出,使用多项式进行近似后,就不需要做特征分解了,可以直接对拉普拉斯矩阵做变换,通过事先将拉普拉斯矩阵求出来,以及求出来 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=0KθkTk(Λ~)

其中 Λ ~ = 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)=2xTk1(x)Tk2(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θxVk=0KθkTk(Λ~)VTxk=0Kθk(VTk(Λ~)VT)x=k=0KθkTk(L~)x

其中 L ^ = 2 λ m a x L − I N \hat{L}=\frac{2}{\lambda_{max}}L-I_N L^=λmax2LIN

为了进一步简化,考虑只从一阶邻居中获取信息,令 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θ0x+θ1(LIn)x=θ0x+θ1(LIn)x=θ0xθ1(D1/2AD1/2)x
其中归一化拉普拉斯矩阵 L ~ = ( D − 1 / 2 A D − 1 / 2 ) \tilde{L}=(\boldsymbol{D}^{-1/2}\boldsymbol{A}\boldsymbol{D}^{-1/2}) L~=(D1/2AD1/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)σXX=λ(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 ) H^{l+1}=\sigma(\boldsymbol{D}^{-1/2}\boldsymbol{A}\boldsymbol{D}^{-1/2}W^{l}H^{l}) Hl+1=σ(D1/2AD1/2WlHl),
其中 W W W可学习的参数( θ \theta θ),H是隐藏层(当l=0时, H 0 H^0 H0是输入的特征矩阵X), σ \sigma σ是激活函数。

参考: 1.深入浅出图神经网络GCN原理解析 2.图神经网络基础,前沿与应用(吴凌飞)3.图神经网络基础与前沿沿(马腾飞)

  • 17
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值