关于Graph Convolutional Network的初步理解
为给之后关于图卷积网络的科研做知识积累,这里写一篇关于GCN基本理解的博客。GCN的本质是一个图网络中,特征信息的交互+与传播。这里的图指的不是图片,而是数据结构中的图,图卷积网络的应用非常广泛 ,经常被举到的典型例子就是一个空间中热量的传递和交互,这里不多作赘述。
一、图卷积网络与普通卷积网络的应用范围
图卷积网络为什么叫图卷积网络呢?图卷积网络,其实就是就是GCN,但GCN为什么是图神经网络呢?小编也很疑惑。
好了!开玩笑的话先打住,进入正题。首先复习一下卷积神经网络的工作原理,以检测图片的过程为例,卷积神经网络提取图片特征的过程,其实就是对每个像素周边像素加权求和的过程,初始每个像素对应的卷积核的权重随机,在通过反向传递、逐层梯度下降的优化之后才会得到合理的权重,根据这个权重得到的feature map便是特征提取的结果。对于图像等像素排列规整的结构来说,使用普通的卷积神经网络提取特征没有任何问题,但对于某些形如交通网、电网等“不整齐”的结构,普通的CNN就没有用武之地了,引用知乎大佬学术性的话讲,就是“CNN在Non Euclidean Structure的数据上无法保持平移不变性”,翻译成人话就是对于图结构的数据,其每个点邻接的数量各不相同,会给CNN提取特征带来很大的困难;要提取图结构的空间特征进行后续的机器学习,就需要使用图卷积网络。简而言之,GCN是CNN的升级版,CNN做不到的,GCN可以做,GCN做的到的,CNN做不到。
二、图卷积网络提取空间特征的方式
提取拓扑图空间特征有两种方法:空间领域与谱领域。这里我只对谱领域的提取方法作总结概述(空间领域的没学),通过定义图上的傅里叶变换,图的卷积方式得到表示方式,与深度学习结合得到最终的图卷积网络。在进行傅里叶和卷积的推导前先复习一下线代?一张图的拉普拉斯矩阵一般为其度矩阵D减去其邻接矩阵A,其他常见定义也有D-1LD与D-1L。
1.图的特征分解
对图的拉普拉斯矩阵进行谱分解,说的通俗易懂一点就是对角化。使用拉普拉斯矩阵进行运算的优势在这里体现:拉普拉斯矩阵满足谱分解所需线性无关的条件。图的拉普拉斯矩阵分解形式为UPU-1,其中U=[u1,u2,…,un],为列向量是单位特征向量的矩阵;P为含有n个特征值的对角矩阵。
2.含特征向量与特征值矩阵的傅里叶变换定义
在浏览一些大佬的博客与知乎时我常常感到诧异:进行完矩阵分解后怎么突然讲到傅里叶变化了?理清思路后发现相关矩阵傅里叶变换的定义是最后卷积公式推导的基础,由于两函数的卷积是其函数傅立叶变换乘积的逆变换,即:

为了能将针对图的傅里叶变换类比代入上述公式,我们需要推广傅里叶变换,把特征函数 eiωt 变为拉普拉斯矩阵的特征向量。
由傅里叶变换的一般形式:

类比特征方程定义:
LV=λV
L、V、λ分别代表拉普拉斯矩阵、特征向量/函数、特征值。将特征向量与前面定义的u矩阵对应,得到最终图的傅里叶变换定义为:

其中f(i)对应图的各个顶点,ux*(i)表示第x个特征向量的第 i 个分量。那么特征值λx下F的图傅里叶变换就是与λx对应的特征向量ux进行内积运算。矩阵形式为:

即f^=UT f。同时由傅里叶逆变换基本公式:

得到傅里叶逆变换的矩阵形式:

即f=Uf^。
3.图卷积推导
在定义完图上的傅里叶变换之后,总算要开始让梦想照进现实将卷积运算推广到图上了。由卷积定理:

将对应图上各点的f与卷积核h的傅里叶定义代入其中,卷积核在图上的傅里叶变换被定义为:

按卷积定理将两者傅里叶变换形式相乘得到:

最后乘U求得傅立叶变换乘积的逆变换,最终得到卷积:

