GNN-图神经网络基础内容概述

前言

过去的十多年中,神经网络在图像和文本等结构化数据中已经表现的十分出色。CNN,RNN,自编码器(Autoencoders)等很多流行的模型在以矩阵或向量作为输入的结构形式数据上都能很好地工作,我称这些结构化的数据为表格数据。而这些模型在非结构化数据上的表现怎样呢?比如最近大家在研究中频繁碰到的图结构数据,如果不将这些非结构化的图数据经过复杂的转换变为表格格式的话,使用传统的方法基本无从下手,那么有没有可以向他们有效学习的模型?答案便是GNN——图神经网络(Graph Neural Networks)

图神经网络

Graph Neural Networks其实在2005年就被引入,但是在过去的5年中它们开始流行起来。GNN能够对图中节点之间的关系进行建模,并为其生成数字表示。GNN的重要性不言而喻,因为当前可以用图形表示的现实世界数据太多:社交网络,化合物,地图,运输系统,甚至是在3D点云处理方向。因此,了解GNN背后的基本原理以及它们能够work的原因变得很重要。

先定义一个基本问题:我们想将给定的图映射到单个标签,标签可以是数字值,类或其他任何东西。
如图所示:
GNN-图神经网络基础内容概述_第1张图片
可以理解为基于图数据表示的分类任务,最后只有一个关于图的输出标签,当然可以是文本内容,甚至是另一个图。举个具体的例子:假设每个图都是一个化学化合物或一个分子,而标签对应着该分子可用于生产某种药物的可能性。如果我们有方法从每张图中提取出分子对应的标签,那么我们实际上就可以预测出在某种研发的药物中使用哪些分子更加有效。
上面的图可以表示为 F F F(图)=值,
我们想找到这个函数 F F F,当然下意识想到了神经网络来拟合这个 F F F
GNN-图神经网络基础内容概述_第2张图片

图片出自:Microsoft Research—Graph neural networks: Variations and applications

前向传播过程(Propagation)

我们如何获取这个标签值呢?我们知道可以在图上使用的一种神经网络。考虑到递归神经网络RNN可以对特殊类型的图进行操作——链状图(基本上是一条线)。时间序列实际上是链状图,其中每个时间戳都是一个节点,后面跟着下一个时间戳。
因此,我们可以构建一个网络,其中每个图节点都是一个循环单元(LSTM或变形的网络),且该节点表示的信息是通过该链传递消息的一种Embedding。而且由于单元都是循环的,因此当这种Embedding的消息在图形中移动时,信息是不会丢失的。这是我们熟悉的递归神经网络。与语言翻译和其他自然语言处理应用程序中使用的完全相同
我们可以将这个想法扩展到适当的图上,然后得到:
1).GNN基本表示:
GNN-图神经网络基础内容概述_第3张图片
2). GNN的前向传播:
GNN-图神经网络基础内容概述_第4张图片
3). 消息嵌入汇总:
在这里插入图片描述

图片摘自Microsoft Research关于GNN 的演讲幻灯片 GNN汇总视频B站链接

图例说明: 每个橙色三角形表示曾经是图形节点,现在已由循环单元替换。信封表示将要遍历图形节点的消息嵌入。每个图的边被神经网络取代,用来获取边上的信息特征(其权重)。
现在是学习部分。在当前步下,每个节点从其所有邻居中提取消息嵌入,并计算其总和(为啥是求和?因为求和操作最简单,且丢失信息最少),并将其连同收到的消息嵌入一起传递给循环单元,这将产生新的嵌入结果。这个新的嵌入包含所在节点的信息以及所有邻居的信息。在下一步,它还将包含其二阶邻居的信息,以此类推。该过程一直进行到每个节点都知道图中的所有其他节点为止。现在,每个嵌入都具有来自所有其他节点的信息。最后一步是收集所有嵌入累加(图上的圆圈部分),这将为我们提供整个图形的单个嵌入结果。
我们已经在单个嵌入中获取到了整个图的消息。现在可以在其他一些模型帮助下使用获得的图消息嵌入来执行一些分类,预测和聚类。
有几个推荐不错的GNN库推荐:

  • Deep Graph Library
  • deepmind / graph_nets:在Tensorflow中构建图网
  • rusty1s / pytorch_geometric:PyTorch的几何深度学习扩展库

最近会持续收集和分享GNN方向上的相关研究:包括演讲视频,论文,幻灯片等,欢迎关注!
GNN汇总视频B站链接

你可能感兴趣的:(神经网络,GNN)