GNN-图神经网络

本文详细介绍了图卷积神经网络(GCN)的概念,从卷积的理解、卷积在网络拓展至非欧式空间、谱域图卷积、空域图卷积,到具体的模型如活性卷积、可变形卷积、谱域图卷积模型(SCNN、ChebNet、GCN)和空域图卷积(GNN、GraphSAGE、GAT、PGC)。GCN和GAT等模型通过不同的方法处理图结构数据,克服了经典卷积在网络的局限性,展示了在图数据上的强大处理能力。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 卷积拓展至非欧式空间

1.1 卷积的理解

参考链接 - 马同学 - 如何通俗地理解卷积?

  称 ( f ∗ g ) ( n ) (f*g)(n) (fg)(n) f , g f,g f,g 的卷积,其连续的定义为:
( f ∗ g ) ( n ) = ∫ − ∞ ∞ f ( τ ) g ( n − τ ) d τ (f * g)(n)=\int_{-\infty}^{\infty} f(\tau) g(n-\tau) d \tau (fg)(n)=f(τ)g(nτ)dτ

  离散定义为
( f ∗ g ) ( n ) = ∑ τ = − ∞ ∞ f ( τ ) g ( n − τ ) (f * g)(n)=\sum_{\tau=-\infty}^{\infty} f(\tau) g(n-\tau) (fg)(n)=τ=f(τ)g(nτ)

  这两个式子有一个共同的特征:


1.2 卷积神经网络拓展至非欧空间

参考链接 - 深蓝学院 - 图卷积神经网络

在这里插入图片描述

欧式空间卷积神经网络 非欧式空间结构数据
处理固定输入维度数据、局部输入数据必须有序 局部输入维度可变
语音、图像、视频(规则结构)满足以上两点要求 局部输入排列无序

1.2.1 活性卷积

  传统的卷积是对每个处在规格 格子空间上的数据进行聚合,并且聚合使用的参数是一样的。而如果数据发生了 偏移,不再是处在规格的格子空间上,那就不能直接使用基本的卷积了,为了更好的拟合这种数据,最好的办法是让 卷积核形状可以自己去学习,于是提出了 活性卷积

活性卷积 (Yunho et al. CVPR 2017) 的特点:

  • 双线性插值:离散坐标下,可以通过插值方法计算得到连续位置的像素值;
  • 可学习参数 Δ α k Δ β k \Delta \alpha_{k} \Delta \beta_{k} ΔαkΔβk
  • 可变卷积核形状固定。 [难点]

在这里插入图片描述

  上图中, m k 1 , m k 2 , n k 1 , n k 2 m_{k}^{1}, m_{k}^{2}, n_{k}^{1}, n_{k}^{2} mk1,mk2,nk1,nk2​ 是离散坐标系中的一个整数坐标,它所对应的四个点是 Q c , k 11 , Q c , k 21 , Q c , k 12 , Q c , k 22 Q_{c, k}^{11}, Q_{c, k}^{21}, Q_{c,k}^{12}, Q_{c, k}^{22} Qc,k11,Qc,k21,Qc,k12,Qc,k22 ,这时候出现了一个有偏移的数据(箭头黑点处),离散坐标不知道,引入两个偏移量 Δ α k , Δ β k \Delta\alpha_{k}, \Delta \beta_{k} ΔαkΔβk​,它们是可学习的。

  通过双线性插值的方式,得到这个偏移的数据点处的像素值应该由邻近的 Q c , k 11 , Q c , k 21 , Q c , k 12 , Q c , k 22 Q_{c, k}^{11}, Q_{c,k}^{21}, Q_{c, k}^{12}, Q_{c, k}^{22} Qc,k11,Qc,k21,Qc,k12,Qc,k22 这四个点决定的。然后通过梯度反向传播的方式,对 Δ α k , Δ β k \Delta\alpha_{k} ,\Delta \beta_{k} ΔαkΔβk​ 进行求解。

  这种活性卷积可以解决欧式空间中数据排列出现一定偏差的情况,但也存在一些问题,比如 Δ α k , Δ β k \Delta \alpha_{k},\Delta \beta_{k} ΔαkΔβk​ ​学习出来就是固定的,不会随数据而变化,也就是说这种活性卷积在一个数据集上学习完之后 Δ α k , Δ β k \Delta\alpha_{k}, \Delta \beta_{k} ΔαkΔβk​ ​就固定下来了,对所有的数据都是采用相同的 Δ α k , Δ β k \Delta \alpha_{k}, \Delta \beta_{k} ΔαkΔβk​,这显然不够理想。参考链接2

