GCN图卷积网络笔记

简介: GCN图卷积网络笔记

前言


GCN的概念首次提出于ICLR2017,它的提出是为了解决CV和NLP都无法解决或者是效果不好的问题——图结构的数据。典型的图结构有社交网络、化学分子结构、知识图谱等等。此外,语言的内部也算得上是复杂的树形结构,也是一种图结构。GCN的作用其实和CNN没什么差别,也是用来进行特征提取,不过作用的对象不同罢了。


一、CNN和GCN?


1、处理数据结构不同


CNN处理的数据是矩阵形式,这种结构形式的数据具有平移不变性。


336922ca1ac44b20822bec9a14889a25.png


GCN处理的数据是拓扑结构(图结构),即非欧几里得结构,比如社交网络连接。

CNN(卷积神经网络)无法处理非欧几里得结构。

01b504bf07154a6ea3fc36af34446bd3.png



2、特征提取


2.1 卷积特征提取


CNN特征提取的方法是采用卷积核(kernel,权重矩阵)来提取特征,并且不同的图片都共享一个卷积核。其实卷积操作的本质就是对一个范围内的像素点进行加权平均求和,这有助于提取空间特征。在图中的表示情形为:红色点的特征值是周围所有的像素点将特征值传播到中心后进行加权平均。

33f4099515f648ceb034ff32a8a032f2.png


图卷积的空域法特征提取:对应CNN,图卷积使用的也是共享权重,不同于CNN的规则权重矩阵,图卷积通常是按照一定规律将参与聚合的所有点分配为多个不同的子集,每一个子集内的节点采用的是相同的权重,从而实现权重共享。(权重的分配还有更复杂的一些方法,这里只讲一下比较简单的这一种)。


8f523814629e4278beed45a173906a08.png


和CNN很类似,GCN也是用周围的节点(邻居的节点)乘以给定的权重求和,再加上本身,再经过一系列计算得到一个全新的节点,这时候的节点信息不仅包含它本身,还包含它的邻居信息,如果多进行几次,那么它还可以包含邻居的邻居的信息。


0be703641d4042a09c71bcbf87ff1c9d.png




非欧几里得结构图的特征提取分为以下两种方法:


2.2 空域方法


就是直接用相应顶点连接的Neighbors来提取特征。

1、指定顶点,选择邻居,Select Neighborhood。

2、定义邻居节点的顺序,Normalize Subgraph规范子图。

3、感受野读取顶点和边的属性,Receptive field reads vertex and edge attributes。

总的来说,就是将每个节点的特征与其邻居节点的特征加权平均后传播到下一层。

空域方法有如下特点:

1、随着层数的加深,每个节点能聚合到的特征越远,也就是感受野就越大

2、每个顶点的邻居节点数可能不尽相同,这会导致邻居节点多的顶点的特征值更显著。

3、邻接矩阵在计算时无法将自身的特征包含到聚合特征值中去。

为了克服空域图卷积的缺点,提出了频域图卷积的方法。


9c705c1cc7d941fb82b782ec8ac71dfa.png

2.3 频域方法


图卷积(GCN)所采用的方法。


GSP(graph signal processing)图形信号处理的方法,即在图上进行信号处理的变换,如傅立叶变换或者拉普拉斯变换,进而进行图的卷积,从而提取图的特征。

GSP(graph signal processing)图形信号处理,将图当做信号,然后运用信号处理的方法去分析与处理图的特征。借助于图的拉普拉斯矩阵的特征值和特征向量来研究Graph的性质。


8fdb981e4a6e4d6680a104eb98e4ac96.png


二、图卷积理论基础


理解拉普拉斯变换和傅立叶变换,拉普拉斯矩阵与傅立叶变换是GCN的两大理论基础。


2.1 图的拉普拉斯矩阵


021128e839114ab5bb2fe10ad82c4e27.png

对于图G=(V,E), 其中拉普拉斯矩阵的定义为L = D - A,V(vertex)是节点的集合,而E(edge)是边的集合。

1、L为拉普拉斯矩阵。

2、D为对角度矩阵,对角线上的元素是顶点的度,即该元素链接的元素的个数。

3、A为邻接矩阵,即表示任意两个顶点之间的邻接关系,邻接则为1,不邻接则为0。

(我也不想这么蠢的,没办法,第一眼看到对角度矩阵和邻接矩阵有点懵。)

解释对角度矩阵:从上到下依次是节点1到节点6,从左到右依次是节点1到节点6,在交界点上显示该节点的度,即该节点链接的元素个数,分别是2、3、2、3、3、1。


f1720d15744d4dda93503d4b7a424ea9.png

解释邻接矩阵:每一行代表的都是一个顶点(从上到下是1到6),每一列代表的也是一个顶点(从左到右是1到6),如果两个顶点相邻,则他们的代表的行列交界点为1

cdce94c7455249919e637f422b235732.png


如图所示:第一行代表的1和第二列、第五列代表的2、5相邻,所以他们的行列交界点为1.

注意:因为这里代表的是无向图,所以既有1指向2、5,也可以有2、5指向1,所以整个图呈现的是关于对角线对称。当然,也可以有文本当作图,每一个词语当作是一个顶点,这时整个图是一个有向图。


