Graph Neural Network 1

Graph Neural Network Introduction

Posted by Rasin on August 13, 2020

Origin: 图神经网络入门

图神经网络入门

图神经网络优势

我们的推断主要来源于这个图的结构信息。对于深度模型如何有效使用这些图结构信息呢?经典的深度学习方法(比如DNN、RNN、CNN)能够有效的处理原始的输入,比如语音、图片、文本,但对于图结构信息,就不是很有效了。这样就引入了图神经网络。图神经网络的应用场景非常广泛,比如,社交网络(用户节点,关系为边)、电子购物(用户为和商品为节点,用户与商品之间的联系为边)、化学分子(原子为节点,化学键为边)。

图神经网络中的图

提到图大家会想到两类图:

  1. 数据结构与算法中的图
  2. 概率图模型中的图

因为大家的重点是机器学习,第一感觉会觉得是概率图模型中的图,比如贝叶斯网络、马尔科夫随机场。实际上,图神经网络中使用的是经典数据结构与算法中的图。

图由顶点(Vertex)和连接顶点的边(Edge)构成。顶点和边之间的关系可以用邻接矩阵表示,两个顶点间有边标识为1,否则为0。

图神经网络的基本框架

神经网络的一个特点就是能将原始的输入变成稠密向量表示,比如将字/词转化为字/词向量(Word2Vec),将文章转化为篇章向量(Doc2Vec),将图片转化为图片向量然后进行分类等。很自然针对于图结构数据,神经网络的一个目标也是将其转化为向量。而具体来说就是:

  • 把什么转化为向量?
  • 怎么转化为向量?

图\(G=(V,E)\),很显然,图神经网络就是把整个图G、每个节点V、每条边E转化为稠密向量。当然没必要每次都把GVE都进行向量化,哪部分向量化取决于实际的应用场景。一般来说主要包含三类任务:

节点层面任务

比如引文网络中,节点论文的分类,社交网络中用户标签的分类等。此时,主要关注节点和边层面的特征。

边层面任务

比如社交网络中,将用户作为节点,用户之间的关注关系建模为边,通过边预测实现社交用户的推荐。此时,主要关注节点和边的特征。

图层面的任务

比如对药物分子的分类。此时,任务不依赖于某个节点或某条边的属性,而是,需要考虑整个图的信息。

图嵌入、图神经网络、图卷积的关系

图神经网络是一个很宽泛的概念,图神经网络=图+神经网络。我们通俗讲的图神经网络主要指GNN和GCN(类似于深度学习网络中的前馈全连接DNN和CNN)。图嵌入发展较早,在早期是一个相对独立的领域,关注的问题大致分为4类:

  • 节点分类
  • 链接预测
  • 聚类
  • 可视化

方法主要分为三类:

  • 基于因子分解的方法
  • 基于随机游走的方法
  • 基于深度学习的方法

图嵌入

图嵌入发展较早,在早期是一个相对独立的领域。图嵌入比较经典的是DeepWalk,基本思想类似词向量训练。

详细见:Graph Embedding

图神经网络

图卷积网络

GCN分为谱域GCN(Spectral)和空域GCN(Spatial),其中,谱域GCN发展较早,但主要思想基于图的信号处理,理论方面较难理解,很多初学者觉得图网络对数学要求较高,多半是直接从谱域GCN切入的。实际上对于图网络的初学者,建议可以先跳过谱域GCN,等对图网络有较好的理解后,再回过头来看谱域的GCN。

空域GCN

经典的空域GCN是这篇《Learning Convolutional Neural Networks for Graphs》

谱域GCN

经典的谱域GCN是这篇《Semi-Supervised Classification with Graph Convolutional Networks》

谱域GCN的思想类似信号处理中的多级滤波器,核心点就是时域的卷积等于频域的乘积。EE方向的同学大多学习过《信号与系统》,对傅里叶时频变换,滤波器等概念要熟悉些。但对于计算机/软件的同学可能相对陌生。《信号与系统》是同样是一个独立的方向,涉及到的知识庞大又复杂。像图一样,只关心最核心的几点,比如:

  • 时频傅里叶变换
  • 时域卷积等于频域乘积

学习资料

比较合适的方式是,先通过论文综述的方式梳理清楚图神经网络的整体框架,然后,结合具体论文进行深入。

论文综述

  1. Graph Neural Networks: A Review of Methods and Applications
  2. Deep Learning on Graphs: A Survey
  3. A Comprehensive Survey on Graph Neural Networks