1.2.2 可变形卷积

参考链接 - 三景页三景页 - 可变形卷积从概念到实现过程

  为了使卷积核的形状是数据驱动的,也就是说对不同的数据可以自适应的产生专门的卷积核,去做一个局部的聚合操作,于是就有了可变形卷积 [难点]

  传统的卷积是在一个规则的格子上做一个局部的聚合,而可变性卷积相当于在一个不规则的格子上做一个聚合,其中箭头表示格子的一个偏移量,这个偏移量是通过数据驱动学习的。

在这里插入图片描述
  在此框架下,由于卷积核是通过数据驱动的方式学习的,对于不同的输入数据学习到的卷积核形状是不一样的,所以实现了卷积核位置的参数化;其次,这种数据驱动方式学习出来的卷积核的偏移量是连续值,实现了双线性插值连续化;最后,由于整个网络得训练是端到端的,可采用传统 BP 算法训练

可变形卷积( Jifeng et al. ICCV 2017) 的特点:

  • 卷积核位置参数化;
  • 双线性插值连续化;
  • 传统 BP 算法训练。

在这里插入图片描述

  具体而言,上面的左边公式是一个传统卷积,其中 w ( p n ) w(p_n) w(pn) 为卷积核, x ( p 0 + p n ) x(p_0+p_n) x(p0+pn) 为数据, p 0 p_0 p0 为中心坐标, p n p_n pn ​为偏移坐标, p n p_n pn​属于集合 R R R 中的, R R R 是规则的集合,即 3 × 3 3\times3 3×3 的格子中。
  右边公式为 可变形卷积,其中 w ( p n ) w(p_n) w(pn) 为卷积核, x ( p 0 + p n + Δ p n ) x(p_0+p_n+\Delta p_n) x(p0+pn+Δpn) 为数据, p 0 p_0 p0为中心坐标, p n p_n pn​为标准偏移坐标, Δ p n \Delta p_n Δpn​为连续的偏移坐标值,而 Δ p n \Delta p_n Δpn​ ​并不直接学习,是通过学习 G ( q , p ) G(q,p) G(q,p)函数,这样 Δ p n \Delta p_n Δpn​通过参数化的模块进行学习。参考链接2

在这里插入图片描述
  上图中,对于一个输入特征和输出特征之外,它的卷积核的形状是可变的,将某个区域内的数据提取出来,经过一个卷积conv,学习每个卷积核的偏移量,然后将偏移量对应的数据,对原来的特征图进行一个卷积 deformable convoluntion,得到最终的结果。

  • 此例中,使用了一个 3×3 可变形卷积 (N=9);每个位置对应一个偏置;偏置通过额外卷积学习;每个偏置为二维向量。

2. 谱域图卷积

参考链接 - 深蓝学院 - 图卷积神经网络

  卷积神经网络在语音、图像、视频取得了巨大成功(尤其是在图像上)。同时,图数据广泛存在于日常生活中,如下所示的几种图数据:
在这里插入图片描述
  因此,如何将卷积应用在不规则的图数据上,进而更好的处理图数据,经典的卷积网络有一个很明显的局限:无法处理图结构数据

在这里插入图片描述

