为给之后关于图卷积网络的科研做知识积累,这里写一篇关于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的初步理解的更多相关文章

  1. Two-Stream Adaptive Graph Convolutional Network for Skeleton-Based Action Recognition

    Two-Stream Adaptive Graph Convolutional Network for Skeleton-Based Action Recognition 摘要 基于骨架的动作识别因为 ...

  2. 《T-GCN: A Temporal Graph Convolutional Network for Traffic Prediction》 代码解读

    论文链接:https://arxiv.org/abs/1811.05320 博客原作者Missouter,博客链接https://www.cnblogs.com/missouter/,欢迎交流. 解读 ...

  3. Graph Convolutional Network

    How to do Deep Learning on Graphs with Graph Convolutional Networks https://towardsdatascience.com/h ...

  4. GCN: Graph Convolutional Network

    从CNN到GCN的联系与区别: https://www.zhihu.com/question/54504471/answer/332657604 更加详解Laplacian矩阵: https://ww ...

  5. GRAPH CONVOLUTIONAL NETWORK WITH SEQUENTIAL ATTENTION FOR GOAL-ORIENTED DIALOGUE SYSTEMS

    面向领域特定目标的对话系统通常需要建模三种类型的输入,即(i)与领域相关的知识库,(ii)对话的历史(即话语序列)和(iii)需要生成响应的当前话语. 在对这些输入进行建模时,当前最先进的模型(如Me ...

  6. GCN(Graph Convolutional Network)的简单公式推导

    第一步:从前一个隐藏层到后一个隐藏层,对结点进行特征变换 第二步:对第一步进行具体实现 第三步:对邻接矩阵进行归一化(行之和为1) 邻接矩阵A的归一化,可以通过度矩阵D来实现(即通过D^-1*A来实现 ...

  7. 《T-GCN: A Temporal Graph Convolutional Network for Traffic Prediction》 论文解读

    论文链接:https://arxiv.org/abs/1811.05320 最近发现博客好像会被CSDN和一些奇怪的野鸡网站爬下来?看见有人跟爬虫机器人单方面讨论问题我也蛮无奈的.总之原作者Misso ...

  8. 论文笔记之:Semi-supervised Classification with Graph Convolutional Networks

    Semi-supervised Classification with Graph Convolutional Networks 2018-01-16  22:33:36 1. 文章主要思想: 2. ...

  9. Graph Embedding Review:Graph Neural Network(GNN)综述

    作者简介: 吴天龙  香侬科技researcher 公众号(suanfarensheng) 导言 图(graph)是一个非常常用的数据结构,现实世界中很多很多任务可以描述为图问题,比如社交网络,蛋白体 ...

随机推荐

  1. 不卸载Nginx隐藏版本号

    [修改配置文件](不卸载Nginx隐藏版本号,直接修改配置文件) Linux环境: [root@localhost nginx-1.16.1]# curl -I http://10.56.1.115  ...

  2. 【雕爷学编程】Arduino动手做(57)---四档矩形波模块

    37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止37种的.鉴于本人手头积累了一些传感器和模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里 ...

  3. 输入一个整数n,输出契波那契数列的第n项

    package bianchengti; /* * 输入一个整数n,输出契波那契数列的第n项 * 斐波那契数列:1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89... */ p ...

  4. js得到文件后缀

    js得到文件后缀  http://www.cnblogs.com/lan0725/archive/2010/05/25/1873745.html function getFileExt(str) {  ...

  5. 自定义spring-boot-starter

    需求背景: Springboot是Spring旗下优秀的子项目之一,其核心理念之一:约定优于配置.通过自动化的配置极大的提升了我们的开发效率,目前已集成诸多组件的starter起步依赖,帮助我们更加快 ...

  6. 王艳 201771010127《面向对象程序设计(java)》第三周学习总结

    一:理论知识总结: 第一章:主要概述了java相比其他程序设计语言(如C语言.c++)之间的不同性能.为我们揭示了java这种语言的设计初衷一节截至目前java语言达到的效果.另外,还简要介绍了jav ...

  7. python 格式化输出(% VS format)

    提到Python中的格式化输出方法,一般来说有以下两种方式: 1)% 格式说明由%和格式字符组成,如%f,%s,%d,它的作用是将数据按照指定的格式输出.格式说明是由“%”字符开始的. #1.输出字符 ...

  8. layui加tp5图片上传实例

    <div class="layui-fluid"> <div class="layui-row"> <form class=&qu ...

  9. html文本超出加省略号

    如果实现单行文本的溢出显示省略号同学们应该都知道用text-overflow:ellipsis属性来,当然还需要加宽度width属来兼容部分浏览. 实现方法: overflow: hidden; te ...

  10. [Objective-C] 013_文件系统(File System)

    在前面三篇关于数据持久化,我们都用涉及到文件(plist文件,数据库文件),它们都是把它们存储在document目录下.iOS的文件机制是沙盒机制,应用只能访问自己应用目录下的文件.iOS应用产生的内 ...