图卷积神经网络

图卷积神经网络概述

要将图像上的卷积拓展到图上,需要定义一种新的图卷积方法。然后就演变出了两种方法

  • Spectral method:用 spectral domain 来定义卷积。

    • 通过图上的傅里叶变换来定义卷积
    • 主要的挑战是卷积滤波器不是局部化的,这个是个致命的缺点
  • Spatial method:用 vertex domain 来定义卷积。类比于图像上的二维卷积,照葫芦画瓢

Spectral method

1. Spectral method for graph convolutional neural networks

1.相关概念

给定一个图 G = ( V , E , W ) G=(V,E,W) G=(V,E,W) , V V V 是节点集合,假设有 n n n 个节点, W ∈ R n × n W\in R^{n\times n} WRn×n 是邻接矩阵,每个节点还有 d d d 维特征, x ∈ R n × d x\in R^{n \times d} xRn×d 是节点们的特征向量矩阵。

Laplacian 矩阵

L = D − W L=D-W L=DW , D D D 是一个对角矩阵并且 D i i = ∑ j W i , j D_{ii}=\sum_jW_{i, j} Dii=jWi,j

normalized Laplacian 矩阵

L = I − D − 1 2 W D − 1 2 L=I-D^{-\frac{1}{2}}WD^{-\frac{1}{2}} L=ID21WD21

2.图上的傅里叶变换

  • 图上的傅里叶

傅里叶变换的一系列的正交基 { u l } l = 1 n \{u_l\}_{l=1}^n {ul}l=1n 通过其特征值 { λ l } l = 1 n \{\lambda_l\}_{l=1}^n {λl}l=1n ,然后图 Laplacian 矩阵就可以被对角化 L = U Λ U T L=U\Lambda U^T L=UΛUT,其中 U = [ u 1 , ⋯   , u n ] U=[u_1, \cdots, u_n] U=[u1,,un] Λ = d i a g ( [ λ 1 , ⋯   , λ n ] ) \Lambda=diag([\lambda_1, \cdots, \lambda_n]) Λ=diag([λ1,,λn])

  • 图傅里叶变换

    单个向量 x ∈ R n x\in R^n xRn 的图傅里叶变换为 x ^ = U T x \hat{x}=U^Tx x^=UTx ,逆变换为 x = U x ^ x=U\hat{x} x=Ux^

3.定义 spectral domain 上的卷积

卷积定理:两个信号的卷积可以看作他们的傅里叶变换的卷积,如下面公式所示,其中 ∗ G *_G G 代表卷积算子。

x ∗ G y = U ( ( U T x ) ⊙ ( U T y ) ) x *_G y = U((U^Tx)\odot (U^Ty)) xGy=U((UTx)(UTy))

其中 ⊙ \odot 代表 point-wise 乘积,spectraldomain 里的卷积核就是 U T y U^T y UTy

U T y = [ θ 0 , ⋯   , θ n − 1 ] U^Ty=[\theta_0,\cdots,\theta_{n-1}] UTy=[θ0,,θn1] 并且 g θ = d i a g ( [ θ 0 , ⋯   , θ n − 1 ] ) g_\theta = diag([\theta_0, \cdots, \theta_{n-1}]) gθ=diag([θ0,,θn1]) ,我们有

x ∗ G y = U g θ U T x x *_G y = Ug_{\theta}U^Tx xGy=UgθUTx

到此可以写出 Spectral Graph CNN,

x k + 1 , j = h ( ∑ i = 1 f k U F k , i , j U T x k , i ) , j = 1 , ⋯   , f k + 1 x_{k+1, j}=h(\sum_{i=1}^{f_k}UF_{k, i, j}U^Tx_{k, i}), j=1,\cdots, f_{k+1} xk+1,j=h(i=1fkUFk,i,jUTxk,i),j=1,,fk+1

其中 x k , i x_{k, i} xk,i 式第 k k k 层的信号向量, F k , i , j F_{k, i, j} Fk,i,j 是第 k k k 层的 filter。

4. Spectral graph CNN 的缺点

  • 要求出 Laplacian 矩阵的特征分解,要显式的求出矩阵 U U U
  • 矩阵相乘的次数太多,计算复杂度太高。是 O ( n 2 ) O(n^2) O(n2)
  • 不是局部化的,用的信息不是局部点的信息。

2.ChebyNet: parameterizing filter

为了解决 spectral graph cnn 的三个缺点,考虑用多项式近似参数化卷积核,

g θ = d i a g ( [ θ 0 , ⋯   , θ n − 1 ] ) → g β ( Λ ) = ∑ k = 0 K − 1 β k Λ k , Λ = d i a g ( λ 1 , λ 2 , ⋯   , λ n ) g_{\theta}=diag([\theta_0, \cdots, \theta_{n-1}])\rightarrow g_{\beta}(\Lambda)=\sum_{k=0}^{K-1}\beta_k\Lambda^k, \Lambda=diag(\lambda_1, \lambda_2, \cdots, \lambda_n) gθ=diag([θ0,,θn1])gβ(Λ)=k=0K1βkΛk,Λ=diag(λ1,λ2,,λn)

x ∗ G y = U g β ( Λ ) U T x = ∑ k = 0 K − 1 β k L k x x *_G y = Ug_{\beta}(\Lambda)U^Tx=\sum_{k=0}^{K-1}\beta_kL^kx xGy=Ugβ(Λ)UTx=k=0K1βkLkx

这样形式有几个好处

  • 不需要做特征分解了。
  • 计算复杂度从 O ( n 2 ) O(n^2) O(n2) 降到了 O ( ∣ E ∣ ) O(|E|) O(E)
  • 卷积运算是局部的了,因为有 L k x L^kx Lkx 的操作