经典卷积处理图结构数据的局限性

  • 只能处理固定输入维度的数据(维数一致性);
  • 局部输入数据必须有序(序列有序性)。
  • 语音、图像、视频(规则结构)满足以上两点要求。但并不适用于图结构数据(非欧式空间数据)。

在这里插入图片描述
  如上图所示,说明了欧式空间的规则数据和非欧空间的图数据最大的两点区别:

  • 序列无序性 是指:如右图中红色节点的邻居节点有两个,而不知道它们谁应该排在前,谁应该排在后,这就是序列无序性。
  • 维数可变性 是指:右图中红色节点和蓝色节点的邻居节点个数是可以不相同的,这就是维数可变性。

因此无法将 3 × 3 3\times3 3×3 的卷积核应用到图数据上,这就是图卷积网络需要解决的问题。

那么如何将卷积操作扩展到图结构数据中?

2.1 图卷积实现

目前图卷积的实现,分为两大类:

1️⃣ 谱域图卷积:

  • 根据 图谱理论卷积定理 ,将数据由空域转换到谱域做处理 ,处理完再转换到空域。
  • 有较为坚实的理论基础

  基于频谱的方法(Spectral-based)是通过从图信号处理的角度引入滤波器来定义图卷积,其中图卷积运算被解释为从图信号中去除噪声。它的实现思路是根据图谱理论和卷积定理,将数据由空域转换到谱域做处理。参考链接4

2️⃣ 空域图卷积:

  • 不依靠 图谱理论 和 卷积定理 ,直接在空间上定义卷积 操作 。
  • 定义直观 ,灵活性更强 。

基于空间的方法(Spatial based)继承了循环神经网络的思想,通过信息传播来定义图的卷积。


  根据卷积定理,两信号在空域(或时域)的卷积的傅里叶变换等于这两个信号在频域中的傅里叶变换的乘积:
F [ f 1 ( t ) ⋆ f 2 ( t ) ] = F 1 ( w ) ⋅ F 2 ( w ) \mathcal{F}\left[f_{1}(t) \star f_{2}(t)\right]=F_{1}(w) \cdot F_{2}(w) F[f1(t)f2(t)]=F1(w)F2(w)

f ( t ) f(t) f(t) 为空域上的信号, F ( w ) F(w) F(w) 为频域上的信号。 F \mathcal{F} F 为傅里叶变换, ⋆ \star 表示卷积, ⋅ \cdot 为乘积。

也可以通过反变换的形式来表达:
f 1 ( t ) ⋆ f 2 ( t ) = F − 1 [ F 1 ( w ) ⋅ F 2 ( w ) ] f_{1}(t) \star f_{2}(t)=\mathcal{F^{-1}}\left[F_{1}(w) \cdot F_{2}(w)\right] f1(t)f2(t)=F1[F1(w)F2(w)]

F − 1 \mathcal{F^{-1}} F1 为傅里叶反变换。
在这里插入图片描述
卷积操作的意义如下:

  1. 将空域信号转换到频域,然后相乘。
  2. 将相乘的结果再转换到空域。

  具体来说, f 1 ( t ) f_1(t) f1(t) 定义为空域输入信号, f 2 ( t ) f_2(t) f2(t)定义为空域卷积核,那么卷积操作就可以这样定义:首先将空域上的信号 f 1 ( t ) f_1(t) f1(t) 转换到频域信号 F 1 ( w ) F_1(w) F1(w) f 2 ( t ) f_2(t) f2(t) 转换到频域 F 2 ( w ) F_2(w) F2(w),然后将频域信号相乘,再将相乘后的结果通过傅里叶反变换转回空域,这就是 谱域图卷积的实现思路将空域转换到频域上处理,处理完再返回空域)。

