[论文笔记]Graph Convolutional Network(GCN) 图卷积网络原理

文章目录

    • GCN Note
      • 直观理解:[GCN详解 - mathor (wmathor.com)](https://wmathor.com/index.php/archives/1532/)
      • Basic of GCN
      • Spectral Graph Theory
        • 附加:linear algebra recap.
          • A A A:adjacency matrix :邻接矩阵
          • D D D: degree matrix :度矩阵
          • eigenvalue (特征值) eigenvector(特征向量)
          • 半正定矩阵(positive semi-definite matrix)
          • 二次型(quadratic form)
          • 瑞利商Rayleigh quotient
        • spectral graph theory
          • 研究和GCN主要相关的矩阵
      • Fourier Transform(傅里叶变换)
        • Graph上的傅里叶变换
      • GCN

GCN Note

参考:

PAPER:SEMI-SUPERVISED CLASSIFICATION WITH GRAPH CONVOLUTIONAL NETWORKS. ICLR 2017

图卷积神经网络(GCN)的数学原理详解——谱图理论和傅立叶变换初探_哔哩哔哩_bilibili

直观理解:GCN详解 - mathor (wmathor.com)

  • 我们的每一层GCN的输入都是邻接矩阵A和node的特征H,那么我们直接做一个内积,再乘一个参数矩阵W,然后激活一下,就相当于一个简单的神经网络层嘛,是不是也可以呢?

H ( l + 1 ) = σ ( A H ( l ) θ ) H^{(l+1)}=\sigma(AH^{(l)}\theta) H(l+1)=σ(AH(l)θ)

  • 实验证明,即使就这么简单的神经网络层,就已经很强大了。这个简单模型应该大家都能理解吧,这就是正常的神经网络操作。

    但是这个简单模型有几个局限性:

    1. 只使用A的话,由于A的对角线上都是0,所以在和特征矩阵H相乘的时候,只会计算一个node的所有邻居的特征的加权和,该node自己的特征却被忽略了。因此,我们可以做一个小小的改动,给A加上一个单位矩阵 I ,这样就让对角线元素变成1了。

    2. A是没有经过归一化的矩阵,这样与特征矩阵相乘会改变特征原本的分布,产生一些不可预测的问题。所以我们对A做一个标准化处理。首先让A的每一行加起来为1,我们可以乘以一个D的逆,D就是度矩阵。我们可以进一步把D的拆开与A相乘,得到一个对称且归一化的矩阵 :。

  • 通过对上面两个局限的改进,我们便得到了最终的层特征传播公式

H ( l + 1 ) = σ ( D ~ − 1 2 A ~ D ~ − 1 2 H ( l ) θ ) H^{(l+1)}=\sigma(\tilde{D}^{-\frac{1}{2}}\tilde{A}\tilde{D}^{-\frac{1}{2}}H^{(l)}\theta) H(l+1)=σ(D~21A~D~21H(l)θ)

Basic of GCN

  • 图image是图graph的一种特例

  • GNN
    H ( l + 1 ) = f ( A , H ( l ) ) H^{(l+1)}=f(A,H^{(l)}) H(l+1)=f(A,H(l))
    不同的GNN模型都是在探究不同 f f f的形式

  • GCN(只考虑无向简单图)
    H ( l + 1 ) = σ ( D ~ − 1 2 A ~ D ~ − 1 2 H ( l ) θ ) H^{(l+1)}=\sigma(\tilde{D}^{-\frac{1}{2}}\tilde{A}\tilde{D}^{-\frac{1}{2}}H^{(l)}\theta) H(l+1)=σ(D~21A~D~21H(l)θ)
    A A A:adjacency matrix :邻接矩阵

    A ~ = A + I \tilde{A}=A+I A~=A+I I I I是单位矩阵

    D D D: degree matrix :度矩阵

    D ~ = D + I \tilde{D}=D+I D~=D+I

    θ \theta θ: 可训练的参数,对输入的feature进行线性变换

    σ \sigma σ: 激活函数sigma()

对于只有对角线上有非零元素的矩阵来说,求幂就是对对角线上的元素求对应次幂。例如:

( 4 0 0 0 2 0 0 0 2 ) \left(\begin{matrix}4&0&0\\0&2&0\\0&0&2\end{matrix}\right) 400020002 − 1 2 -\frac{1}{2} 21次方幂: ( 4 − 1 2 0 0 0 2 − 1 2 0 0 0 2 − 1 2 ) \left(\begin{matrix}4^{-\frac{1}{2}}&0&0\\0&2^{-\frac{1}{2}}&0\\0&0&2^{-\frac{1}{2}}\end{matrix}\right) 421000221000221

  • GCN实际就是先对图的 A A A邻接矩阵加了一个自环,再进行对称归一化(左右分别乘以 D ~ \tilde{D} D~ − 1 2 -\frac{1}{2} 21次方),然后将得到的矩阵对输入的特征矩阵进行聚合得到自己和邻居的加权平均的feature信息。

Spectral Graph Theory

附加:linear algebra recap.

A A A:adjacency matrix :邻接矩阵
  • 邻接矩阵表示顶点间关系,是n阶方阵(n为顶点数量)。
  • 邻接矩阵分为有向图邻接矩阵和无向图邻接矩阵。
  • 无向图邻接矩阵是对称矩阵,而有向图的邻接矩阵不一定对称。
D D D: degree matrix :度矩阵
  • 度矩阵是对角阵,对角上的元素为各个顶点的度。
  • 顶点 v i v_i vi的度表示和该顶点相关联的边的数量。
  • 无向图中顶点 v i v_i vi的度 d ( v i ) = N ( i ) d(v_i)=N(i) d(vi)=N(i)。( N ( i ) N(i) N(i)表示顶点 v i v_i vi的邻居)
eigenvalue (特征值) eigenvector(特征向量)
  • A x ⃗ = λ x ⃗ , ∣ x ⃗ ∣ ≠ 0 A\vec{x}=\lambda\vec{x},|\vec{x}|\neq0 Ax =λx x =0 则说 λ \lambda λ是矩阵 A A A的特征值, x ⃗ \vec{x} x 是其特征向量

  • 如果一个矩阵 A n × n A_{n\times n} An×n是实对称矩阵(real symmefric matrix),那它一定有n个特征值,并且这n个特征值对应着n个互相正交的特征向量。

    A = U Λ U T A=U\Lambda U^{T} A=UΛUT U U T = I UU^{T}=I UUT=I Λ = ( λ 1 λ 2 ⋱ λ n ) \Lambda=\left(\begin{matrix}\lambda_1\\&\lambda_2\\&&\ddots\\&&&\lambda_n\end{matrix}\right) Λ=λ1λ2λn

半正定矩阵(positive semi-definite matrix)
  • 所有特征值都大于等于0的矩阵
二次型(quadratic form)
  • x ⃗ T A x ⃗ \vec{x}^{T}A\vec{x} x TAx 称为 x x x对于矩阵 A A A的二次型
瑞利商Rayleigh quotient
  • x ⃗ \vec{x} x 关于矩阵 A A A的二次型与 x ⃗ \vec{x} x 关于单位矩阵的二次型的比值,即 x ⃗ T A x ⃗ x ⃗ T x ⃗ \frac{\vec{x}^{T}A\vec{x}}{\vec{x}^{T}\vec{x}} x Tx x TAx

  • 假如 x ⃗ \vec{x} x A A A的一个特征向量,那么可以证明对应瑞利商是 A A A相应的特征值

证明如下:
x ⃗ T A x ⃗ x ⃗ T x ⃗ = x ⃗ T ( λ x ⃗ ) x ⃗ T x ⃗ = λ ( x ⃗ T x ⃗ ) x ⃗ T x ⃗ = λ \frac{\vec{x}^{T}A\vec{x}}{\vec{x}^{T}\vec{x}}=\frac{\vec{x}^{T}(\lambda\vec{x})}{\vec{x}^{T}\vec{x}}=\frac{\lambda(\vec{x}^{T}\vec{x})}{\vec{x}^{T}\vec{x}}=\lambda x Tx x TAx =x Tx x T(λx )=x Tx λ(x Tx )=λ

spectral graph theory

  • 谱图理论是研究和图邻接矩阵 A A A相关的一些性质。
研究和GCN主要相关的矩阵
  • 拉普拉斯矩阵 L = D − A L=D-A L=DA

  • 拉普拉斯矩阵的对称规范化 L s y m = D − 1 2 L D − 1 2 L_{sym}=D^{-\frac{1}{2}}LD^{-\frac{1}{2}} Lsym=D21LD21

  • L L L L s y m L_{sym} Lsym都是实对称矩阵(positive semi-definite),都具有n个特征值和n个特征向量,都可以分解为 U Λ U T U\Lambda U^{T} UΛUT的形式。

  • L L L L s y m L_{sym} Lsym都是半正定矩阵,所以他们的特征值都是大于等于0的。

    证明 L L L L s y m L_{sym} Lsym都是半正定的:

    • 证明思路:证明矩阵瑞利商 x ⃗ T A x ⃗ x ⃗ T x ⃗ \frac{\vec{x}^{T}A\vec{x}}{\vec{x}^{T}\vec{x}} x Tx x TAx 都是大于等于0的。

    • 对于 L L L :

      1. 分母 x ⃗ T x ⃗ \vec{x}^{T}\vec{x} x Tx x ⃗ \vec{x} x 的模长,所以衡大于等于0

      2. 构造辅助矩阵 G ( i , j ) G_{(i,j)} G(i,j)(除了 g ( i , i ) g_{(i,i)} g(i,i) g ( j , j ) g_{(j,j)} g(j,j)是1, g ( i , j ) g_{(i,j)} g(i,j) g ( j , i ) g_{(j,i)} g(j,i)是-1,其他位置都是0)

        G ( i , j ) = ( ⋱ 1 − 1 ⋱ − 1 1 ⋱ ) G_{(i,j)}=\left(\begin{matrix}\ddots\\&1&&-1\\&&\ddots&\\&-1&&1&\\&&&&\ddots\end{matrix}\right) G(i,j)=1111

        L = ∑ ( i , j ) ∈ E G ( i , j ) L=\sum_{(i,j)\in E}G_{(i,j)} L=(i,j)EG(i,j) (即所有边的G矩阵之和为拉普拉斯矩阵)

        而( G G G的二次型) x ⃗ T G ( i , j ) x ⃗ = x ⃗ T ( ⋮ x i − x j ⋮ x j − x i ⋮ ) = x i ( x i − x j ) + x j ( x j − x i ) = ( x i − x j ) 2 \vec{x}^T G_{(i,j)}\vec{x}=\vec{x}^{T}{\left(\begin{matrix}\vdots\\x_i-x_j\\\vdots\\x_j-x_i\\\vdots\end{matrix}\right)}=x_i(x_i-x_j)+x_j(x_j-x_i)=(x_i-x_j)^2 x TG(i,j)x =x Txixjxjxi=xi(xixj)+xj(xjxi)=(xixj)2

        L L L的二次型(即分子): x ⃗ T L x ⃗ = x ⃗ T ( ∑ G ( i , j ) ) x ⃗ = ∑ ( i , j ) ∈ E ( x i − x j ) 2 ≥ 0 \vec{x}^{T}L\vec{x}=\vec{x}^{T}(\sum G_{(i,j)})\vec{x}=\sum_{(i,j)\in E}{(x_i-x_j)^2}\geq0 x TLx =x T(G(i,j))x =(i,j)E(xixj)20

    • 对于 L s y m L_{sym} Lsym

      1. 分母同上

      2. 分子:

        x ⃗ T L s y m x ⃗ = ( x ⃗ T D − 1 2 ) L ( D − 1 2 x ⃗ ) = ∑ ( x i d i − x j d j ) 2 ≥ 0 \vec{x}^{T}L_{sym}\vec{x}=(\vec{x}^{T}D^{-\frac{1}{2}})L(D^{-\frac{1}{2}}\vec{x})=\sum(\frac{x_i}{\sqrt{d_i}}-\frac{x_j}{\sqrt{d_j}})^2\geq 0 x TLsymx =(x TD21)L(D21x )=(di xidj xj)20

  • L s y m L_{sym} Lsym 的特征值大于等于0并且小于等于2

证明如下:

  1. 辅助矩阵G: G ( i , j ) p o s = ( ⋱ 1 1 ⋱ 1 1 ⋱ ) G_{(i,j)}^{pos}=\left(\begin{matrix}\ddots\\&1&&1\\&&\ddots&\\&1&&1&\\&&&&\ddots\end{matrix}\right) G(i,j)pos=1111

    G p o s G^{pos} Gpos的二次型: x ⃗ T G ( i , j ) p o s x ⃗ = x ⃗ T ( ⋮ x i + x j ⋮ x j + x i ⋮ ) = x i ( x i + x j ) + x j ( x j + x i ) = ( x i + x j ) 2 \vec{x}^T G_{(i,j)}^{pos}\vec{x}=\vec{x}^{T}{\left(\begin{matrix}\vdots\\x_i+x_j\\\vdots\\x_j+x_i\\\vdots\end{matrix}\right)}=x_i(x_i+x_j)+x_j(x_j+x_i)=(x_i+x_j)^2 x TG(i,j)posx =x Txi+xjxj+xi=xi(xi+xj)+xj(xj+xi)=(xi+xj)2

    定义 L p o s = D + A = ∑ ( i , j ) ∈ E G ( i , j ) p o s L^{pos}=D+A=\sum_{(i,j)\in E} G_{(i,j)}^{pos} Lpos=D+A=(i,j)EG(i,j)pos

    L p o s L^{pos} Lpos的二次型:

    x ⃗ T L x ⃗ = x ⃗ T ( ∑ G ( i , j ) ) x ⃗ = ∑ ( i , j ) ∈ E ( x i + x j ) 2 ≥ 0 \vec{x}^{T}L\vec{x}=\vec{x}^{T}(\sum G_{(i,j)})\vec{x}=\sum_{(i,j)\in E}{(x_i+x_j)^2}\geq0 x TLx =x T(G(i,j))x =(i,j)E(xi+xj)20

    同理 L s y m p o s = D − 1 2 L p o s D − 1 2 L^{pos}_{sym}=D^{-\frac{1}{2}}L^{pos}D^{-\frac{1}{2}} Lsympos=D21LposD21的二次型:

    x ⃗ T L s y m x ⃗ = ∑ ( x i d i + x j d j ) 2 ≥ 0 \vec{x}^{T}L_{sym}\vec{x}=\sum(\frac{x_i}{\sqrt{d_i}}+\frac{x_j}{\sqrt{d_j}})^2\geq 0 x TLsymx =(di xi+dj xj)20

  2. 然后对 L s y m p o s L^{pos}_{sym} Lsympos展开:

    L s y m p o s = D − 1 2 L p o s D − 1 2 = I + D − 1 2 A D − 1 2 L^{pos}_{sym}=D^{-\frac{1}{2}}L^{pos}D^{-\frac{1}{2}}=I+D^{-\frac{1}{2}}AD^{-\frac{1}{2}} Lsympos=D21LposD21=I+D21AD21

    代入到 x ⃗ T L s y m x ⃗ \vec{x}^{T}L_{sym}\vec{x} x TLsymx 中:
    x ⃗ T L s y m x ⃗ ≥ 0 ⇒ x ⃗ T ( I + D − 1 2 A D − 1 2 ) x ⃗ ≥ 0 ⇒ x ⃗ T x ⃗ + x ⃗ T D − 1 2 A D − 1 2 x ⃗ ≥ 0 ⇒ x ⃗ T x ⃗ ≥ − x ⃗ T D − 1 2 A D − 1 2 x ⃗ ⇒ 2 x ⃗ T x ⃗ ≥ x ⃗ T x ⃗ − x ⃗ T D − 1 2 A D − 1 2 x ⃗ ⇒ 2 x ⃗ T x ⃗ ≥ x ⃗ T ( I − D − 1 2 A D − 1 2 ) x ⃗ ⇒ 2 x ⃗ T x ⃗ ≥ x ⃗ T D − 1 2 ( D − A ) D − 1 2 x ⃗ ⇒ 2 x ⃗ T x ⃗ ≥ x ⃗ T L s y m x ⃗ ⇒ 2 ≥ x ⃗ T L s y m x ⃗ x ⃗ T x ⃗ \vec{x}^{T}L_{sym}\vec{x}\geq0 \Rightarrow \\ \vec{x}^{T}(I+D^{-\frac{1}{2}}AD^{-\frac{1}{2}})\vec{x}\geq0 \Rightarrow \\ \vec{x}^{T}\vec{x}+\vec{x}^{T}D^{-\frac{1}{2}}AD^{-\frac{1}{2}}\vec{x}\geq0 \Rightarrow \\ \vec{x}^{T}\vec{x}\geq -\vec{x}^{T}D^{-\frac{1}{2}}AD^{-\frac{1}{2}}\vec{x} \Rightarrow \\ 2\vec{x}^{T}\vec{x}\geq \vec{x}^{T}\vec{x}-\vec{x}^{T}D^{-\frac{1}{2}}AD^{-\frac{1}{2}}\vec{x} \Rightarrow \\ 2\vec{x}^{T}\vec{x}\geq \vec{x}^{T}(I-D^{-\frac{1}{2}}AD^{-\frac{1}{2}})\vec{x} \Rightarrow \\ 2\vec{x}^{T}\vec{x}\geq \vec{x}^{T}D^{-\frac{1}{2}}(D-A)D^{-\frac{1}{2}}\vec{x} \Rightarrow \\ 2\vec{x}^{T}\vec{x}\geq \vec{x}^{T}L_{sym}\vec{x} \Rightarrow \\ 2\geq \frac{\vec{x}^{T}L_{sym}\vec{x}}{\vec{x}^{T}\vec{x}} x TLsymx 0x T(I+D21AD21)x 0x Tx +x TD21AD21x 0x Tx x TD21AD21x 2x Tx x Tx x TD21AD21x 2x Tx x T(ID21AD21)x 2x Tx x TD21(DA)D21x 2x Tx x TLsymx 2x Tx x TLsymx

Fourier Transform(傅里叶变换)

  • 傅里叶变换:研究同一个事物在不同的域不同的视角是怎么样的,以及在不同的域之间进行变换

  • 由傅里叶变换可以知道,任何周期函数,都可以看作是不同振幅,不同相位正弦波的叠加。

  • 由傅里叶变换,可以将函数从时域转换为频域;同时由傅里叶逆变换可以将频域再转换为时域。转换是无损的。

  • 为什么进行傅里叶变换?

    • 时域内不好处理的函数,转换为频域中的函数,可能就变得比较好操作。
  • 注:傅里叶变换是一种思想,基底不一定必须是正弦波函数,也可以是其他函数。

    例如:FFT算法

    • 已知 f ( x ) = a 0 + a 1 x + . . . + a n x n , g ( x ) = b 0 + b 1 x + . . . + b n x n f(x)=a_0+a_1x+...+a_nx^n, \\ g(x)=b_0+b_1x+...+b_nx^n f(x)=a0+a1x+...+anxn,g(x)=b0+b1x+...+bnxn 求解: f ( x ) g ( x ) f(x)g(x) f(x)g(x)

    • 即确定 f ( x ) g ( x ) = c 0 + c 1 x + . . . c 2 n x 2 n f(x)g(x)=c_0+c_1x+...c_{2n}x^{2n} f(x)g(x)=c0+c1x+...c2nx2n c 0 , c 1 , . . . c 2 n c_0,c_1,...c_{2n} c0,c1,...c2n的值。

    • 采用傅里叶变换思想:(转换为点域)

      n次多项式,可以由n+1个不同的点唯一的确定

      由傅里叶快速变换通过复杂度O(nlogn)可确定:

      f ( x ) ⇔ ( x 1 , f ( x 1 ) ) , ( x 2 , f ( x 2 ) ) , . . . ( x n + 1 , f ( x n + 1 ) ) g ( x ) ⇔ ( x 1 , g ( x 1 ) ) , ( x 2 , g ( x 2 ) ) , . . . ( x n + 1 , g ( x n + 1 ) ) f(x)\Leftrightarrow (x_1,f(x_1)), (x_2,f(x_2)),...(x_{n+1},f(x_{n+1}))\\g(x)\Leftrightarrow (x_1,g(x_1)), (x_2,g(x_2)),...(x_{n+1},g(x_{n+1})) f(x)(x1,f(x1)),(x2,f(x2)),...(xn+1,f(xn+1))g(x)(x1,g(x1)),(x2,g(x2)),...(xn+1,g(xn+1))

      由复杂度O(n)可确定:

      f ( x ) g ( x ) ⇔ ( x 1 , f ( x 1 ) g ( x 1 ) ) , ( x 2 , f ( x 2 ) g ( x 2 ) ) , . . . ( x n + 1 , f ( x n + 1 ) g ( x n + 1 ) ) f(x)g(x)\Leftrightarrow (x_1,f(x_1)g(x_1)), (x_2,f(x_2)g(x_2)),...(x_{n+1},f(x_{n+1})g(x_{n+1})) f(x)g(x)(x1,f(x1)g(x1)),(x2,f(x2)g(x2)),...(xn+1,f(xn+1)g(xn+1))

Graph上的傅里叶变换

  • 图像Image具有比较规则的拓扑结构,所以可以给定确定的kernel进行卷积。而图Graph的拓扑结构比较复杂,没办法给定确定的kernel进行卷积。

  • L x ⃗ L\vec x Lx

    L L L:拉普拉斯矩阵

    x ⃗ \vec x x :某个点的feature向量
    L x ⃗ = ( ∑ ( 1 , j ) ∈ E ( x 1 − x j ) ∑ ( 2 , j ) ∈ E ( x 2 − x j ) ⋮ ∑ ( n , j ) ∈ E ( x n − x j ) ) L\vec x=\left(\begin{matrix}\sum_{(1,j)\in E}(x_1-x_j)\\\sum_{(2,j)\in E}(x_2-x_j)\\\vdots\\\sum_{(n,j)\in E}(x_n-x_j)\end{matrix}\right) Lx =(1,j)E(x1xj)(2,j)E(x2xj)(n,j)E(xnxj)

    L x ⃗ L\vec x Lx 相当于对该点与其附近的点做了类似卷积的操作

    • 根据 L L L是一个实对称且半正定的矩阵
      L x ⃗ = U Λ U T x ⃗ L\vec x=U\Lambda U^{T}\vec x Lx =UΛUTx
      这样在新的域内,卷积操作类似于:对 x ⃗ \vec x x 乘以 U T U^T UT进行变换,然后再乘以 Λ \Lambda Λ进行不同维度的放缩,最后再进行逆变换 U U U,这将使得卷积操作变得简单很多。
  • 对于Graph的拉普拉斯矩阵 L L L进行特征分解的复杂度过高 O ( n 2 ) O(n^2) O(n2),所以GCN对图Graph进行限制,不需要再进行求解特征矩阵来实现图卷积,以此减少复杂度

GCN

  • 假设已经有函数 F ( A ) → L F(A)\rightarrow L F(A)L或者 F ( A ) → L s y m F(A)\rightarrow L_{sym} F(A)Lsym或者 F ( A ) → 实 对 称 矩 阵 F(A)\rightarrow 实对称矩阵 F(A)

    • 那么 F ( A ) = U Λ U T F(A)=U\Lambda U^T F(A)=UΛUT

    • 则图上的卷积操作可以定义为 g θ ⋆ x ⃗ = θ L x ⃗ = θ U Λ U T x ⃗ = U g θ ( Λ ) U T x ⃗ g_{\theta}\star\vec{x}=\theta L\vec x=\theta U\Lambda U^T \vec x=Ug_{\theta}(\Lambda)U^T \vec x gθx =θLx =θUΛUTx =Ugθ(Λ)UTx

      即对于 x ⃗ \vec x x 先乘以 U T U^T UT转换为频域上操作,再进行不同维度的缩放(缩放函数 g θ ( Λ ) g_{\theta}(\Lambda) gθ(Λ)即为训练的目标函数),最后再乘以 U U U转换回原来的域,即完成了对周围点的卷积。

    • 为了不再求特征分解,我们对 g θ ( Λ ) g_{\theta}(\Lambda) gθ(Λ)进行限制:

      限制 g θ ( Λ ) g_{\theta}(\Lambda) gθ(Λ)可以用多项式进行表示,即:

      g θ ( Λ ) = θ 0 Λ 0 + θ 1 Λ 1 + . . . + θ n Λ n + . . . g_{\theta}(\Lambda)=\theta_0\Lambda^0+\theta_1\Lambda^1+...+\theta_n\Lambda^n+... gθ(Λ)=θ0Λ0+θ1Λ1+...+θnΛn+...

      那么 U g θ ( Λ ) U T = g θ ( U Λ U T ) = g θ ( F ( A ) ) Ug_{\theta}(\Lambda)U^T=g_{\theta}(U\Lambda U^T)=g_{\theta}(F(A)) Ugθ(Λ)UT=gθ(UΛUT)=gθ(F(A))

      等式成立原因: ( U Λ U T ) k = U Λ U T U Λ U T . . . U Λ U T = U Λ k U T (U\Lambda U^T)^k=U\Lambda U^TU\Lambda U^T...U\Lambda U^T=U\Lambda ^k U^T (UΛUT)k=UΛUTUΛUT...UΛUT=UΛkUT

      实际操作时,并不会采用线性函数来拟合 g θ ( Λ ) = θ 0 Λ 0 + θ 1 Λ 1 + . . . + θ n Λ n + . . . g_{\theta}(\Lambda)=\theta_0\Lambda^0+\theta_1\Lambda^1+...+\theta_n\Lambda^n+... gθ(Λ)=θ0Λ0+θ1Λ1+...+θnΛn+...,因为可能会产生梯度消失或梯度爆炸的情况,所以往往采用切比雪夫多项式
      T n ( x ) = 2 x T n − 1 − T n − 2 ( x ) T 0 ( x ) = 1 , T 1 ( x ) = x T_n(x)=2xT_{n-1}-T_{n-2}(x)\\T_0(x)=1,T_1(x)=x Tn(x)=2xTn1Tn2(x)T0(x)=1,T1(x)=x

      • 切比雪夫多项式不会发生梯度消失或梯度爆炸的情况,因为它满足性质:

        T n ( cos ⁡ θ ) = cos ⁡ n θ T_n(\cos \theta)=\cos n\theta Tn(cosθ)=cosnθ

        即自变量取值[-1,1]时,无论n多大,函数都有一个规律的波动。

  • 所以我们只需要保证输入的x的取值在[-1,1]之间即可,前文已经证明过 L s y m L_{sym} Lsym的特征值的取值范围为[0,2],所以只要将其转换到[-1,1]之间即可。

    F ( A ) = L s y m − I F(A)=L_{sym}-I F(A)=LsymI

  • 则图上的卷积操作可以定义为
    g θ ⋆ x ⃗ = U g θ ( Λ ) U T x ⃗ = U ( ∑ k = 0 k θ k T k ( Λ ) ) U T x ⃗ = ∑ k = 0 k θ k T k ( U Λ U T ) x ⃗ = ∑ k = 0 k θ k T k ( L s y m − I ) x ⃗ g_{\theta}\star \vec{x}=Ug_{\theta}(\Lambda)U^T \vec x=U(\sum_{k=0}^{k}\theta_kT_k(\Lambda))U^T\vec{x}\\=\sum_{k=0}^{k}\theta_kT_k(U\Lambda U^T)\vec x=\sum_{k=0}^{k}\theta_kT_k(L_{sym}-I)\vec x gθx =Ugθ(Λ)UTx =U(k=0kθkTk(Λ))UTx =k=0kθkTk(UΛUT)x =k=0kθkTk(LsymI)x

    • 为了进一步缩小计算量,GCN只考虑k<2的情况

    g θ ⋆ x ⃗ = ∑ k = 0 k θ k T k ( L s y m − I ) x ⃗ ≈ ( θ 0 T 0 ( L s y m − I ) + θ 1 T 1 ( L s y m − I ) ) x ⃗ = θ 0 x ⃗ + θ 1 ( L s y m − I ) x ⃗ g_{\theta}\star\vec{x}=\sum_{k=0}^{k}\theta_kT_k(L_{sym}-I)\vec x\approx(\theta_0T_0(L_{sym}-I)+\theta_1T_1(L_{sym}-I))\vec{x}\\=\theta_0\vec x+\theta_1(L_{sym}-I)\vec x gθx =k=0kθkTk(LsymI)x (θ0T0(LsymI)+θ1T1(LsymI))x =θ0x +θ1(LsymI)x

    又由:
    L s y m = D − 1 2 L D − 1 2 = D − 1 2 ( D − A ) D − 1 2 = I − D − 1 2 A D − 1 2 L_{sym}=D^{-\frac{1}{2}}LD^{-\frac{1}{2}}=D^{-\frac{1}{2}}(D-A)D^{-\frac{1}{2}}=I-D^{-\frac{1}{2}}AD^{-\frac{1}{2}} Lsym=D21LD21=D21(DA)D21=ID21AD21
    所以:
    g θ ⋆ x ⃗ = θ 0 x ⃗ − θ 1 D − 1 2 A D − 1 2 x ⃗ g_{\theta}\star\vec{x}=\theta_0\vec x-\theta_1D^{-\frac{1}{2}}AD^{-\frac{1}{2}}\vec x gθx =θ0x θ1D21AD21x

  • 然后GCN在推导过程中使用了一些正则化和trick:

    • 正则化: θ 0 \theta_0 θ0 θ 1 \theta_1 θ1共享参数 θ = θ 1 = − θ 0 \theta=\theta_1=-\theta_0 θ=θ1=θ0

    g θ ⋆ x ⃗ = θ ( I + D − 1 2 A D − 1 2 ) x ⃗ g_{\theta}\star\vec{x}=\theta(I+D^{-\frac{1}{2}}AD^{-\frac{1}{2}})\vec x gθx =θ(I+D21AD21)x

    • 变化:
      g θ ⋆ x ⃗ = θ D ~ − 1 2 A ~ D ~ − 1 2 x ⃗ g_{\theta}\star\vec{x}=\theta \tilde D^{-\frac{1}{2}}\tilde A\tilde D^{-\frac{1}{2}}\vec x gθx =θD~21A~D~21x

过程中使用了一些正则化和trick:

  • 正则化: θ 0 \theta_0 θ0 θ 1 \theta_1 θ1共享参数 θ = θ 1 = − θ 0 \theta=\theta_1=-\theta_0 θ=θ1=θ0

g θ ⋆ x ⃗ = θ ( I + D − 1 2 A D − 1 2 ) x ⃗ g_{\theta}\star\vec{x}=\theta(I+D^{-\frac{1}{2}}AD^{-\frac{1}{2}})\vec x gθx =θ(I+D21AD21)x

  • 变化:
    g θ ⋆ x ⃗ = θ D ~ − 1 2 A ~ D ~ − 1 2 x ⃗ g_{\theta}\star\vec{x}=\theta \tilde D^{-\frac{1}{2}}\tilde A\tilde D^{-\frac{1}{2}}\vec x gθx =θD~21A~D~21x

你可能感兴趣的:(GNN,神经网络,深度学习,机器学习,gcn)