尽管在过去的几年中,神经网络的兴起与成功应用使得许多目标检测、自然语言处理、语音识别等领域都有了飞跃发展,但是将 RNN 或者GCN这样的深度学习模型拓展到任意结构的图上是一个有挑战性的问题。受限于传统深度学习方法在处理非欧式空间数据上的局限性,基于图数据结构的图神经网络应运而生。

在当前的图神经网络,主要分为以下几类,图卷积网络、图注意力网络、图自编码器、图生成网络。而其中图卷积神经网络是许多复杂图神经网络模型的基础,是大多数图神经网络模型通用的架构。图卷积神经网络以其简单的形式开创了图模型上的深度学习方法,并且在许多数据上的节点分类、链路预测等方面取得了非常不错的效果。下面我们将详细介绍一下图卷积神经网络的基本原理和思路。


1. 图论基础

下图是一个网络图,一共有6个节点。它的邻接矩阵为 A ,用于描述图的结构。

若两个节点之间有连边,那么邻接矩阵中该元素为1,否则为0。以第0个节点为例(A的第一行),0节点和1、4节点有连边,那么矩阵元素为1。

然而,如果每个节点有其自身的特征,那么邻接矩阵无法准确表达这个图。矩阵 H 代表节点的特征矩阵矩阵中的每一行代表每个节点的特征向量。例如0节点的特征向量是 [1, 11]。

有了邻接矩阵和节点矩阵就能表述网络图了,将邻接矩阵和节点矩阵相乘,我们发现相乘结果矩阵没有保留节点自身的特征信息。如在邻接矩阵中,节点0到自身节点没有连边,因此该元素是0,在特征提取过程中丢失了自身节点的信息。

为了避免在特征提取过程中丢失自身信息的情况,给网络中的每个节点添加自连接在邻接矩阵中,节点到自身的元素值为1,斜对角线上的元素都变为1。如下图, 代表有自连接的邻接矩阵

在网络中每个节点的度代表,该节点有几个邻接的节点,即该节点有几条连边在不加自连接的网络中,如0节点的度为2,而4节点的度为3。加自连接的度矩阵 ,如0节点的度为3,而4节点的度为4。


2. GCN原理

2.1 GCN 计算公式

 代表权重矩阵;

 代表网络图的邻接矩阵;

 代表有自连接网络的邻接矩阵,

 代表有自连接的邻接矩阵的度矩阵;只有斜对角元素有值的对角矩阵

自连接度矩阵的计算公式为: 

 代表网络图的节点的特征;

对角矩阵求逆,就是求对角矩阵每个元素的倒数,变换公式如下


2.2 公式解析 

(1)为什么要使用有自连接的邻接矩阵

如果只使用邻接矩阵 A 的话,对角线元素都是0,所以邻接矩阵 A 和节点特征矩阵 H 相乘后只会计算一个节点的所有邻居节点的特征加权和,而该节点自身的特征却被忽略了。因此使用带自连接的邻接矩阵  就能将节点自身的特征保留下来,并且通过网络传递下去

(2)为什么要归一化操作

自连接邻接矩阵和节点特征矩阵相乘后,如果有的节点的连边比较多,那么计算后的某些节点特征就很大,需要对节点特征进行归一化操作,

A 是没有经过归一化的矩阵,如果用它和节点的特征矩阵 H 相乘,意味着特征指标之间的量纲影响没有被消除会改变特征的原本的分布情况,会极大地影响最终的效果,因此我们需要使用归一化或者标准化来将所有数据限制在一个合理的区间范围内,消除奇异样本数据导致的不良影响。平衡那些度很大的节点的重要性。也称为对称归一化拉普拉斯矩阵


2.3 前向传播方式

以一个两层 GCN 网络的前向传播为例,计算公式如下:

 代表归一化之后的带自连接的邻接矩阵;

 代表每个节点的特征;

 代表第一层 GCN 层的可学习的权重参数;

 代表激活函数;

 代表每个节点经过一层GCN层之后的提取的特征;

 代表第二层 GCN 层的可学习的权重参数;

 代表每个节点经过第二层GCN层之后提取的特征;

最终需要预测每个节点所属的类别,经过 Softmax 函数,得到每个节点属于每个类别的概率 Y 。


如下图所示,X 代表每个节点的特征C 代表初始特征的维度数量,经过一系列 GCN 层,得到新的节点特征 Z,以及输出特征维度的数量 F,再经过 Softmax 函数,得到节点属于每个类别的概率。


如何从 GCN 的输出层转为类别概率

方法一: 最后一层的 GCN 层的隐含层特征数等于类别数,直接使用 Softmax 输出概率。

方法二: 在最后一层 GCN 层输出的 F 维特征后面再接一个全连接层,作为分类器,使全连接层的输出数和类别数相同。