以上,GCN粗略的推导过程就整理完毕了。
参考网站: https://www.zhihu.com/question/54504471?sort=created
https://www.cnblogs.com/h2zZhou/p/8405717.html
关于Graph Convolutional Network的初步理解的更多相关文章
- Two-Stream Adaptive Graph Convolutional Network for Skeleton-Based Action Recognition
Two-Stream Adaptive Graph Convolutional Network for Skeleton-Based Action Recognition 摘要 基于骨架的动作识别因为 ...
- 《T-GCN: A Temporal Graph Convolutional Network for Traffic Prediction》 代码解读
论文链接:https://arxiv.org/abs/1811.05320 博客原作者Missouter,博客链接https://www.cnblogs.com/missouter/,欢迎交流. 解读 ...
- Graph Convolutional Network
How to do Deep Learning on Graphs with Graph Convolutional Networks https://towardsdatascience.com/h ...
- GCN: Graph Convolutional Network
从CNN到GCN的联系与区别: https://www.zhihu.com/question/54504471/answer/332657604 更加详解Laplacian矩阵: https://ww ...
- GRAPH CONVOLUTIONAL NETWORK WITH SEQUENTIAL ATTENTION FOR GOAL-ORIENTED DIALOGUE SYSTEMS
面向领域特定目标的对话系统通常需要建模三种类型的输入,即(i)与领域相关的知识库,(ii)对话的历史(即话语序列)和(iii)需要生成响应的当前话语. 在对这些输入进行建模时,当前最先进的模型(如Me ...
- GCN(Graph Convolutional Network)的简单公式推导
第一步:从前一个隐藏层到后一个隐藏层,对结点进行特征变换 第二步:对第一步进行具体实现 第三步:对邻接矩阵进行归一化(行之和为1) 邻接矩阵A的归一化,可以通过度矩阵D来实现(即通过D^-1*A来实现 ...
- 《T-GCN: A Temporal Graph Convolutional Network for Traffic Prediction》 论文解读
论文链接:https://arxiv.org/abs/1811.05320 最近发现博客好像会被CSDN和一些奇怪的野鸡网站爬下来?看见有人跟爬虫机器人单方面讨论问题我也蛮无奈的.总之原作者Misso ...
- 论文笔记之:Semi-supervised Classification with Graph Convolutional Networks
Semi-supervised Classification with Graph Convolutional Networks 2018-01-16 22:33:36 1. 文章主要思想: 2. ...
- Graph Embedding Review:Graph Neural Network(GNN)综述
作者简介: 吴天龙 香侬科技researcher 公众号(suanfarensheng) 导言 图(graph)是一个非常常用的数据结构,现实世界中很多很多任务可以描述为图问题,比如社交网络,蛋白体 ...
随机推荐
- Kubernetes实战 - 从零开始搭建微服务 1 - 使用kind构建一个单层架构Node/Express网络应用程序
使用kind构建一个单层架构Node/Express网络应用程序 Kubernetes实战-从零开始搭建微服务 1 前言 准备写一个Kubernetes实战系列教程,毕竟cnblogs作为国内最早的技 ...
- 案例 (一)如何把python项目部署到linux服务器上
一.背景 用Python写了个脚本,需要部署到Linux环境的服务器上,由于服务器linux系统(centos,redhat等)自带的是python2,现在的python萌新都是从python3开 ...
- Raft翻译
英文原文:https://web.stanford.edu/~ouster/cgi-bin/papers/raft-atc14 In Search of an Understandable Conse ...
- 微信小程序实战篇-电商(一)
我想大家对电商一定不陌生,一般电商的底部导航栏有以下几个首页.分类.购物车.个人中心.所以我们按照这个来做吧. app.json是用来配置page路径以及导航栏属性的,那我们要做首页.分类.购物车.个 ...
- 【Python Deap库】遗传算法/遗传编程 进化算法基于python DEAP库深度解析讲解
目录 前言 概述 启发式的理解(重点) 优化问题的定义 个体编码 初始族群的创建 评价 配种选择 锦标赛 轮盘赌选择 随机普遍抽样选择 变异 单点交叉 两点交叉 均匀交叉 部分匹配交叉 突变 高斯突变 ...
- flask之jinjia2模板语言
flask_jinjia2.py ''' flask中的jinjia2模板语言(和django中模板类似): (1)模板变量{{ }} (2)模板标签{% %} ①for循环遍历 {% for foo ...
- Sql Server数据库导入Excel、txt数据详解,新人必看
转自个人原创 https://blog.csdn.net/qq_15170495/article/details/104591606 数据库的要想导入数据,列的映射很是关键,只有列名匹配好,系统才知道 ...
- MySQL(5)— 常用函数
五.MySQL常用函数 可参考[官网文档]https://dev.mysql.com/doc/refman/8.0/en/ 5-1.基本函数 数学运算: -- 数学运算 SELECT ABS(-8) ...
- 【pyecharts】地图显示不全
官网给的解释如下: 自从 0.3.2 开始,为了缩减项目本身的体积以及维持 pyecharts 项目的轻量化运行,pyecharts 将不再自带地图 js 文件. 如用户需要用到地图图表,可自行安装对 ...
- 【学习】Python os模块常用方法 记录
记录一些工作中常用到的用法 os.walk() 模块os中的walk()函数可以遍历文件夹下所有的文件. os.walk(top, topdown=Ture, onerror=None, follow ...