关于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)是一个非常常用的数据结构,现实世界中很多很多任务可以描述为图问题,比如社交网络,蛋白体 ...
随机推荐
- Sentinel源码解析四(流控策略和流控效果)
引言 在分析Sentinel的上一篇文章中,我们知道了它是基于滑动窗口做的流量统计,那么在当我们能够根据流量统计算法拿到流量的实时数据后,下一步要做的事情自然就是基于这些数据做流控.在介绍Sentin ...
- 第一章 Python 基础
1. 为什么学习 Python? 答题路线:a.python的优点,b.python的应用领域广 具体: 优点 1.python语法非常优雅,简单易学 2.免费开源 3.跨平台,可以自由移植 4.可扩 ...
- POJ2758 Checking the Text
题目链接:https://vjudge.net/problem/POJ-2758 题目大意: 先给出一串原始字符串,在此基础上执行两种操作: 1.在第 p 个字符前添加字符 ch,如果 p 比现字符串 ...
- 解决You should consider upgrading via the 'python -m pip install --upgrade pip' command. (pip工具版本较低导致)
步骤1: 找到pip- 版本号 dist-info 文件夹 操作: 在python的安装目录下的Lib文件下的site-packages文件夹下找到 ip- 版本号 dist-info 文件夹 ...
- Java——字符串排序
import java.util.ArrayList; import java.util.Collections; import java.util.List; public class Test { ...
- TP5.0登录验证码实现
<div class="loginbox-textbox"> <input class="form-control" placeholder= ...
- 三,<ul><li>实际应用时遇到的问题
在布局中使用的比较多的就是这个,快速排列一行或多行文字,还有横排显示作为导航栏标题栏等等书写格式:<ul> <li>山东教育.....</li></ul ...
- 前端自动化构建之webpack
前言 学了gulp后马上就开始学了一下webpack,所以马上来谈一下感受,感觉webpack有人说是一个模块化工具,用来和browserify来做比较,我感觉webpack牛逼多了,不但可以把复杂的 ...
- Elasticsearch到底哪点好?
少点代码,多点头发 本文已经收录至我的GitHub,欢迎大家踊跃star 和 issues. https://github.com/midou-tech/articles 从今天开始准备给大家带来全新 ...
- 拨号vps,拨号vps是什么意思干什么用的,如何使用拨号vps
首先,拨号vps是动态IP的VPS.vps虚拟服务器.拨号服务器.有些业务,如刷单.投票等操作对ip地址有限制,不能过多的使用.而拨号VPS通过拨号上网,每拨号一次号,就变一次IP,完成ip地址的动态 ...