图神经网络基础二:谱图理论
图神经网络基础目录:
1、图的拉普拉斯矩阵
1.1 拉普拉斯算子
拉普拉斯算子 (Laplace Operator) 是为欧几里德空间中的一个二阶微分算子,定义为梯度的散度,可以写作 $\Delta, \nabla^{2}, \nabla \cdot \nabla$ 这几种形式。
如果函数 $f$ 是二阶可微的实函数,则 $f$ 的拉普 拉斯算子可以写作:
$\Delta f=\nabla^{2} f=\nabla \cdot \nabla f$
散度(divergence)用于表征空间各点矢量场发散的强弱程度。散度描述的是向量场里一个点是汇聚点还是发源点。值为正时表示该点为发源点,值为负时表示该点为汇聚点,值为零时表示该点无源。散度在物理上的含义可以理解为磁场、热源等。在笛卡尔坐标系中,矢量 $V$ 的散度表示为:
$\nabla \cdot V=\frac{\partial V_{x}}{\partial x}+\frac{\partial V_{y}}{\partial y}+\frac{\partial V_{z}}{\partial z}$
那么拉普拉斯算子作为梯度的散度,则在笛卡尔坐标系中定义为:
$\Delta f=\sum \limits _{i=1}^{n} \frac{\partial^{2} f}{\partial x_{i}^{2}}$
即:表示为函数 $f$ 在各个维度上的二阶偏导数的和。
接下来来看一下拉普拉斯算子直观上表示什么含义,以一维空间为例:
$\begin{aligned}\Delta f(x)=& \frac{\partial^{2} f}{\partial x^{2}} \\=& f^{\prime \prime}(x) \\\approx & f^{\prime}(x)-f^{\prime}(x-1) \\\approx &[f(x+1)-f(x)]-[f(x)-f(x-1)] \\=&f(x+1)+f(x-1)-2 f(x)\end{aligned}$
也就是说二阶导数近似于二阶差分,从这一角度来看拉普拉斯算子直观上表示函数 $f$ 在当前点 $x$ 的所有自由度上进行微小扰动后所获得的函数值的增益,这里有 2 个自由度,方向是 $x$ 的 $+1$ 和 $-1$ 方向。
接着来看二维空间的例子:
$\begin{align*}\label{2}& \Delta f(x, y)=\frac{\partial^{2} f}{\partial x^{2}}+\frac{\partial^{2} f}{\partial y^{2}} \\&\quad\quad\quad\quad\approx[f(x+1, y)+f(x-1, y)-2 f(x, y)]+[f(x, y+1)+f(x, y-1)-2 f(x, y)] \\&\quad\quad\quad\quad=f(x+1, y)+f(x-1, y)+f(x, y+1)+f(x, y-1)-4 f(x, y)\end{align*}$
二维空间中的拉普拉斯算子表征一个点 $x$ 在 $4$ 个自由度上微扰以后的函数增益,方向分别为 $ (1,0),(-1,0),(0,1),(0,-1) $。这就是图像中的拉普拉斯卷积核,如果算上对角线以后 可以认为有 $8$ 个自由度:
现在用散度的概念解读一下:
- $\Delta f>0$ 时,表示该点有散发通量的正源 (发散源) 。如下图中绿圈所示,即为散度大于 $0$ 的 点,其附近的矢量场情况。
- $ \Delta f<0$ 时,表示该点有吸收通量的负源 (洞或汇) 。如下图中红圈所示,即为散度小于 $0$ 的 点,其附近的矢量场情况。
- $ \Delta f=0$ 时,该点无源
另一个角度,拉普拉斯算子计算了周围点与中心点的梯度差。当 $f(x, y)$ 受到扰动之后,其可能 变为相邻的 $f(x-1, y)$, $ f(x+1, y)$ , $f(x, y-1)$ , $f(x, y+1)$ 之一,拉普拉斯算子得到 的是对该点进行微小扰动后可能获得的总增益 (或者说是总变化) 。
即:拉普拉斯算子是所有自由度上进行微小变化后所获得的增益。
1.2 图的表示
一个网络(无向图)由节点与节点之间的边组成。每个节点是有值的,我们用 $f $ 来表示节点的值向量:
$f=\left(\begin{array}{llll}f_{1} & f_{2} & \cdots & f_{N}\end{array}\right)^{T}$
其中 $f_{i}$ 表示网络中节点 $i$ 的值,也就是函数 $f$ 在节点 $i$ 处的值。对 $i$ 节点进行扰动,它可能变为任意一个与它相邻 的节点 $j \in N_{i}$ , $N_{i}$ 表示节点 $i$ 的一阶邻域节点。
网络中除了节点还有边,每条边可能有权重,用 $W$ 表示网络的加权邻接矩阵, $W_{N \times N}=\left[w_{i j}\right]$ , $ 1 \leq i, j \leq N $, 其 中 $w_{i j}$ 表示节点 $i$ 和节点 $j$ 的边的权重,另外 $W$ 是一 个对称矩阵,有 $w_{i j}=w_{j i}$ 。
度,可以类比有向图中的出度和入度的概念,不过图中点 $v_i$ 的度 $d_i$ 并不是和该点相连的点的数量,而是和其相连的边的权重之和,也就是邻接矩阵的每一行的值加起来,即:
$d_{i}=\sum \limits _{j=1}^{N} w_{i j}$
而图的度矩阵 (对角矩阵) $D_{N \times N}$ 可以表示如下:
$D=\left[\begin{array}{lll} d_{1} & & \\ & d_{2} & \\ & & \\ & & d_{N} \end{array}\right]$
1.3 图的拉普拉斯矩阵
可以将拉普拉斯算子推广到网络(无向图)中,对于有 $N$ 个节点的网络,我们想要获得一个节点关于其邻居节点(自由度)的增益,然而每个节点的邻居个数不一定是相同的,一个节点的最大自由度为 $N$ 。
我们上面已经知道拉普拉斯算子可以计算一个点到它所有自由度上微小扰动的增益,则通过图来表 示就是任意一个节点 $j$ 变化到节点 $i$ 所带来的增益,考虑图中边的权值相等(简单说就是 1 ) 则 有:
$\Delta f_{i}=\sum \limits _{j \in N_{i}}\left(f_{i}-f_{j}\right)$
而如果边 $E_{i j} $ 具有权重 $W_{i j}$ 时,则有:
$\Delta f_{i}=\sum \limits _{j \in N_{i}} W_{i j}\left(f_{i}-f_{j}\right)$
由于当 $W_{i j}=0$ 时表示节点 $i, j$ 不相邻,所以上式可以简化为:
$\Delta f_{i}=\sum_{j \in N} W_{i j}\left(f_{i}-f_{j}\right) $
继续推导有:
$\begin{array}{l}\Delta f_{i}&=\sum \limits _{j \in N} w_{i j}\left(f_{i}-f_{j}\right) \\&=\sum\limits_{j \in N} w_{i j} f_{i}-\sum\limits_{j \in N} w_{i j} f_{j} \\&=d_{i} f_{i}-w_{i:} f\end{array}$
其中
-
-
- $d_{i}=\sum \limits_{j \in N} w_{i j}$ 是顶点 $i $ 的度;
- $w_{i:}=\left(w_{i 1}, \ldots, w_{i N}\right)$ 是 $N$ 维的行向量;
- $f=\left(\begin{array}{c}f_{1} \\ \vdots \\ f_{N}\end{array}\right) $ 是 $N$ 维的列向量;
- $w_{i:} f $ 表示两个向量的内积。
-
对于所有的 $N$ 个节点有:
$\begin{aligned}\Delta f &=\left(\begin{array}{c}\Delta f_{1} \\\Delta f_{2} \\\vdots \\\Delta f_{N}\end{array}\right) \\&=\left(\begin{array}{cc}d_{1} f_{1}-w_{1:} f \\d_{2} f_{2}-w_{2:} f \\\vdots \\d_{N} f_{N}-w_{N:} f\end{array}\right) \\&=\left(\begin{array}{cccc}d_{1} & & & \\& d_{2} & & \\& & \ddots & \\& & & d_{N}\end{array}\right) f-\left(\begin{array}{c}w_{1:} \\w_{2:} \\\vdots \\w_{N:}\end{array}\right) f \\&\begin{array}{l}=\operatorname{diag}\left(d_{i}\right) f-W f \\=(D-W) f \\=L f\end{array}\end{aligned}$
这里的 $D-W$ 就是图的拉普拉斯矩阵 (Graph Laplacian),记作 $L$ 。
拉普拉斯矩阵中的第 $i$ 行实际上反应了第 $i$ 个节点在对其他所有节点产生扰动时所产生的增益累积。直观上来讲,图拉普拉斯反映了当我们在节点 $i$ 上施加一个势,这个势以哪个方向能够多顺畅的流向其他节点。谱聚类中的拉普拉斯矩阵可以理解为是对图的一种矩阵表示形式。
1.4 拉普拉斯矩阵的谱分解
特征分解(谱分解)可以参考:《谱分解(SD)》
拉普拉斯矩阵的谱分解(Laplace Spectral Decomposition)就是拉普拉斯矩阵的特征分解:
$L \mu_{k}=\lambda_{k} \mu_{k}$
对于无向图来说,拉普拉斯矩阵是实对称矩阵(见下文有例子),而实对称矩阵一定可以用正交矩阵进行正交相似对角化:
$L=U \Lambda U^{-1}$
这里的 $ \Lambda$ 为特征值构成的对角矩阵, $U$ 为特征向量构成的正交矩阵, $U$ 的每一列都是一个 特征向量。又因为正交矩阵的逆等于正交矩阵的转置: $U^{-1}=U^{T} $,所以有:
$L=U \Lambda U^{-1}=U \Lambda U^{T}$
实对称矩阵可以参考《实对称矩阵》
正交矩阵可以参考《正交矩阵》
1.5 拉普拉斯矩阵的性质
举例:
拉普拉斯矩阵有一些性质如下:
1、拉普拉斯矩阵是 对称矩阵;
2、$L$ 的行和为零 ;
3、$\mathbf{L} $ 有一个特征值为零 ;
-
-
熟愁线性代数的人都知道,对一个方阵求行和,其实相当于乘以一个 $n$ 维的,每一个维度都为 $1$ 的向量,一般我们用 $\vec{e} $ 表示。所以 $L * \vec{e}=\overrightarrow{0}$ (等于 $ 0$ 是因为 性质 $1$ ),其中 $0$ 向量也是 $n $ 维向量,每一个维度都为 $ 0 $。
对应于性质 2: $L$ 的每个行和为 0 ,共有 $n$ 行。我们将上述等式改写成 $L * \vec{e}=0 * \vec{e}$ ,这是特征值和特征向量的定义,这个等式告诉我们:$L$ 有一个特征值为 $0 $ ,且这个特征值对应的特 征向量中有一个是 $ \vec{e}$。 - 设 $\boldsymbol{A}$ 是 $\boldsymbol{n}$ 阶矩阵, 如果数 $\lambda$ 和 $\boldsymbol{n}$ 维非零 向量 $x$ 满足$A x=\lambda x$则称 $\lambda$ 是矩阵 $\boldsymbol{A}$ 的特征值(eigenvalue)。
-
4、$\mathrm{L} $ 是半正定矩阵 ;
5、设 $\mathrm{G}$ 为一个具有非负连接权重的无向图,由图 $\mathrm{G}$ 导 出的拉普拉斯矩阵 $\mathbf{L}$ 的零特征值的重数等于图 $\mathrm{G} $ 的 连通子图的个数 $k$。
6、对于任意向量 $f$,有:
$f^{T} L f=\frac{1}{2} \sum \limits _{i=1}^{N} \sum \limits _{j=1}^{N} w_{i j}\left(f_{i}-f_{j}\right)^{2}$
这一性质利用拉普拉斯矩阵的性质很容易可以得到:
$\begin{array}{l}f^{T} L f&=f^{T} D f-f^{T} W f \\&=\sum \limits _{i=1}^{N} d_{i} f_{i}^{2}-\sum\limits_{i=1}^{N} \sum\limits_{j=1}^{N} w_{i j} f_{i} f_{j} \\&=\frac{1}{2}\left(\sum\limits_{i=1}^{N} d_{i} f_{i}^{2}-2 \sum\limits_{i=1}^{N} \sum\limits_{j=1}^{N} w_{i j} f_{i} f_{j}+\sum\limits_{j=1}^{N} d_{j} f_{j}^{2}\right) \\&=\frac{1}{2}\left(\sum\limits_{i=1}^{N} \sum\limits_{j=1}^{N} w_{i j} f_{i}^{2}-2 \sum\limits_{i=1}^{N} \sum\limits_{j=1}^{N} w_{i j} f_{i} f_{j}+\sum\limits_{i=1}^{N} \sum\limits_{j=1}^{N} w_{i j} f_{j}^{2}\right) \\&=\frac{1}{2} \sum\limits_{i=1}^{N} \sum\limits_{j=1}^{N} w_{i j}\left(f_{i}-f_{j}\right)^{2}\end{array}$
对于上面的性质6,如果 $f$ 为网络中信号的值的向量,那么 $f^{T} L f$ 称为图信号的总变差 (Total Variation),可以刻画图信号整体的平滑度 (Smoothness)。
那么为什么 $f^{T} L f$ 可以刻画图的平滑度呢? 这里我们可以直观地来看一下,从 6 的式子中可以看出如果相邻节点的值 $f_{i}$ 和 $f_{j}$ 差异很大,那么 $f^{T} L f$ 这个值就会很大,也就会不平滑。
举例来说, $f_{i}$ 表示节点 $v_{i}$ 的函数,对应实际应用它可以是一个概率值、一个像素值等等。这里将 $f^{T} L f$ 记作 $S$ 。如果一个图比较平滑的 话,那么图中相邻节点的 $f$ 值应该是尽可能一致的,如果相邻节点的 $f$ 值差异很大,那么这 个图就不是很平滑。如下图:
上图中的两个网络,第一个网络的节点 $f$ 值差异较小(更平滑),因此 $S$ 较小,而第二个网络节点 $f$ 值差异较大(不平滑),因此 $S$ 较大。因此 $S=f^{T} L f$ 可以用来刻画网络的平滑度(越小越平滑)。
图的拉普拉斯矩阵是多种多样的,对于更多的拉普拉斯矩阵可以参考《 拉普拉斯矩阵》。
2、图傅里叶变换
本章节需要了解傅里叶变换的相关知识。参考《图神经网络基础一:傅里叶级数与傅里叶变换》。
2.1 回顾傅里叶变换
对于连续非周期函数 $f(t)$ 的傅里叶变换,其公式为:
$F(W)=\int_{-\infty}^{+\infty} f(t) e^{-i W t} \mathrm{~d} t$
傅里叶变换将函数分解成无数个基函数的线性组合,向每个基函数 $e^{-i W t} $ 上投影, $F(W)$ 就 是投影后对应的该基函数的系数。
定义在 $(-\infty,+\infty) $ 上的函数 $f(t)$ 可以看做一个无限维的向量,而 $t$ 代表的就是维度, $f(t)$ 就是这个维度上的值,因此函数的内积也就是积分。 $e^{-i W t}$ 是傅里叶变换的基函数,而 $W \in(-\infty,+\infty)$ ,也就是说有无限多个基函数, $F(W)$ 表示函数 $f(t)$ 在这个基函数上的坐标。
2.2 亥姆霍兹方程与傅里叶变换
亥姆霍兹方程的公式为:
$\nabla^{2} f=-k^{2} f$
亥姆霍兹方程可以看做广义的特征函数 $A x=\lambda x$ ,$ f $ 为特征函数,$-k^{2} $ 为特征值(之前说 过一个函数 $f$ 可以看做无限维的向量,这里也可以用这个观点来理解亥姆霍兹方程)。
现在我们让拉普拉斯算子 $ \nabla^{2}$ 作用到傅里叶变换的基函数上,则有:
$\nabla^{2} e^{-i \omega t}=\frac{\partial^{2} e^{-i \omega t}}{\partial t^{2}}=-\omega^{2} e^{-i \omega t}$
因此我们可以看出,傅里叶变换的基函数其实就是拉普拉斯算子的特征函数,而 $w$ 就代表了拉普拉斯算子的特征值。
2.3 从傅里叶变换到图傅里叶变换
对于傅里叶变换,存在卷积定理:在适当条件下,两个信号的卷积的傅立叶变换是他们的傅立叶变换的点积,换句话说就是时域卷积等于频域相乘。
为了能够应用卷积定理来处理卷积,所以可以将两个信号 $f$ 和 $g$ 首先进行傅里叶变换再相乘,从而得到卷积结果,这样做的好处在于可以降低算法的时间复杂度。用公式表达卷积定理就是:
$F(f * g)=F(f) \cdot F(g)$
对于网络来说,直接进行卷积是困难的,因为网络不具备图像那样规则的网格结构,因此考虑应用图傅里叶变换将网络的空域信息映射到频域来应用卷积定理完成卷积操作。
图傅里叶变换是使用类比的方式直接定义的,并非经过严格推导,类比的方法如下:
(1)拉普拉斯算子与拉普拉斯矩阵:拉普拉斯算子的作用是能够得到一个点在某些自由度上微扰以后获得的增益,而拉普拉斯矩阵能够获得网络中的每个节点微扰以后从它的邻居节点上获得的增益,也就是说:拉普拉斯矩阵之于网络就相当于拉普拉斯算子之于函数。
(2)拉普拉斯算子的特征函数与拉普拉斯矩阵的特征向量:傅里叶变换的基函数 $e^{-i \omega t}$ 是拉普拉斯算子的特征函数,那么同样的图傅里叶变换的基向量就是拉普拉斯矩阵的特征向量 $\mu_{k}$ 。
(3)拉普拉斯算子的特征值与拉普拉斯矩阵的特征值:傅里叶变换的频率 $\omega$ 是拉普拉斯算子的特征值,那么同样的图傅里叶变换的频率就是拉普拉斯矩阵的特征值 $\lambda_{k} $ 。
总而言之,这个类比的过程如下:
$\begin{array}{c}\nabla^{2} e^{-i \omega t}=-\omega^{2} e^{-i \omega t} \\\Updownarrow \\L \mu_{k}=\lambda_{k} \mu_{k}\end{array}$
既然对于函数来说拉普拉斯算子的特征值和特征函数能够用于函数的傅里叶变换,那么对于网络来说拉普拉斯矩阵的特征值和特征向量就能够用于网络的傅里叶变换。
换句话说,傅里叶变换是以拉普拉斯算子的特征函数为基进行投影,那么图傅里叶变换就以拉普拉斯矩阵的特征向量为基进行投影,因此图傅里叶变换定义为:
${F}\left(\lambda_{k}\right)=\hat{f}\left(\lambda_{k}\right)=\sum \limits_{i=1}^{N} f(i) u_{k}(i)$
这里的 $f$ 还是表示由图节点信息构成的向量, $ \lambda_{k} $ 和 $\mu_{k}$ 分别表示拉普拉斯矩阵的特征值和特征向量。
现在用 $\widehat{f}$ 来表示 $ f $ 经过图傅里叶变换后的坐标,那么图傅里叶变换可以表示成 矩阵形式:
$\widehat{f}=\left(\begin{array}{c}\widehat{f}_{1} \\\vdots \\\widehat{f}_{N}\end{array}\right)=\left(\begin{array}{ccc}\mu_{1}(1) & \cdots & \mu_{1}(N) \\\vdots & \ddots & \vdots \\\mu_{N}(1) & \cdots & \mu_{N}(N)\end{array}\right)\left(\begin{array}{c}f_{1} \\\vdots \\f_{N}\end{array}\right)=U^{T} f$
我们也可以得到图傅里叶变换的逆变换:
$f=U U^{-1} f=U U^{T} f=U \widehat{f}$
https://zhuanlan.zhihu.com/p/85287578
https://mp.weixin.qq.com/s/bkHxNONeTIzWUR6eiGjsmg
https://qddmj.cn/gcn-laplacian.htm
https://qddmj.cn/gcn-laplacian2.htm
https://zhuanlan.zhihu.com/p/81502804
『总结不易,加个关注呗!』
因上求缘,果上努力~~~~ 作者:图神经网络,转载请注明原文链接:https://www.cnblogs.com/BlairGrowing/p/15799750.html