【深度学习理论】(5) 图卷积神经网络 GCN相关推荐

  1. (21) 出行需求预测新视角---基于图卷积神经网络GCN的出租车OD需求预测

    交通预见未来(21): 出行需求预测新视角---基于图卷积神经网络GCN的出租车OD需求预测 1.文章信息 <Origin-Destination Matrix Prediction via G ...

  2. 图卷积神经网络(GCN)综述与实现(PyTorch版)

    图卷积神经网络(GCN)综述与实现(PyTorch版) 本文的实验环境为PyTorch = 1.11.0 + cu113,PyG = 2.0.4,相关依赖库和数据集的下载请见链接. 一.图卷积神经网络 ...

  3. 深入理解图卷积神经网络(GCN)原理

    深入理解图卷积神经网络(GCN)原理 文章目录 深入理解图卷积神经网络(GCN)原理 前言 一.为什么需要GCN 二.GCN的原理 1.图的定义 2.GCN来了 2.1 矩阵计算公式 2.2 以小规模 ...

  4. DeepLearning | 图卷积神经网络(GCN)解析(论文、算法、代码)

    本篇博客主要讲述三种图卷积网络(Graph Convolutional Network, GCN)的算法原理及python实现,全文阅读时间约10分钟. 博主关于图神经网络的文章 DeepLearni ...

  5. 图卷积神经网络GCN大白话解读!

    何时能懂你的心--图卷积神经网络(GCN) https://zhuanlan.zhihu.com/p/71200936 蝈蝈 把知道的讲清楚.公众号SimpleAI,欢迎来逛逛. 已关注 天雨粟 . ...

  6. tensorflow lstm 预测_图卷积神经网络GCN与递归结构RNN相结合的时间序列预测

    时间序列预测任务可以按照不同的方法执行.最经典的是基于统计和自回归的方法.更准确的是基于增强和集成的算法,我们必须使用滚动周期生成大量有用的手工特性.另一方面,我们可以使用在开发过程中提供更多自由的神 ...

  7. 图卷积神经网络(GCN)理解与tensorflow2.0代码实现

    图(Graph),一般用 G=(V,E)G=(V,E)G=(V,E) 表示,这里的VVV是图中节点的集合,EEE 为边的集合,节点的个数用NNN表示.在一个图中,有三个比较重要的矩阵: 特征矩阵XXX ...

  8. 图卷积神经网络GCN原理+图结构学习+GAT+VGAE

    https://baijiahao.baidu.com/s?id=1678519457206249337&wfr=spider&for=pc GCN是一种卷积神经网络,它可以直接在图上 ...

  9. 图卷积神经网络(GCN)入门

    GCN是从CNN来的 CNN成功在欧式数据上:图像,文本,音频,视频 图像分类,对象检测,机器翻译 CNN基本能力:能学到一些局部的.稳定的结构,通过局部化的卷积核,再通过层级堆叠,将这些局部的结构变 ...

最新文章

  1. 机器学习入门学习笔记:(2.1)线性回归理论推导
  2. nginx 源码学习笔记(十八)—— ngx_add_inherited_sockets 继承的sockets
  3. 验证启用了不安全的HTTP方法
  4. WPF中使用流文档灵活地显示内容
  5. HDU6395 Sequence(矩阵快速幂+数论分块)
  6. python打开指定路径的excel_python使用相对定位,绝对定位,选取同级别文件下的指定文件(csv,excel)...
  7. java的历史_Java的历史
  8. script标签的使用,从零开始
  9. Lync 小技巧-14-为用户启用统一的联系人存储库-Lync-无联系人
  10. BZOJ4456 ZJOI2016旅行者(分治+最短路)
  11. 华硕固件默认ip_斐讯刷华硕固件后开启QOS限速的方法
  12. ISSCC 2017论文导读 Session 14: A 28nm SoC with a 1.2GHz Prediction Sparse Deep-Neural-Network Engine
  13. 计算机相关美文摘抄,唯美的散文段落摘抄
  14. C#获取屏幕的分辨率
  15. CSS 之 后代、并列选择器
  16. 已解决ValueError: Of the four parameters: start, end, periods, and freq, exactly three must be specifie
  17. linux 冒号用法
  18. HTML和web窗体的区别(转载)
  19. Metaq的一些简单机制
  20. 英飞凌基础学习笔记(GTM)Generic Timer Module

热门文章

  1. 14-HBase的介绍、数据模型以及架构模型
  2. RatingBar详解
  3. vim删除文本的命令
  4. CUDA--延迟隐藏
  5. 如何高效的配置Nginx
  6. 电信天翼云搭建Halo博客
  7. python_爬虫 16 Scrapy框架之(二)快速入门
  8. jstack 命令的使用和问题排查分析思路
  9. 2018CCPC吉林赛区 | 部分题解 (HDU6555 HDU6556 HDU6559 HDU6561)
  10. 余三码和8421码对比