图神经网络之图卷积网络——GCN
图卷积网络——GCN
- 一、前置基础知识回顾
- 图的基本概念
- 构造图神经网络的目的
- 训练方式
- 二、回顾卷积神经网络在图像及文本上的发展
- 图像上的卷积网络
- 文本上的卷积网络
- 图卷积网络的必要性
- 三、图卷积网络
- 从图像卷积类比到图结构卷积
- 图卷积网络的计算公式
- 邻接矩阵
- 度矩阵
- 理解计算公式
- 用消息传递的方式实现图卷积网络
- 消息传递的步骤
- 1. 边上的源节点,往目标节点发送特征——Send
- 2. 目标节点对收到的特征进行聚合——Recv
- 一个例子理解消息传递的作用
- 深入理解AH(l)AH^{(l)}AH(l)
- 图卷积网络在 PGL 的实现
- 用多层图网络完成节点分类任务
- GCN算法全流程
一、前置基础知识回顾
详细前置基础知识请看:
图神经网络前置基础知识——数据结构与算法中的图
图神经网络基础知识——初识图学习
图神经网络之图游走类模型算法——DeepWalk
图的基本概念
图是一种统一描述复杂事物的语言。
在实际生活中,很多事物都可以用图结构来表示,比如社交关系、化学分子结构、知识图谱、推荐系统等等。
构造图神经网络的目的
做图网络的目的,当然就是希望能够最终在图上做一些相关的任务。
假如我们希望做节点相关的任务,就可以通过 Graph Encoder,在图上学习到节点特征,再利用学习到的节点特征做一些相关的任务,比如节点分类、关系预测等等;
而同时,我们也可以在得到的节点特征的基础上,做 Graph Pooling 的操作,比如加权求和、取平均等等操作,从而得到整张图的特征,再利用得到的图特征做图相关的任务,比如图匹配、图分类等。
训练方式
图游走类算法主要的目的是在训练得到节点 embedding 之后,再利用其做下游任务,也就是说区分为了两个阶段。
对于图卷积网络而言,则可以进行一个端到端的训练,不需要对这个过程进行区分,那么这样其实可以更加针对性地根据具体任务来进行图上的学习和训练。
二、回顾卷积神经网络在图像及文本上的发展
图像上的卷积网络
在图像上的二维卷积,其实质就是卷积核在二维图像上平移,将卷积核的每个元素与被卷积图像对应位置相乘,再求和,得到一个新的结果。
其实它有点类似于将当前像素点和周围的像素点进行某种程度的转换,再得到当前像素点更新后的一个值。
文本上的卷积网络
它的本质是利用了一维卷积,因为文本是一维数据,在我们已知文本的词表示之后,就在词级别上做一维的卷积。
其本质其实和图像上的卷积没有什么差别。
(注:卷积核维度和红框维度相同,2 * 6就是2 * 6)
图卷积网络的必要性
文本和图像,它们都是排列整齐的数据,也就是规则性数据。这类规则数据可以直接用 CNN 算法进行一个学习。
但是对于不规则数据,比如树、图,我们应该使用图卷积网络。
三、图卷积网络
图卷积网络的全称为Graph Convolutional Network,即GCN
从图像卷积类比到图结构卷积
通过理解图像卷积,来对图结构卷积进行一个类比
图像卷积的本质其实非常简单,就是将一个像素点周围的像素,按照不同的权重叠加起来,当然这个权重就是我们通常说的卷积核。
其实可以把当前像素点类比做图的节点,而这个节点周围的像素则类比为节点的邻居,从而可以得到图结构卷积的简单的概念:
将一个节点周围的邻居按照不同的权重叠加起来
而图像上的卷积操作,与图结构上的卷积操作,最大的一个区别就在于:
- 对于图像的像素点来说,它的周围像素点数量其实是固定的;
- 但是对于图而言,节点的邻居数量是不固定的。
图像卷积
- 将一个像素点周围的像素按照不同的权重叠加起来。
图结构卷积
- 将一个节点周围的邻居按照不同的权重叠加起来。
图卷积网络的计算公式
其中,红框内是图卷积网络的核心公式,接下来看看具体这些字母代表的含义。
邻接矩阵
A表示的是邻接矩阵
邻接矩阵的对角线上都为1,这是因为添加了自环边,这也是这个公式中使用的定义,其他情况下邻接矩阵是可以不包含自环的。(包含了自环边的邻接矩阵)
度矩阵
D 其实是度矩阵
度矩阵就是将邻接矩阵上的每一行进行求和,作为对角线上的值。
而由于我们是要取其-1/2的度矩阵,因此还需要对对角线上求和后的值做一个求倒数和开根号的操作,因此最后可以得到右边的一个矩阵运算结果。
理解计算公式
为了方便理解,我们可以暂时性地把度矩阵在公式中去掉:
首先来理解,邻接矩阵和我们的节点表示相乘的物理意义是什么。
为了得到H(l+1)H^{(l+1)}H(l+1)的第0行,我们需要拿出A的第0行与H(l)H^{(l)}H(l)相乘,这是矩阵乘法的概念。
接下来就是把计算结果相乘再相加的过程。
这个过程其实就是消息传递的过程:
对于0号节点来说,将邻居节点的信息传给自身。
用消息传递的方式实现图卷积网络
这里有2个概念需要了解:
- Send: 源节点发送消息
- Recv: 目标节点接受消息
消息传递的步骤
1. 边上的源节点,往目标节点发送特征——Send
2. 目标节点对收到的特征进行聚合——Recv
一个例子理解消息传递的作用
假设你收到了4个人的评价,左边2位是你的好朋友,右边两位是与你关系不大的明星:
右边2位明星可能说了受众很广的评价,而你的好朋友比较了解你,对你说的都是客观的评价,那么,右边2位明星的评价对你来说就显得不那么重要了:
深入理解AH(l)AH^{(l)}AH(l)
实际情况中,每个节点发送的信息所带的信息量应该是不同的。
图卷积网络将邻接矩阵的两边分别乘上了度矩阵,相当于给这个边加了权重。其实就是利用节点度的不同来调整信息量的大小。
这个公式其实体现了:
一个节点的度越大,那么它所包含的信息量就越小,从而对应的权值也就越小。
怎么理解这样的一句话呢,我们可以设想这样的一个场景。假如说在一个社交网络里,一个人认识了几乎所有的人,那么这个人能够给我们的信息量是比较小的。
也就是说,每个节点通过边对外发送相同量的信息, 边越多的节点,每条边发送出去的信息量就越小。
图卷积网络在 PGL 的实现
PGL把整个消息传递的过程同样区分为了 send 和 recv 过程,也就是发送消息,接收消息的过程。
用多层图网络完成节点分类任务
GCN算法全流程
最后,将最终获得的表示来作为我们最终的一个节点表示,进而利用分类器来做节点分类。
图神经网络之图卷积网络——GCN相关推荐
- 一文读懂简化的图卷积网络GCN(SGC)| ICML 2019
作者 | yyl424525 来源 | CSDN博客 文章目录 1 相关介绍 1.1 Simple Graph Convolution (SGC)提出的背景 1.2 SGC效果 2 Simple Gr ...
- 图卷积网络 GCN Graph Convolutional Network(谱域GCN)的理解和详细推导
文章目录 1. 为什么会出现图卷积神经网络? 2. 图卷积网络的两种理解方式 2.1 vertex domain(spatial domain):顶点域(空间域) 2.2 spectral domai ...
- 图卷积网络GCN(Graph Convolution Network)(一)研究背景和空域卷积
文章首发于个人站点: 图卷积网络GCN(Graph Convolution Network)(一)研究背景和空域图卷积 | 隐舍 公众号:[DreamHub] 由于文章篇幅较长,因此将其分解为三部分: ...
- 图神经网络的图网络学习(上)
图神经网络的图网络学习(上) 原文:Learning the Network of Graphs for Graph Neural Networks 摘要 图神经网络 (GNN) 在许多使用图结构数据 ...
- [图神经网络]ViG(Vision GNN)网络代码实现
论文解读: [图神经网络]视觉图神经网络ViG(Vision GNN)--论文阅读https://blog.csdn.net/weixin_37878740/article/details/13012 ...
- 图神经网络与图注意力网络相关知识概述
#图神经网络# #图注意力网络# 随着计算机行业和互联网时代的不断发展与进步,图神经网络已经成为人工智能和大数据的重要研究领域.图神经网络是对相邻节点间信息的传播和聚合的重要技术,可以有效地将深度学习 ...
- 图神经网络的图网络学习(下)
原文:Learning the Network of Graphs for Graph Neural Networks 1. 文章信息 作者 Yixiang Shan, Jielong Yang, X ...
- 当图网络遇上计算机视觉!计算机视觉中基于图神经网络和图Transformer的方法和最新进展...
点击下方卡片,关注"CVer"公众号 AI/CV重磅干货,第一时间送达 点击进入-> CV 微信技术交流群 可能是目前最全面的<当图网络遇上计算机视觉>综述!近四 ...
- 「图神经网络复杂图挖掘」 的研究进展
来源:专知 图神经网络对非欧式空间数据建立了深度学习框架,相比传统网络表示学习模型,它对图结构能够实施更加深层的信息聚合操作.近年来,图神经网络完成了向复杂图结构的迁移,诞生了一系列基于复杂图的图神经 ...
最新文章
- java+yeild+sleep_Java并发编程--yield sleep和wait的区别
- 标准非STL容器 : bitset
- Nginx学习笔记(三)
- linux系统下c语言编程的,Linux操作系统下C语言编程从零开始
- android 索引怎么使用情况,android 數據庫查詢中使用索引-大幅提高數據庫操作速度...
- ubuntu安装时发现GPT分区表,无法安装问题
- 项目经理需要的思维批判
- 把树分成森林 matlab,20170106RF_Matlab 随机森林指的是利用多棵树对样本进行训练并预测的一种分类器,包括两个方面:数据的随 269万源代码下载- www.pudn.com...
- 一个适合于Python初学者的入门练手项目
- 为什么需要跨境ERP系统?
- 网站选择按钮点击无反应?_Win10系统电脑鼠标左键单击没有反应的解决办法
- 递归:若函数包含了对其自身的调用,该函数为递归的。《Python核心编程》P305...
- 软件测试 -- 单元测试,集成测试,系统测试的侧重点
- 这是我看过最棒的MEMS介绍文章,从原理制造到应用全讲透(强推)
- 神州数码IPv6路由怎么配置?
- 根据屏幕分辨率设置 layer.open 的大小
- CDO玩“跨界”,数据驱动有戏了!
- 17.12.2B组总结
- c语言实现rsa签名验证,C语言openssl库RSA签名
- 微博字数监听、昵称长度判断
热门文章
- 【云原生】Kubernetes(k8s)部署 MySQL+Dubbo+Nacos服务
- [4G/5G/6G专题基础-160]: 5G双链接与MCG/SCG/PCell/PSCell/SCell
- java 公网ip_JAVA获取公网ip
- 强大的Java Json工具类
- 搭建私人《我的世界》服务器,使用Cpolar内网穿透更简单
- 判断Android手机是否有录音
- 极客公园对话 Zilliz 星爵:大模型时代,需要新的「存储基建」
- html滚动字幕循环,H5 div文字循环滚动
- RC4加密以及python实现
- 地图选点(百度地图web端)