Spatial method

通过与图像上的卷积神经网络类比。图像上的卷积步骤:

  1. 确定领域。
  2. 给领域定序。
  3. 参数共享。

通过类比,确定了图卷积神经网络(spatial method)的步骤:

  1. 对于每个节点,从它的邻居们中选出固定个数的节点作为邻居。(一阶邻居不够二阶来凑)
  2. 按距离来定序。
  3. 参数共享。

1.GraphSAGE

  • Sampling neighbors
  • Aggregating neighbors

a v ( k ) = A G G R E G A T E ( k ) ( { h u ( k − 1 ) : u ∈ N ( v ) } ) a_v^{(k)}=AGGREGATE^{(k)}(\{h_u^{(k-1)}:u\in \mathcal{N}(v)\}) av(k)=AGGREGATE(k)({hu(k1):uN(v)})

h v ( k ) = C O M B I N E ( k ) ( h v ( k − 1 ) , a v ( k ) ) h_v^{(k)}=COMBINE^{(k)}(h_v^{(k-1)},a_v^{(k)}) hv(k)=COMBINE(k)(hv(k1),av(k))

因为有了聚合函数,就不再需要给邻居定序了。(是 GCN 到 GNN 的过渡)

2.GCN: Graph Convolution Network

  • 通过规范化的 Laplacian 矩阵聚合信息。
  • 在特征变换里共享参数。
  • 是 ChebyNet 的一阶推导。

Z = f ( X , A ) = s o f t m a x ( A ^ R e l u ( A ^ X W ( 0 ) ) W ( 1 ) ) Z=f(X, A)=softmax(\hat{A}Relu(\hat{A}XW^{(0)})W^{(1)}) Z=f(X,A)=softmax(A^Relu(A^XW(0))W(1))

GCN 里面其实没有参数化的卷积,其中 W ( 0 ) W^{(0)} W(0) W ( 1 ) W^{(1)} W(1) 是用来做特征变换的,类似全连接神经网络。唯一一个起到卷积作用的是 A ^ \hat{A} A^,是图的规范化的 Laplacian 矩阵,是一个给定的矩阵,相当于卷积的硬编码。

3.GAT: Graph Attention Network

https://doi.org/10.48550/arXiv.1710.10903

为了解决 GCN 中没有可学习的卷积参数的问题。

  • 通过注意力机制学习一个聚合矩阵,在上面的 GCN 里聚合矩阵就是 Laplacian 矩阵。

  • 通过两个部分共享参数。

    1. 特征变换部分的参数 W W W
    2. 注意力机制的参数 a ⃗ \vec{a} a

α i , j = e x p ( L e a k y R e l u ( a ⃗ T [ W h i ⃗ ∣ ∣ W h j ⃗ ] ) ) / ∑ k ∈ N i e x p ( L e a k y R e l u ( a ⃗ T [ W h i ⃗ ∣ ∣ W h k ⃗ ] ) ) \alpha_{i, j}=exp(LeakyRelu(\vec{a}^T[W\vec{h_i}||W\vec{h_j}]))/\sum_{k\in \mathcal{N}_i}exp(LeakyRelu(\vec{a}^T[W\vec{h_i}||W\vec{h_k}])) αi,j=exp(LeakyRelu(a T[Whi Whj ]))/kNiexp(LeakyRelu(a T[Whi Whk ]))

|| 代表拼接操作。

3.MoNet: A general framework for spatial methods

空间方法的一般框架

  • 定义多个核函数,无论是否是参数化的。然后衡量中心节点和其他节点的相似度。
  • 卷积核是这些核函数的加权和。

( f ∗ g ) ( x ) = ∑ j = 1 J g j D j ( x ) f (f*g)(x)=\sum_{j=1}^{J}g_jD_j(x)f (fg)(x)=j=1JgjDj(x)f

g j g_j gj 是卷积核。

Spectral CNN

y = U g θ U T x = ( θ 1 u 1 u 1 T + θ 2 u 2 u 2 T + ⋯ + θ n u n u n T ) x y=Ug_{\theta}U^Tx=(\theta_1u_1u_1^T+\theta_2u_2u_2^T+\cdots+\theta_nu_nu_n^T)x y=UgθUTx=(θ1u1u1T+θ2u2u2T++θnununT)x

ChebyNet

y = ( θ 0 I + θ 1 L + θ 2 L 2 + ⋯ + θ K − 1 L K − 1 ) x y=(\theta_0I+\theta_1L+\theta_2L^2+\cdots+\theta_{K-1}L^{K-1})x y=(θ0I+θ1L+θ2L2++θK1LK1)x

GCN

y = θ ( 1 − L ) x y=\theta(1-L)x y=θ(1L)x

spatial method 和 spectral method 的联系:

都可以由上面的公式概括, D j ( x ) D_j(x) Dj(x) 就是核函数,定义了节点之间的相似度和距离。

spatial method 和 spectral method 的不同:

  • spectral method 通过显式直接定义出空间变换,投影到谱空间。
  • spatial method 直接定义核函数。

Graph Pooling

1.Graph coarsening

  • 将节点聚类,将每个簇作为一个代表节点。(应用一些图聚类的方法)
  • 节点聚类过程也参数化,文章:https://proceedings.neurips.cc/paper/2018/file/e77dbaf6759253c7c6d0efc5690369c7-Paper.pdf

2.Node selection

  • 将节点聚类,从簇中根据测度函数(自定义或者参数化)衡量节点的重要性去选择代表性节点。

你可能感兴趣的:(深度学习,深度学习)