GNN-频域-2014:Spectral Networks and Locally Connected Networks on Graphs(频谱图卷积神经网络)【第一篇从频域角度分析】

《原始论文:Spectral Networks and Locally Connected Networks on Graphs》

空域卷积非常直观地借鉴了图像里的卷积操作,但缺乏一定的理论基础。

而频域卷积则不同,相比于空域卷积而言,它主要利用的是**图傅里叶变换(Graph Fourier Transform)**实现卷积。

简单来讲,它利用图的**拉普拉斯矩阵(Laplacian matrix)**导出其频域上的的拉普拉斯算子,再类比频域上的欧式空间中的卷积,

导出图卷积的公式。虽然公式的形式与空域卷积非常相似,但频域卷积的推导过程却有些艰深晦涩。

接下来我们将攻克这部分看起来很难的数学公式,主要涉及到傅里叶变换(Fourier Transform)拉普拉斯算子(Laplacian operator)

一、前置内容

如上所述,我们将介绍两个主要的知识点:

  • 傅里叶变换
  • 拉普拉斯算子

在介绍之前,我们先抛出两个问题:1. 什么是傅里叶变换; 2. 如何将傅里叶变换扩展到图结构上。

1、傅里叶变换(Fourier Transform)

借用维基百科的说法,傅里叶变换(Fourier Transform, FT)会将一个在空域(或时域)上定义的函数分解成频域上的若干频率成分。

换句话说,傅里叶变换可以将一个函数从空域变到频域。

先抛开傅里叶变换的数学公式不谈,用 F F F 来表示傅里叶变换的话,我们先讲一个很重要的恒等式:

( f ∗ g ) ( t ) = F − 1 [ F [ f ( t ) ] ⊙ F [ g ( t ) ] ] (f*g)(t)=F^{-1}[F[f(t)]{\odot}F[g(t)]] (fg)(t)=F1[F[f(t)]F[g(t)]]

这里的 F − 1 F^{-1} F1指的是傅里叶逆变换, ⊙ \odot 是哈达玛乘积,指的是两个矩阵(或向量)的逐点乘积(Element-wise Multiplication)。仔细观察上面这个公式,它的直观含义可以用一句话来概括:空(时)域卷积等于频域乘积。简单来说就是,如果要算 f f f g g g 的卷积,可以先将它们通过傅里叶变换变换到频域中,将两个函数在频域中相乘,然后再通过傅里叶逆变换转换出来,就可以得到 f f f g g g 的卷积结果。下面的动图形象地展示了傅里叶变换的过程,这里我们把函数 f f f 傅里叶变换后的结果写作 f ^ \hat{f} f^.

在这里插入图片描述

那傅里叶变换能干啥呢,有一个简单的应用是给图像去除一些规律噪点。比如说下面这个例子,原图来自知乎 《https://www.zhihu.com/question/20460630/answer/105888045》

在傅里叶变换前,图像上有一些规律的条纹,直接在原图上去掉条纹有点困难,但我们可以将图片通过傅里叶变换变到频谱图中,频谱图中那些规律的点就是原图中的背景条纹。

傅里叶变换的示例

只要在频谱图中擦除这些点,就可以将背景条纹去掉,得到下图右侧的结果。

傅里叶变换的示例

除了可以用来分离噪声点与正常点,傅里叶变换还凭借上面的恒等式,在加速卷积运算方面有很大的潜力,快速傅里叶变换(Fast Fourier Transform)也是由此而生。

实际上呢,现在大家最常用的卷积神经网络,完全可以搭配傅里叶变换。