那么为什么要这样转换呢?为什么要将空域上的信号转换到频域上处理,最后再转回到空域?

  经典的卷积操作具有序列有序性和维数不变性的限制,使得经典卷积难以处理图数据,也就是说对于一个3x3的卷积核,它的形状是固定的,它的感受野的中心节点必须要有固定的邻域大小才能使用卷积核,但是图上的节点的邻域节点是不确定的,此外图上节点的邻域节点也是没有顺序的,这就不能直接在空域使用经典的卷积。但是当我们把数据从空域转换到频域,在频域处理数据时,只需要将每个频域的分量放大或者缩小就可以了,不需要考虑信号在空域上存在的问题,这个就是谱域图卷积的巧妙之处。

那么如何转换呢? → \rightarrow 傅里叶变换。

经典傅里叶变换:
x ( t ) = 1 n ∑ w = 0 n − 1 e i 2 π n t w X ( w ) x(t)=\frac{1}{n} \sum_{w=0}^{n-1} e^{i \frac{2 \pi}{n} t w} X(w) x(t)=n1w=0n1ein2πtwX(w)

基于图谱理论,图傅里叶变换
x ( i ) = ∑ l = 1 n x ^ ( λ l ) u l ( i ) x(i)=\sum_{l=1}^{n} \hat{x}\left(\lambda_{l}\right) u_{l}(i) x(i)=l=1nx^(λl)ul(i)

2.2 拉普拉斯矩阵

拉普拉斯矩阵定义: wiki-Laplacian matrix 解释

  • 无向图: G = ( v , ε , w ) \mathcal{G} = (v,\varepsilon ,w) G=(v,ε,w) ∣ v ∣ = n |v| = n v=n

  • 邻接矩阵: W ∈ R n × n W \in {\mathbb{R}^{n \times n}} WRn×n

  • 度矩阵: D i i = ∑ j W i j {D_{ii}} = \sum\limits_j { {W_{ij}}} Dii=jWij​, D ∈ R n × n D \in {\mathbb{R}^{n \times n}} DRn×n

  其中, v v v 代表所有节点的集合(共 n n n个), ε \varepsilon ε 代表所有边的集合; W W W 代表邻接矩阵( n × n n\times n n×n 的方阵); D D D 为度矩阵,定义为从 i i i 节点出发的所有边的权重之和(为 n × n n\times n n×n 的对角矩阵)。

在这里插入图片描述
1️⃣ 拉普拉斯矩阵是 对称半正定 矩阵。

  • 半正定的证明,对任意向量 [ f 1 , f 2 , . . . , f n ] T [f_1,f_2,...,f_n]^{T} [f1,f2,...,fn]T
    f T L f = f T D f − f T W f = ∑ i = 1 n d i f i 2 − ∑ i , j = 1 n f i f j W i j = 1 2 ( ∑ i = 1 n d i f i 2 − 2 ∑ i , j = 1 n f i f j W i j + ∑ j = 1 n d j f j 2 ) = 1 2 ( ∑ i , j = 1 n W i j ( f i − f j ) 2 ) ≥ 0 \begin{aligned} f^{T} L f &=f^{T} D f-f^{T} W f=\sum_{i=1}^{n} d_{i} f_{i}^{2}-\sum_{i, j=1}^{n} f_{i} f_{j} W_{i j} \\ &=\frac{1}{2}\left(\sum_{i=1}^{n} d_{i} f_{i}^{2}-2 \sum_{i, j=1}^{n} f_{i} f_{j} W_{i j}+\sum_{j=1}^{n} d_{j} f_{j}^{2}\right) \\ &=\frac{1}{2}\left(\sum_{i, j=1}^{n} W_{i j}\left(f_{i}-f_{j}\right)^{2}\right) \geq 0 \end{aligned} fTLf=fTDffTWf=i=1ndifi2i,j=1nfifjWij=21(i=1ndifi22i,j=1nfifjWij+j=1ndjfj2)=21(i,j=1nWij(fifj)2)0

