图卷积神经网络

2023-01-10  本文已影响0人  Platanuses

本文需要读者对卷积神经网络有基本的了解,如果有上过《信号与系统》这么课,对卷积、傅里叶变换有所了解就更好了。

卷积神经网络适用于具有一个欧几里得域的数据,如图像具有空域,声音具有时域,分别能用二维和一维的序列来表达,与同一个域中的卷积核继续卷积。但图没有一个域,要怎么进行卷积呢?

1. 图的扩展

一个无向图 G(V,E) 由一个顶点的集合 V 和一个边的集合 E 构成,其中 V 包含 n 个顶点,E 包含 m 条边,每个顶点有一个值 f[i]=f_i 组成一个向量 \vec f,每条边有一个权值 w(i,j)=w_{i,j}
V=\{v_i\ |\ i=1,\cdots,n\} E=\{e_{i,j}\ |\ i<j,\ i,j=1,\cdots,n\} \vec f=[f_1,\cdots,f_n]^T

1.1. 图的拉普拉斯矩阵

对于连续函数而言,拉普拉斯算子之于一个 n 元函数 f(x_1,\cdots,x_n) 为其各偏导之和:
\nabla^2 f=\sum_{i=1}^n\frac{\partial^2 f}{\partial x_i^2}

类似地,对于图的一个顶点 v_i 而言,其拉普拉斯算子为:
\nabla^2 f[i]=\sum_{j,\ j\ne i}w_{i,j}(f_i-f_j)

这样定义的意义也很明显,之所以用边的权值相乘,因为权值可以理解为两点之间的关联程度的高低,那么其倒数即表示两点之间的距离(关联越低则距离越大),在这里扮演着偏导中分母的角色。

我们观察一个包含三个顶点 a,b,c 的图,且每两个顶点之间都有一条边相连,有:
\nabla^2 f[a]=w_{a,b}(f_a-f_b)+w_{a,c}(f_a-f_c) \nabla^2 f[b]=w_{a,b}(f_b-f_a)+w_{b,c}(f_b-f_c) \nabla^2 f[c]=w_{a,c}(f_c-f_a)+w_{b,c}(f_c-f_b)

将三个顶点处的拉普拉斯算子取值组成一个矩阵,有:
\begin{aligned} \left [ \matrix{ \nabla^2 f[a] \cr \nabla^2 f[b] \cr \nabla^2 f[c] } \right ] & = \left [ \matrix{ w_{a,b}(f_a-f_b)+w_{a,c}(f_a-f_c) \cr w_{a,b}(f_b-f_a)+w_{b,c}(f_b-f_c) \cr w_{a,c}(f_c-f_a)+w_{b,c}(f_c-f_b) } \right ] \cr & = \left [ \matrix{ (w_{a,b}+w_{a,c})f_a-w_{a,b}f_b-w_{a,c}f_c \cr -w_{a,b}f_a+(w_{a,b}+w_{b,c})f_b-w_{b,c}f_c \cr -w_{a,c}f_a-w_{b,c}f_b+(w_{a,c}+w_{b,c})f_c } \right ] \cr & = \left [ \matrix{ w_{a,b}+w_{a,c} & -w_{a,b} & -w_{a,c} \cr -w_{a,b} & w_{a,b}+w_{b,c} & -w_{b,c} \cr -w_{a,c} & -w_{b,c} & w_{a,c}+w_{b,c} } \right ] \times \left [ \matrix{ f_a \cr f_b \cr f_c } \right ] \end{aligned}

最后一行左边的矩阵就是图的拉普拉斯矩阵,即:
L=D-W

显然拉普拉斯矩阵 L 为一个 n 阶方阵,n 图中顶点的个数。其中 DL 的主对角线部分提取出的对角矩阵,对角线上的每个值为图中每个顶点相连的边的权值之和,W 为图的邻接矩阵,即对角线之外的部分的负值。

L 可以求出 n 个特征值 λ_k 和特征向量 \vec x_k,使得:
L\vec x_k=\lambda_k \vec x_k,\quad k=1,\cdots,n

对线性代数已经遗忘的同学可以穿越回到大一重新学一下。

1.2. 图的傅里叶变换

离散时间序列f[n]傅里叶变换将序列的时域表达转换为频域
\mathcal{F}\{f[i]\}=F(e^{j\omega})=\sum_{i=-\infty}^{+\infty}f[i]e^{-j\omega t}

类似地,对于图而言,其傅里叶变换为:
\mathcal{F}\{f[i]\}=F(\lambda_k)=\sum_{i=1}^n f[i]\vec x_k[i],\quad k=1,\cdots,n

此变换将各顶点值的图谱转换为频谱,其中,λ_k\vec x_k 分别为图的拉普拉斯矩阵的第 k 个特征值和特征向量,显然频谱中的每个值其实就是各顶点值组成的向量与各特征向量的内积:
F(\lambda_k)=\vec f\cdot\vec x_k

将每个特征值对应的傅里叶变换取值组成一个列向量 F,相同顺序地将每个特征向量作为一列组成一个矩阵 U,则可写为矩阵形式:
F=U^T\vec f

其中,U 必然是一个正交矩阵,因此有 U^T=U^{-1},可得傅里叶变换的逆变换的矩阵形式:
\vec f=UF

1.3. 图的卷积

离散时间序列的卷积为:
x[i]\otimes h[i]=\sum_{k=-\infty}^{+\infty}x[k]x[i-k]

对于图而言,难以像时间序列那样直接定义顶点值的卷积,只能迂回地通过傅里叶变换的性质来定义。离散时间傅里叶变换有一个经典的性质——时域的卷积等价于频域的相乘:
\mathcal{F}\{f[i]\otimes h[i]\}=\mathcal{F}\{f[i]\}\mathcal{F}\{h[i]\}=F(e^{j\omega})H(e^{j\omega})

因此可以结合傅里叶变换来定义图 G_f 与图 G_h 的各顶点值的卷积:
f[i]\otimes h[i]=\mathcal{F^{-1}}\{\mathcal{F}\{f[i]\}\mathcal{F}\{h[i]\}\}

写成矩阵形式为:
\vec f\otimes\vec h=U(U^T fH)=UH_dU^Tf

其中,\vec f\otimes\vec h 为卷积的值组成的列向量,U 为图 G_f 的拉普拉斯矩阵的每个特征向量作为一列组成的矩阵,H 为图 G_h 顶点值的傅里叶变换组成的列向量,H_dH 的各分量组成的对角矩阵。H_d 无需事先计算而是作为可学习参数,这样,第一代图卷积神经网络呼之欲出!

2. 网络的进化

前文已给出第一代图卷积神经网络的公式,但需要对拉普拉斯矩阵求出特征向量,此过程很复杂。

Licensed under CC BY-SA 4.0

上一篇下一篇

猜你喜欢

热点阅读