深度学习——A Gentle Introduction to Graph Neural Networks
GNN
Images as graphs
如何把一个张照片表示成一个图呢?
一张照片可以看成很多个像素,每个像素是一个点,在图中,就是图的结点,所有相邻的点,在图中表示的时候,在对应两个结点之间连一条边,中间的是邻接矩阵,矩阵和行和列表示点的编号,如果两个顶点有边,对应方格为蓝色,否则,为白色
Text as graphs
如何把本文表示成一个图?
文本是一个序列,我们可以把每一个词看成图的一个顶点,一个词和下一个词之间有一条有向边
例如一个文本:Graph are all around us
Molecules as graphs
这个就是将每个原子看成图的一个结点
Social networks as graphs
图中的每一个结点表示一个任务,如果这任务在剧里跟其他任务一起出现过,就在这两个结点之间加一条边
Citation networks as graphs
文章的引用关系也可以做成图,这个时候的图一般是有向图,如果A引用了B的文章。那么在图中往A到B连接一条有向边
The Challenges of using graphs to machining learning
最关键的一个问题就是怎样表示我们的图,使得它跟我们的神经网络是兼容的,图上面有四种信息,分别是顶点的属性,边的属性,全局的信息和连接性,前三个信息我们都可以用一个向量来表示,但是怎么表示连接性?
如果用前面看到的邻接矩阵来表示,那么有n个顶点,就会表示成一个n*n的邻接矩阵
但是这样表示会有一些问题:
- 矩阵会非常大,对于一个稀疏图,邻接矩阵的很多位置都是用不到的
- 可以发现,对于一个邻接矩阵,如果改变行或者列的点的排列顺序,并不会改变这个邻接矩阵表示的含义,他们都表示同一个图,那就要保证对于一个神经网络,如果我们放进去同一个图的不同邻接矩阵,都要保证识别出来是同一个图
所以为了既存储高效,又要保证顶点排序不会影响结果的话,可以用下面这个方法
那么接下来就是给了这样一个输入形式,怎么用神经网络来识别它
GNN
A GNN is an optimizable transformation on all attributes of the graph (nodes, edges, global-context) that preserves graph symmetries (permutation invariances).
The simplest GNN
举一个最简单的图神经网络的例子
对图中的顶点向量,边向量和全局向量分别构造了一个MLP(多层感知机),这个MLP输入的大小和输出的大小是一样的,这三个MLP就组成了GNN的一个层,这一层输入和输出都是一个图
对于输出,属性是更新了的,但是整个图的结构没有发生变化,这就满足第一个特性,因为每一个MLP都是对不同的信息单独作用的,并不会影响连接信息,那任意改变顶点或者边的顺序,也不会影响整个图的结果,满足第二个特性
GNN Predictions by Pooling Information
现在已经得到了一个GNN,那么怎么解决不同的任务呢?
- 比如解决一个二分问题,并且已经知道结点的向量表示,那么我们就在最后一层的输出后面加一个输出度为2的全连接层,然后再加一个softmax就可以得到输出了
- 假设我们还是相对一个结点做预测,但是我们并没有它的向量表示怎么办?
这个时候会用到一个技术交Pooling(汇聚)
就是会把所有的相邻结点边的向量拿出来,还有全局向量拿出来做一个全连接层得到输出
- 同样的,如果我们只有点的向量,没有边的向量,那就将点的向量汇聚到边上,因为一个边连接两个点,所以可以用这两个点得到边向量,进入边的输出层
- 如果没有全局的向量但是有顶点的向量,相对图做一个全局的预测,那就可以将所有的顶点的向量加起来得到一个全局的向量,然后通过全局向量的输出层得到结果
所以无论缺少哪一部分的属性,都可以通过汇聚操作得到我们要的那个属性的向量,最后能得到我们的预测值
那这两块总结起来就得到了最简单的一个GNN的样子
但是,这种方法有一个很大的局限性,每一种信息都是进入一个单独的MLP,并没有考虑这些点是跟哪些边相连的,哪些点是相连的等等,所以并没有合理得把整个图的信息更新到属性里,导致最后的结果不能很好的利用图的信息。
那就引入下面一小节解决这个问题
Passing messages between parts of the graph
信息传递
之前对一个点的向量的更新是直接将这个点经过一个MLP得到新的向量,但是消息传递里,更新一个点的向量,是将这个点和它的所有邻接点向量合在一起经过一个MLP进行更新
同样有时候并不是所有需要的信息都会包含,可能我们需要的结点的,但是只有边的信息,我们的确可以像前面提到的Pooling一样得到某些需要的向量信息,但是Pooling只能用在最后一层进行预测的时候。我们其实可以在CNN的各层进行结点和边信息的共享。
- 把顶点的信息传递给边,再将边的信息传递给顶点
像之前所说的那样,每个边都有两个顶点,可以把两个顶点的信息和到边上,得到边的一个信息,将每个点所连接的边的信息相加或者加权相加等汇聚到顶点,得到一个顶点的信息
- 如果将这个顺序反过来,先将边的信息传递给顶点,再将顶点的信息传递给边,得到的可能结果就不一样,因为之前是在最后一层才Pooling,所以顶点和边先更新谁都一样,但是现在可能就不一样了,不过并没有一个结论说哪种比较好
以上讲的都是边和顶点的交换,接下来说全局信息
Adding global representations
Q:全局信息是什么?
A:a master node or context vector(这个点是一个虚拟的点,它跟所有的边相连,跟所有的点相连)
Q:为什么要有全局信息?
A:每次消息传递的时候一个点只会看它的邻居,如果一个图比较大并且连接没有那么紧密,会导致一个消息从一个点传递到一个很远的点,需要走很长的步才行
所以在将一个点的信息汇聚到边上的时候,我们会将这个点需要的全局信息汇聚过去,更新边也一样,在更新U的时候,会将需要的点和边的信息全部汇聚过去
这篇博客参考的视频:李牧老师
视频里讲解的博客连接:博客
深度学习——A Gentle Introduction to Graph Neural Networks相关推荐
- 【论文阅读】A Gentle Introduction to Graph Neural Networks [图神经网络入门](6)
[论文阅读]A Gentle Introduction to Graph Neural Networks [图神经网络入门](6) GNN playground Some empirical GNN ...
- 【论文阅读】A Gentle Introduction to Graph Neural Networks [图神经网络入门](4)
[论文阅读]A Gentle Introduction to Graph Neural Networks [图神经网络入门](4) The challenges of using graphs in ...
- 【论文阅读】A Gentle Introduction to Graph Neural Networks [图神经网络入门](3)
[论文阅读]A Gentle Introduction to Graph Neural Networks [图神经网络入门](3) What types of problems have graph ...
- 【论文阅读】A Gentle Introduction to Graph Neural Networks [图神经网络入门](7)
[论文阅读]A Gentle Introduction to Graph Neural Networks [图神经网络入门](7) Into the Weeds Other types of grap ...
- 【论文阅读】A Gentle Introduction to Graph Neural Networks [图神经网络入门](5)
[论文阅读]A Gentle Introduction to Graph Neural Networks [图神经网络入门](5) Graph Neural Networks 图神经网络 Now th ...
- Distill文章-A gentle introduction to graph Neural Networks(图神经网络是怎么构造的)
目录 1 简介 2 图的介绍 3 数据如何表示成图 4 三大类问题 5 将机器学习(神经网络)用在图上,会遇到什么挑战 6 最简单的GNN 7 信息传递(把图结构的信息考虑进去) 8 GNN的pl ...
- 图解GNN:A Gentle Introduction to Graph Neural Networks
目录 前言 1.图是什么? 2.数据如何表示成图? 2.1 图像 2.2 文本 2.3 其他数据 2.3.1 分子 2.3.2 社交网络 2.3.3 引文图 3.图中的任务 3.1 图级任务 3.2 ...
- 【论文阅读】A Gentle Introduction to Graph Neural Networks [图神经网络入门](2)
[论文阅读]A Gentle Introduction to Graph Neural Networks [图神经网络入门](2) Graphs and where to find them 图以及在 ...
- 【论文阅读】A Gentle Introduction to Graph Neural Networks [图神经网络入门](1)
[论文阅读]A Gentle Introduction to Graph Neural Networks [图神经网络入门](1) 最近读了一篇Distill网站上的一篇文章,讲的是图神经网络的入门, ...
最新文章
- andriod studio中的显式跳转和隐式跳转
- 修改Hosts为何不生效,是DNS缓存?
- 程序员学习视频教程汇总——(转载)
- 第2周项目2程序的多文件组织
- IBase component cannot be created and deleted in the same second
- MFC 单选按钮Radio使用注意
- C++学习之路 | PTA乙级—— 1014 福尔摩斯的约会 (20分)(精简)
- 初步计算机技术的书,计算机控制技术务书.doc
- powerdesigner显示工具面板_Adobe After Effects:如何使用木偶工具
- windows下数据库mysql8.0安装
- 0c-36-自动释放池应用场景
- C#中的底层音频控制播放
- 强迫症才需要看,新装电脑 Win10 硬盘整数分区
- WinRunner的工作流程
- TrueCrypt安装及其使用教程
- pokemmo客户端管理教程_pokeMMO安卓版教程
- 【FND】EBS中Java并发程序开发
- Windows10系统安装与初始化设置
- n+nn+nnn+...+n...=n...
- Ubuntu安装之,硬盘分区