作为对称半正定矩阵,拉普拉斯矩阵有如下 性质

  • n 阶对称矩阵一定有 n 个线性无关的特征向量。( 对称矩阵性质
    • n 维线性空间中的 n 个线性无关的向量都可以构成它的一组基(矩阵论知识)。
    • 拉普拉斯矩阵的 n 个特征向量是线性无关的,它们是 n 维空间中的一组基。
      • 下图中,在二维空间中有 u ⃗ 1 \vec u_1 u 1 ​, u ⃗ 2 \vec u_2 u 2 ​两个线性无关的向量,则它们可以表示这个二维空间中的所有向量,它们就是二维空间中的一组基。
        在这里插入图片描述
  • 对称矩阵的不同特征值对应的特征向量相互正交,这些正交的特征向量构成的矩阵为正交矩阵(对称矩阵性质)。
    • 拉普拉斯矩阵的 n 个特征向量是 n 维空间中的一组标准正交基。
    • 正交矩阵: U U T = I UU^T=I UUT=I,   L = U Λ U − 1 = U Λ U T L=U\Lambda U^{-1}=U\Lambda U^T L=UΛU1=UΛUT
      在这里插入图片描述
  • 实对称矩阵的特征向量一定是实向量
  • 半正定矩阵的特征值一定非负。
  • 拉普拉斯矩阵是图上的一种拉普拉斯算子[下面2.2.2章解释]

  以上证明了 拉普拉斯矩阵特征分解后的特征向量不但是 n 维空间中的一组基,而且还是正交的(相乘为0),简称 标准正交基

  拉普拉斯矩阵有了上面的性质,就可以进行拉普拉斯矩阵的谱分解了。

2️⃣ 拉普拉斯矩阵的 谱分解

  特征分解(Eigen decomposition),又称谱分解(Spectral decomposition),是将矩阵分解为由其 特征值特征向量 表示的 矩阵之积 的方法。
L = U Λ U − 1 = U [ λ 1 ⋱ λ n ] U − 1 U = ( u ⃗ 1 , u ⃗ 2 , ⋯   , u ⃗ n ) . u ⃗ i ∈ R n , i = 1 , 2 , ⋯ n \begin{aligned} &L=U \Lambda U^{-1}=U\left[\begin{array}{lll} \lambda_{1} & & \\ & \ddots & \\ & & \lambda_{n} \end{array}\right] U^{-1} \\ \\ &U=\left(\vec{u}_{1}, \vec{u}_{2}, \cdots, \vec{u}_{n}\right). \qquad \vec{u}_{i} \in \mathbb{R}^{n}, i=1,2, \cdots n \end{aligned} L=UΛU1=Uλ1λnU1U=(u 1,u 2,,u n).u iRn,i=1,2,n

拉普拉斯矩阵又为正交矩阵,有
L = U Λ U − 1 = U Λ U T . ( U U T = I ) L=U\Lambda U^{-1}=U\Lambda U^T . \qquad (UU^T=I) L=UΛU1=UΛUT.(UUT=I)

为什么拉普拉斯矩阵可以是度矩阵 减 邻接矩阵 L = D − W L=D-W L=DW 呢?

  • 原因是 拉普拉斯矩阵是图上的一种拉普拉斯算子

2.2.1 拉普拉斯算子

wiki-拉普拉斯算子
  拉普拉斯算子是 n 维欧几里德空间中的一个二阶微分算子,定义为梯度( ∇ f \nabla f f)的散度( ∇ ⋅ f \nabla \cdot f f)。因此如果 f f f 是二阶可微的实函数,则 f f f 的拉普拉斯算子定义为:
Δ f = ∇ ⋅ ( ∇ f ) = d i v ( g r a d ( f ) ) \Delta f=\nabla \cdot (\nabla f)=div(grad(f)) Δf=(f)=div(grad(f))

  对于 n 维欧几里得空间,可以认为拉普拉斯算子是一个二阶微分算子,即在各个维度求二阶导数后求和。
Δ f = ∂ 2 f ∂ x 2 + ∂ 2 f ∂ y 2 \Delta f=\frac{\partial^{2} f}{\partial x^{2}}+\frac{\partial^{2} f}{\partial y^{2}} Δf=x22f

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值