拉普拉斯矩阵与图的性质满足L = D - A这种矩阵关系(还有其它关系,这里不作讨论),其中图G = (V,E),就是图的性质可以表示在拉普拉斯矩阵之中,这样,我们将图的分析,可以变为对拉普拉斯矩阵的分析。


2.2 傅立叶变换


傅立叶变换就是通过傅立叶变换,将一个域的信号转换到另一个域,便于我们分析和计算。

定义


d7741a304ebd4864b056fc26f2a2673d.png


一种变换方式,将信号由t域变换到w域。引入傅里叶变换的原因是傅里叶变换具有一定的性质,就是原域进行卷积,相当于频域相乘:

4a710a3b27664220bb3ecea2e2b2f94e.png


2.3 这两种变换的关系


传统傅立叶变换的基,就是拉普拉斯矩阵的一组特征向量。


2.4 GCN最重要的结论


结论:图的傅立叶变换的矩阵形式:

eadd9d40e67244c2bf0e63159fc7d05a.png


三、图卷积


图卷积的理论就是刚才得到的结论


1、傅立叶与卷积的性质


傅立叶变换性质中很重要的结论就是:


d3e2e2994c8f4dc089e0cc3952a38a30.png


即一个域做卷积,就相当于另一个域相乘。

图域卷积等价于频域相乘,是通过傅立叶变换与反傅立叶变换来做到的。


2、图的傅立叶变换的矩阵形式


a643836456104e8da68188312cb304ec.png

U既是傅立叶变换的基底,也是拉普拉斯矩阵的特征向量。

把这个公式展开来写:


6d88c4d45ced4caf96d6488daef47135.png

e7d98a5b8f514cd2a4c43da0d751f8b3.png


3、图卷积

结合1、2我们就得出图卷积最重要的结论:


7402ddf466e84c51b8961b3bd4cc6f05.png


4、图卷积网络

5、卷积层公式

6、图卷积网络公式


84e483915bd345eaa9a057efbc85ebe9.png

8770316bc6b542dc8727bcb6f72eec8f.png


结语:


参考文章


GCN (Graph Convolutional Network) 图卷积网络解析.

图卷积网络 GCN Graph Convolutional Network(谱域GCN)的理解和详细推导.

如何理解 Graph Convolutional Network(GCN)?.

跳出公式,看清全局,图神经网络(GCN)原理详解.

浅谈GCN.

什么是图卷积网络?为什么要研究GCN?.

论文:Learning Convolutional Neural Networks for Graphs.

GCN总结.

相关文章
|
24天前
|
机器学习/深度学习 数据可视化 算法框架/工具
深度学习第3天:CNN卷积神经网络
深度学习第3天:CNN卷积神经网络
34 0
|
25天前
|
机器学习/深度学习 人工智能 自动驾驶
什么是人工智能领域的卷积神经网络
什么是人工智能领域的卷积神经网络
22 0
|
25天前
|
机器学习/深度学习 计算机视觉
卷积神经网络中池化层的概念介绍
卷积神经网络中池化层的概念介绍
21 0
|
25天前
|
机器学习/深度学习
卷积神经网络的全连接层的概念
卷积神经网络的全连接层的概念
23 0
|
25天前
|
机器学习/深度学习 算法 计算机视觉
卷积神经网络中的卷积层,如何提取图片的特征?
卷积神经网络中的卷积层,如何提取图片的特征?
30 0
|
9天前
|
机器学习/深度学习 TensorFlow 算法框架/工具
PYTHON TENSORFLOW 2二维卷积神经网络CNN对图像物体识别混淆矩阵评估|数据分享
PYTHON TENSORFLOW 2二维卷积神经网络CNN对图像物体识别混淆矩阵评估|数据分享
38 7
|
7天前
|
机器学习/深度学习 存储 监控
数据分享|Python卷积神经网络CNN身份识别图像处理在疫情防控下口罩识别、人脸识别
数据分享|Python卷积神经网络CNN身份识别图像处理在疫情防控下口罩识别、人脸识别
18 0
|
1天前
|
机器学习/深度学习 PyTorch TensorFlow
【Python机器学习专栏】卷积神经网络(CNN)的原理与应用
【4月更文挑战第30天】本文介绍了卷积神经网络(CNN)的基本原理和结构组成,包括卷积层、激活函数、池化层和全连接层。CNN在图像识别等领域表现出色,其层次结构能逐步提取特征。在Python中,可利用TensorFlow或PyTorch构建CNN模型,示例代码展示了使用TensorFlow Keras API创建简单CNN的过程。CNN作为强大深度学习模型,未来仍有广阔发展空间。
|
3天前
|
机器学习/深度学习 算法 TensorFlow
TensorFlow 2keras开发深度学习模型实例:多层感知器(MLP),卷积神经网络(CNN)和递归神经网络(RNN)
TensorFlow 2keras开发深度学习模型实例:多层感知器(MLP),卷积神经网络(CNN)和递归神经网络(RNN)
|
5天前
|
机器学习/深度学习 数据可视化 数据挖掘
【视频】少样本图像分类?迁移学习、自监督学习理论和R语言CNN深度学习卷积神经网络实例
【视频】少样本图像分类?迁移学习、自监督学习理论和R语言CNN深度学习卷积神经网络实例
12 1