GNN之GCN基础理论推导

图卷积graph convolutional network,简称GCN,最近几年大热,取得不少进展。

清华大学孙茂松教授组发布了Graph Neural Networks: A Review of Methods and Application,对现有的GNN模型做了详尽且全面的综述。

针对GCN中需要的基础理论知识,这里给出数学推导,方便理解。

一、什么是Convolution

Convolution的数学定义是:

(f\ast g)(t)= \int _{R} f(x)g(t-x)dx,一般称g为作用在f上的filter或kernel。

常见的CNN二维卷积示意图如下:

GNN之GCN基础理论推导_第1张图片

在图像(image)里,卷积的概念很直接,因为像素点的排列顺序有明确的上下左右的位置关系。

但是在抽象的graph里,有的节点会关联上万的节点,这些节点没有空间上的位置关系,也就没办法通过上面的传统卷积公式进行计算。

二、Fourier变换

为了解决graph上卷积计算的问题,需要用到Fourier变换。

根据卷积定理,卷积公式还可以写成:f\ast g = \mathit{F}^{-1}\{F\{f\}}\cdot F\{g\}\} ,这样只需要定义graph上的fourier变换,就可以定义出graph上的convolution变换。

首先,看一下Fourier变换的定义:

F\{f\}(v) = \int _{\mathbb{R}}f(x) e^{-2\pi ix \cdot v} dx

Inverse Fourier变换则是:

F^{-1}\{f\}(x) = \int _{\mathbb{R}}f(v) e^{-2\pi ix \cdot v} dv

根据Fourier变换及其逆变换的定义,下面我们来证明一下卷积定理:

我们定义 h 是 f 和 g 的卷积,那么 h(x) = \int _{\mathbb{R}} f(x) g(z-x) dx

F \{f \ast g \}(v) &= F\{h\}(v) = \int _{\mathbb{R}}h(z) e^{-2\pi iz\cdot v}dz\\ &= \int _{\mathbb{R}} \int _{\mathbb{R}} f(x)g(z-x)e^{-2\pi iz\cdot v}dx dz\\ &=\int _{\mathbb{R}} f(x) (\int _{\mathbb{R}} g(z-x) e^{-2\pi iz\cdot v }dz )dx

y=z-x; dy = dz,代入上式:

F \{f \ast g \}(v) =\int _{\mathbb{R}} f(x) (\int _{\mathbb{R}} g(y) e^{-2\pi i(y+x)\cdot v }dy) dx \\ = \int _{\mathbb{R}} f(x) e^{-2\pi ix\cdot v } (\int _{\mathbb{R}} g(y) e^{-2\pi iy\cdot v }dy)) dx \\ = \int _{\mathbb{R}} f(x) e^{-2\pi ix\cdot v }dx \int _{\mathbb{R}} g(y) e^{-2\pi iy \cdot v }dy \\ = F \{f\} (v) \cdot F \{g\} (v)

最后对等式的两边同时作用 F^{-1},得到  f \ast g = F^{-1} \{ F\{f\} \cdot F \{g\} \}

三、Laplacian算子

我们高数中学过,一阶导数定义为 f^{'} (x) = \lim_{h \to 0} \frac{f(x+h)-f(x)}{h}

Laplacian算子简单的来说就是二阶导数:\Delta f(x) ^{'} = \lim_{h \to 0} \frac{f(x+h) - 2f(x) + f(x-h)}{h^{2}}

在graph中,可以定义一阶导数为: [f \ast g]^{'} (x) = f(x) - f(y) ,其中 y 是 x 的邻居节点。

那么对应的Laplacian算子可以定义为 \Delta (f \ast g)^{'} (x) = \sum_{y\sim x} f(x)-f(y).

定义 D 是 N \times N 的度数矩阵(degree matrix),定义 A 为 N\times N 的邻接矩阵(adjacency matrix):

D(i,j) = \left\{\begin{matrix} d_{i} &if \ i=j \\ 0& otherwise \end{matrix}\right.                      A(i,j) = \left\{\begin{matrix} 1 &if \ x_{i}\sim x_{j} \\ 0& otherwise \end{matrix}\right.

那么graph上的Laplacian算子可以写成 L = D- A

定义Laplacian算子的目的是为了找到Fourier变换的基。

  传统Fourier变换 Graph Fourier变换
Fourier变换基 e^{-2 \pi ixv} U^{T}
逆Fourier变换基 e^{2 \pi ixv} U
维度 \infty 点的个数n

用矩阵形式来表示Graph Fourier变换:\boldsymbol{gF}\{x\} = U^{T}x

你可能感兴趣的:(GNN)