下面这张图就表示了一个普通的卷积神经网络如何与傅里叶变换搭配,其中的 IFFT 即 快速傅里叶变换的逆变换(Inverse Fast Fourier Transform

在这里插入图片描述

既然FFT可以加速卷积神经网络,为什么现在的卷积神经网络不用呢?

主要原因:我们现在的卷积神经网络的核都很小,常见的都如1,3,5之类,卷积操作的时间开销本来就不大。如果要搭配FFT,还需要做傅里叶变换与逆变换,时间开销并不一定会减小。

说了这么半天,傅里叶变换的公式是什么样呢?

实际上, f f f经过傅里叶变换后的结果 f ^ \hat{f} f^就如下所示,其中 i = − 1 i=\sqrt{-1} i=1 (虚数单位),t是任意实数。

f ^ ( t ) = ∫ f ( x ) exp ⁡ − 2 π i x t d x \hat{f}(t)={\int}f(x){\exp}^{-2{\pi}ixt}dx f^(t)=f(x)exp2πixtdx

感兴趣的同学可以深入研究一下傅里叶变换这一套,我们这里关心的实际上是 exp ⁡ − 2 π i x t {\exp}^{-2{\pi}ixt} exp2πixt的物理意义,它是图上类比构造傅里叶变换的关键。这个式子实际上是拉普拉斯算子 ∆ ∆ 的广义特征函数。

拉普拉斯算子(Laplacian operator) 的物理意义是空间二阶导,准确定义是:标量梯度场中的散度,一般可用于描述物理量的流入流出。比如说在二维空间中的温度传播规律,一般可以用拉普拉斯算子来描述。

为什么是特征函数呢,我们这里根据拉普拉斯算子的定义来稍微推导一下。众所周知,特征向量需要满足的定义式是:对于矩阵 A A A,其特征向量满足的条件应是矩阵与特征向量 x x x做乘法的结果,与特征向量乘标量 λ \lambda λ的结果一样,即满足如下等式。

A x = λ x Ax={\lambda}x Ax=λx

稍微推导一下即可知道,拉普拉斯算子作用在 exp ⁡ − 2 π i x t {\exp}^{-2{\pi}ixt} exp2πixt确实满足以上特征向量的定义:

∆ exp ⁡ − 2 π i x t = ∂ 2 ∂ t 2 exp ⁡ − 2 π i x t = − 4 π 2 x 2 exp ⁡ − 2 π i x t ∆{\exp}^{-2{\pi}ixt}=\frac{ {\partial}^2}{ {\partial}t^2}{\exp}^{-2{\pi}ixt}={-4{\pi}^2x^2}{\exp}^{-2{\pi}ixt} exp2πixt=t22exp2πixt=4π2x2exp2πixt

这里 ∂ \partial 是求导符号, ∂ 2 \partial^2 2是二阶导。

实际上,再仔细观察傅里叶变换的式子,它本质上是将函数 f ( t ) f(t) f(t)映射到了以 { exp ⁡ − 2 π i x t } \{ {\exp}^{-2{\pi}ixt}\} { exp2πixt}为基向量的空间中。

2、图上的傅里叶变换

终于讲到我们本节的重点内容了,上面我们絮絮叨叨地铺垫了很多傅里叶变换的知识,主要是为了将傅里叶变换类比到图上。那么问题来了:在图上,我们去哪找拉普拉斯算子 ∆ ∆ exp ⁡ − 2 π i x t {\exp}^{-2{\pi}ixt} exp2πixt呢?

聪明的研究者们找到了图的拉普拉斯矩阵(L)及其特征向量( u u u),作为上述两者的替代品。至此,形成了图上傅里叶变换的生态系统。拉普拉斯矩阵,实际上是度矩阵(D)减去邻接矩阵(A) L = D − A L=D-A L=DA,如下图所示,图源自[14].

拉普拉斯矩阵

频域卷积的前提条件是图必须是无向图,那么 L L L就是对称矩阵。所以它可以按照如下公式分解:

L = U Λ U T L = U{\Lambda}U^{T} L=UΛUT
U = ( u 1 , u 2 , ⋯ , u n ) U = (u_1, u_2,{\cdots},u_n) U=(u1,u2,,un)
Λ = [ λ 1 . . . 0 . . . . . . . . . 0 . . . λ n ] {\Lambda}=\left[ \begin{matrix} {\lambda}_1 & ... & 0 \\ ... & ... & ... \\ 0 & ... & {\lambda}_n \end{matrix} \right] Λ=λ1...0.........0...λn

那么,根据上面卷积与傅里叶结合的变换公式,图上频域卷积的公式便可以写成 f ^ ( t ) = ∑ n = 1 N f ( n ) u t ( n ) \hat{f}(t)={\sum}_{n=1}^{N}f(n)u_t(n) f^(t)=n=1Nf(n)ut(n)。如果在整个图的 N N N个结点上一起做卷积,就可以得到整张图上的卷积如下:

f ^ = [ f ^ ( 1 ) . . . f ^ ( N ) ] = U T f {\hat{f}}=\left[ \begin{matrix} {\hat{f}}(1) \\ ... \\ {\hat{f}}(N) \end{matrix} \right]=U^Tf f^=f^(1)...f^(N)=UTf

让我们重新审视一下欧式空间上的卷积和图上的卷积,即可明白图上的卷积与传统的卷积其实非常相似,这里 f f f 都是特征函数, g g g 都是卷积核:

( f ∗ g ) = F − 1 [ F [ f ] ⊙ F [ g ] ] (f*g)=F^{-1}[F[f]{\odot}F[g]] (fg)=F1[F[f]F[g]]
( f ∗ G g ) = U ( U T f ⊙ U T g ) = U ( U T g ⊙ U T f ) (f{*}_{G}g)=U(U^Tf{\odot}U^Tg)=U(U^Tg{\odot}U^Tf) (fGg)=U(UTfUTg)=U(UTgUTf)

如果把 U T g U^Tg UTg 整体看作可学习的卷积核,这里我们把它写作 g θ g_{\theta} gθ。最终图上的卷积公式即是:

o = ( f ∗ G g ) θ = U g θ U T f o = (f*_{G}g)_{\theta} = Ug_{\theta}U^Tf o=(fGg)θ=UgθUTf

接下来我们要介绍的图上频域卷积的工作,都是在 g θ g_{\theta} gθ的基础上做文章。

二、频域卷积网络(Spectral CNN)

我们上面推导的这个 g θ g_{\theta} gθ 就是首个提出的频域卷积神经网络的卷积核[15]。假设 l l l层的隐藏状态为 h l ∈ R N × d l h^l{\in}{R}^{N{\times}d_l} hlRN×dl,类似地,第 l + 1 l+1 l+1层为 h l + 1 ∈ R N × d l + 1 h^{l+1}{\in}{R}^{N{\times}d_{l+1}} hl+1RN×dl+1。频域卷积层的状态更新计算公式如下:

h : , j l + 1 = σ ( U ∑ i = 1 d l Θ i , j l U T h : , i l ) h^{l+1}_{:,j}={\sigma}(U{\sum}_{i=1}^{d_l}{\Theta}^l_{i,j}U^Th^l_{:,i}) h:,jl+1=σ(Ui=1dlΘi,jlUTh:,il)

Θ i , j l = g θ = [ θ 1 . . . 0 . . . . . . . . . 0 . . . θ N ] {\Theta}^l_{i,j}=g_{\theta}= \left[ \begin{matrix} {\theta}_1 & ... & 0 \\ ... & ... & ... \\ 0 & ... & {\theta}_N \end{matrix} \right] Θi,jl=gθ=θ1...0.........0...θN

仔细观察上式,可以发现一层卷积层参数有 N × d l × d l + 1 N{\times}d_l{\times}d_{l+1} N×dl×dl+1个。这里的 Θ i , j l {\Theta}^l_{i,j} Θi,jl其实可以类比全连接神经网络中的权重 w i , j w_{i,j} wi,j,为了方便读者理解,笔者做了下面的示意图:

在这里插入图片描述




参考资料:
如何理解 Graph Convolutional Network(GCN)?
从图(Graph)到图卷积(Graph Convolution):漫谈图神经网络模型 (二)




猜你喜欢

转载自blog.csdn.net/u013250861/article/details/121071557