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的邻接矩阵
但是这样表示会有一些问题

  1. 矩阵会非常大,对于一个稀疏图,邻接矩阵的很多位置都是用不到的
  2. 可以发现,对于一个邻接矩阵,如果改变行或者列的点的排列顺序,并不会改变这个邻接矩阵表示的含义,他们都表示同一个图,那就要保证对于一个神经网络,如果我们放进去同一个图的不同邻接矩阵,都要保证识别出来是同一个图

    所以为了既存储高效,又要保证顶点排序不会影响结果的话,可以用下面这个方法

    那么接下来就是给了这样一个输入形式,怎么用神经网络来识别它

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相关推荐

  1. 【论文阅读】A Gentle Introduction to Graph Neural Networks [图神经网络入门](6)

    [论文阅读]A Gentle Introduction to Graph Neural Networks [图神经网络入门](6) GNN playground Some empirical GNN ...

  2. 【论文阅读】A Gentle Introduction to Graph Neural Networks [图神经网络入门](4)

    [论文阅读]A Gentle Introduction to Graph Neural Networks [图神经网络入门](4) The challenges of using graphs in ...

  3. 【论文阅读】A Gentle Introduction to Graph Neural Networks [图神经网络入门](3)

    [论文阅读]A Gentle Introduction to Graph Neural Networks [图神经网络入门](3) What types of problems have graph ...

  4. 【论文阅读】A Gentle Introduction to Graph Neural Networks [图神经网络入门](7)

    [论文阅读]A Gentle Introduction to Graph Neural Networks [图神经网络入门](7) Into the Weeds Other types of grap ...

  5. 【论文阅读】A Gentle Introduction to Graph Neural Networks [图神经网络入门](5)

    [论文阅读]A Gentle Introduction to Graph Neural Networks [图神经网络入门](5) Graph Neural Networks 图神经网络 Now th ...

  6. Distill文章-A gentle introduction to graph Neural Networks(图神经网络是怎么构造的)

    目录 1 简介 2 图的介绍 3 数据如何表示成图 4  三大类问题 5 将机器学习(神经网络)用在图上,会遇到什么挑战 6 最简单的GNN 7 信息传递(把图结构的信息考虑进去) 8  GNN的pl ...

  7. 图解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 ...

  8. 【论文阅读】A Gentle Introduction to Graph Neural Networks [图神经网络入门](2)

    [论文阅读]A Gentle Introduction to Graph Neural Networks [图神经网络入门](2) Graphs and where to find them 图以及在 ...

  9. 【论文阅读】A Gentle Introduction to Graph Neural Networks [图神经网络入门](1)

    [论文阅读]A Gentle Introduction to Graph Neural Networks [图神经网络入门](1) 最近读了一篇Distill网站上的一篇文章,讲的是图神经网络的入门, ...

最新文章

  1. andriod studio中的显式跳转和隐式跳转
  2. 修改Hosts为何不生效,是DNS缓存?
  3. 程序员学习视频教程汇总——(转载)
  4. 第2周项目2程序的多文件组织
  5. IBase component cannot be created and deleted in the same second
  6. MFC 单选按钮Radio使用注意
  7. C++学习之路 | PTA乙级—— 1014 福尔摩斯的约会 (20分)(精简)
  8. 初步计算机技术的书,计算机控制技术务书.doc
  9. powerdesigner显示工具面板_Adobe After Effects:如何使用木偶工具
  10. windows下数据库mysql8.0安装
  11. 0c-36-自动释放池应用场景
  12. C#中的底层音频控制播放
  13. 强迫症才需要看,新装电脑 Win10 硬盘整数分区
  14. WinRunner的工作流程
  15. TrueCrypt安装及其使用教程
  16. pokemmo客户端管理教程_pokeMMO安卓版教程
  17. 【FND】EBS中Java并发程序开发
  18. Windows10系统安装与初始化设置
  19. n+nn+nnn+...+n...=n...
  20. Ubuntu安装之,硬盘分区

热门文章

  1. stdin,stderr,stdout
  2. ORDER BY用法,避坑
  3. 大数据时代之java操作hdsf
  4. NC Cloud参照过滤(主子表、单表、查询区、报表)
  5. 纵深与动感同在 体会线条构图的魅力
  6. 【EMMC】MSM8953里时钟是如何分频的
  7. 青龙面板-花花阅读6.25 最新修复版
  8. 【Linux内核】Linux软中断处理机制-ksoftirqd
  9. 让PPT变高级的方法,PPT小白们快来学
  10. 20行Python小程序批量删除GitHub仓库,包