GNN理论入门和小实践——从卷积讲起

本文从卷积的概念出发,探讨了在信号与系统、图像以及图上的卷积。深入讲解了图的傅里叶变换,为定义图的卷积铺平道路。接着介绍了图卷积神经网络(GCN)的基本思想和几种模型,包括简化的GCN模型和使用切比雪夫多项式的模型。此外,文章还讨论了图神经网络的池化操作,提出节点信息分数和连接相似分数的概念。最后,提供了一个节点分类的小实践,展示了图神经网络在节点分类任务中的应用。
摘要由CSDN通过智能技术生成


从卷积讲到图卷积,最好有一点信号与系统基础

1 卷积

1.1 信号与系统的卷积1

从数学上来讲,卷积就是定义出来的一种运算。
这种运算被定义出来,说明它是在生活、科研中是具有广泛的作用的2。比如加法在生活中的运用,所以加法被定义了出来。

卷积是我们从大学开始接触到的一种运算。
这里我们只考虑离散卷积。

首先接触到的其实在「信号与系统」里面,定义了卷积这个操作,说明它是有作用的。
要探究卷积在信号与系统里面是怎么定义出来的,我们首先讲一下单位脉冲函数:
δ ( n ) = { 1 , n = 0 0 , n ≠ 0 \delta(n)=\left\{\begin{array}{ll}1, & n=0 \\ 0, & n \neq 0\end{array}\right. δ(n)={ 1,0,n=0n=0
而输入信号 x ( n ) x(n) x(n)也可以写成:
x ( n ) = ∑ k = − ∞ + ∞ x ( k ) δ ( n − k ) x(n)=\sum_{k=-\infty}^{+\infty} x(k) \delta(n-k) x(n)=k=+x(k)δ(nk)
信号与系统里面,重点就是考查一个输入信号经过一个系统之后得到的输出是什么样的

在这里插入图片描述
假设 δ ( n ) \delta(n) δ(n)经过系统,则会产生一个单位脉冲响应 h ( n ) h(n) h(n),那么对于一个线性时不变系统而言, x ( n ) x(n) x(n)输入到这个系统产生的响应就是多个不同时刻的单位脉冲响应再乘以相应的系数,也就是说, x ( n ) x(n) x(n)的输出也就是:
y ( n ) = ∑ k = − ∞ + ∞ x ( k ) h ( n − k ) y(n)=\sum_{k=-\infty}^{+\infty} x(k) h(n-k) y(n)=k=+x(k)h(nk)
卷积(公式)就出现了,从物理意义上来说,就是 不同时刻的输入不同时刻的输出 造成的影响进行了加权求和最终得到输出,好处是把信号拆分成了不同时刻的脉冲响应,方便分析,连续信号的情况也是如此。
而卷积长得和互相关函数有点像,互相关函数的定义是:
( f ∗ g ) ( n ) = ∑ k = − ∞ + ∞ f ∗ ( k ) g ( n + k ) (f*g)(n)=\sum_{k=-\infty}^{+\infty} f^{*}(k) g(n+k) (fg)(n)=k=+f(k)g(n+k)
互相关函数反映的是两个函数在不同的相对位置上互相匹配的程度,如果互相关函数的值在某个相对位置大,则说明两个函数在这个位置相似程度高

1.2 图像上的卷积3

图像上的卷积和互相关函数基本一致,互相关函数没有对核进行翻转
在神经网络的图像领域上,互相关函数和卷积运算基本上是一致的
(截图来自来自《深度学习》)
在这里插入图片描述
在这里插入图片描述
图像上的卷积也被称之为滤波(如平滑滤波,提取边缘等,如下图3),其实在信号处理上的滤波也是通过卷积运算的(高通滤波之类)
在这里插入图片描述
CNN的目的就是通过梯度下降的方式,逐渐更新卷积核的参数,找到合适的卷积核来提取图像的特征,右边的这个卷积核,其实就是拉普拉斯算子了,边的位置就是图像的高频分量。

1.3 图(Graph)的卷积

欧几里得结构的数据比如图片,音频等,它们的特点就是整齐排列,邻居节点 个数固定且和中心节点有着一定的关系,因此可以定义出卷积这个操作,一个卷积核对整个图都能够使用,以此来提取特征。我们甚至可以把图片样本的不同像素点看成是高维欧几里德空间中的某个维度,把一张 m × n m\times n m×n的图片可以看成是 m × n m\times n m×n维的欧几里德样本空间中的一个点,而不同样本之间的距离就体现在了样本点之间的距离了。图像具有的特点:Stationarity is owed to shift-invariance, locality is due to the local connectivity, and compositionality stems from the multi-resolution structure of the grid.
在这里插入图片描述

而图是一种非欧几里得的结构(非欧几里得域的还有流形manifold),由点和边构成, G = { V , E } \mathcal G=\{\mathcal V,\mathcal E\} G={ V,E},这样子的结构排列不整齐,比较随意。具体体现在:对于数据中的某个点,难以定义出其邻居节点出来,或者是不同节点的邻居节点的数量是不同的,这个其实是一个特别麻烦的问题,因为这样就意味着难以在这类型的数据上定义出和图像等数据上相同的卷积操作出来,而且因为每个样本的节点排列可能都不同。就像下面的图一样,不同节点的邻居节点个数不尽相同,也不能像前面提到的把整个图看成 m × n m\times n m×n维的欧几里德样本空间中的一个点,因为总的节点个数不同,而且点之间的排列是随意的。
在这里插入图片描述

类似于欧几里得结构的数据,我们也希望能在图上定义一种卷积操作来提取,图的特征4,要想知道怎么定义图的卷积,我们还得从傅里叶变换说起

1.3.1信号的傅里叶变换

我们知道,传统的傅里叶变换的形式如下:
F ( ω ) = F [ f ( t ) ] = ∫ f ( t ) e − i ω t d t F(\omega)=\mathcal{F}[f(t)]=\int f(t) e^{-i \omega t} d t F(ω)=F[f(t)]=f(t)eiωtdt
这里我们使用的基函数是 e − i ω t e^{-i \omega t} eiωt,那么为什么要选取这个基函数呢?
从奥本海默的《信号与系统》我们可以找到一种答案:
在这里插入图片描述
上面提及到了 特征值和特征函数 的概念,广义的特征方程式定义为 A V = λ V , AV=\lambda V, AV=λV,其中 A A A是一种变换, V V V是特征向量或特征函数(特征函数也可以看成是无穷维的向量), λ \lambda λ是特征值。
我们注意到基函数 e − i ω t e^{-i \omega t} eiωt其实是拉普拉斯算子的特征函数
Δ e − i ω t = ∂ 2 ∂ t 2 e − i ω t = − ω 2 e − i ω t \Delta e^{-i \omega t}=\frac{\partial^{2}}{\partial t^{2}} e^{-i \omega t}=-\omega^{2} e^{-i \omega t} Δeiωt=t22eiωt=ω2eiωt
在参考文献[1]中也有提及到:
在这里插入图片描述
而我们常见的线性时不变系统多涉及到差分(离散)、微分(连续),如下图这个系统就是一个差分的系统。在我的理解看来,拉普拉斯算子也可以算是一种系统,甚至可以算是算有线性时不变系统的一个概括,毕竟就算扩展到三阶差分 、四阶差分, e − i ω t e^{-i \omega t} eiωt也是相应的特征函数,所以拉普拉斯算子算是(这里缺少相应的参考文献,仅凭个人感觉)。
在这里插入图片描述
也就是说,如果我们可以在图上面定义出一个拉普拉斯算子,那我们就可以相应地找出它的特征函数,并相应地作出图的傅里叶变换。

1.3.2图(Graph)的傅里叶变换

卷积定理:信号卷积的傅里叶变换等价于信号傅里叶变换的乘积
F ( f ∗ g ) = F ( f ) ⋅ F ( g ) \mathcal F (f*g)=\mathcal F(f)\cdot \mathcal F(g) F(fg)=F(f)F(g)
因此,如果我们可以定义图的傅里叶变换,那么卷积就变成乘法,最后再经过傅里叶逆变换就可以了。
我们知道,拉普拉斯算子其实就是二阶微分,在离散情况下,离散函数的导数5就是:

∂ f ∂ x = f ′ ( x ) = f ( x + 1 ) − f ( x ) \frac{\partial f}{\partial x}=f' (x)=f(x+1)-f(x) xf=f(x)=f(x+1)f(x)
那么二阶导数就是
∂ 2 f ∂ t 2 = f ′ ′ ( x ) ≈ f ′ ( x ) − f ′ ( x − 1 ) = f ( x + 1 ) + f ( x − 1 ) − 2 f ( x ) \frac{\partial^{2}f}{\partial t^{2}}=f''(x) \approx f'(x)-f'(x-1)=f(x+1)+f(x-1)-2f(x) t22f=f(x)f(x)f(x1)=f(x+1)+f(x1)2f(x)
如果我们从二维的角度来看拉普拉斯算子5(图源知乎):
在这里插入图片描述
Δ f = ∂ 2 f ∂ x 2 + ∂ 2 f ∂ y 2 = f ( x + 1 , y ) + f ( x − 1 , y ) − 2 f ( x , y ) + f ( x , y + 1 ) + f ( x , y − 1 ) − 2 f ( x , y ) = f ( x + 1 , y ) + f ( x − 1 , y ) + f ( x , y + 1 ) + f ( x , y − 1 ) − 4 f ( x , y ) \begin{array}{l} \Delta f=\frac{\partial^{2} f}{\partial x^{2}}+\frac{\partial^{2} f}{\partial y^{2}} \\ =f(x+1, y)+f(x-1, y)-2 f(x, y)+f(x, y+1)+f(x, y-1)-2 f(x, y) \\ =f(x+1, y)+f(x-1, y)+f(x, y+1)+f(x, y-1)-4 f(x, y) \end{array} Δf=x22f+y22f=f(x+1,y)+f(x1,y)2f(x,y)+f(x,y+1)+f(x,y1)2f(x,y)=f(x+1,y)+f(x1,y)+f(x,y+1)+f(x,y1)4f(x,y)
其实粗俗点来讲就是周围的点和中心的之间的梯度差,像前文提到的图像上的拉普拉斯算子。
我们将这个结论推广到图(图源知乎):
在这里插入图片描述
那就变成了一个中心节点与邻居节点之间的梯度差,在这个图上定义一个函数 f f f,上面有 N N N个点,定义节点 i i i的所有邻居节点构成的集合是 N i N_i Ni,节点 i i i上面的函数值为 f i f_i fi(node attribute),整个图的函数值可以写成列向量的形式 f = ( f 1 , ⋯   , f N ) T \bm f=(f_1,\cdots,f_N)^T f=(f1,,fN)T,那图上面的拉普拉斯算子就可以定义为:
Δ f i = ∑ j ∈ N i ( f i − f j ) , \Delta f_i=\sum_{j \in N_i}(f_i - f_j), Δfi=jNi(fifj)
这里我们定义一个邻接矩阵,对于无向图 G = ( V , E ) G=(\mathcal V,\mathcal E) G=(V,E)而言,邻接矩阵就是一个 N × N N\times N N×N的对称矩阵 A \bm A A,它的定义就是
A = ( a 11 ⋯ a 1 N ⋮ ⋱ ⋮ a N 1 ⋯ a N N ) \bm A = \left( \begin{array}{c} a_{11}&\cdots &a_{1N}\\ \vdots & \ddots & \vdots \\ a_{N1}& \cdots& a_{NN} \end{array} \right) A=

人工智能(AI)最近经历了复兴,在视觉,语言,控制和决策等关键领域取得了重大进展。 部分原因在于廉价数据和廉价计算资源,这些资源符合深度学习的自然优势。 然而,在不同的压力下发展的人类智能的许多定义特征仍然是当前方法无法实现的。 特别是,超越一个人的经验 - 从婴儿期开始人类智能的标志 - 仍然是现代人工智能的一项艰巨挑战。 以下是部分立场文件,部分审查和部分统一。我们认为组合概括必须是AI实现类似人类能力的首要任务,结构化表示和计算是实现这一目标的关键。就像生物学利用自然和培养合作一样,我们拒绝“手工工程”和“端到端”学习之间的错误选择,而是倡导一种从其互补优势获益的方法。我们探索如何在深度学习架构使用关系归纳偏差来促进对实体,关系和组成它们的规则的学习。我们为AI工具包提供了一个新的构建模块,具有强大的关系归纳偏差 - 形网络 - 它概括和扩展了在形上运行的神经网络的各种方法,并为操纵结构化知识和生成结构化行为提供了直接的界面。我们讨论网络如何支持关系推理和组合泛化,为更复杂,可解释和灵活的推理模式奠定基础。作为本文的配套文件,我们还发布了一个用于构建形网络的开源软件库,并演示了如何在实践使用它们。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值