楼主:
Apache (阿帕契)
2020-01-11 22:21:31https://zhuanlan.zhihu.com/p/76001080
GNN简介
图(graph)是一种数据结构,图神经网络(Graph Neural Network)应该是深度学习在图结
构数据上的一些模型、方法和应用。常见的图结构由节点(node)和边(edge)构成,节点包
含了实体(entity)信息,边包含实体间的关系(relation)信息。现在许多学习任务都需要
处理图结构的数据,比如物理系统建模(physics system)、学习分子指纹(molecular
fingerprints)、蛋白质接口预测(protein interface)以及疾病分类(classify
diseases),这些都需要模型能够从图结构的输入中学习相关的知识。
GNN起源
GNN起源于两种动机,一种动机来自于卷积神经网络(CNN),另一种动机来自于图嵌入
(graph embedding)。
第一种来源于CNN,CNN能够提取出多尺度的局部空间特征,并将它们进行组合来构建更加
高级的表示(expressive representations)。如果深入研究CNN和图结构的特点,可以发
现CNN的核心特点在于:局部连接(local connection),权重共享(shared weights)和多
层叠加(multi-layer)。这些同样在图问题中非常试用,因为图结构是最典型的局部连接
结构,其次,共享权重可以减少计算量,另外,多层结构是处理分级模式(hierarchical
patterns)的关键。然而,CNN只能在欧几里得数据(Euclidean data),比如二维图片和一
维文本数据上进行处理,而这些数据只是图结构的特例而已,对于一般的图结构,可以发
现很难将CNN中的卷积核(convolutional filters)和池化操作(pooling operators)迁移
到图的操作上。如下图,左图为图像,是比较明显的Euclidean数据,而右图为普通的
graph结构。
另一种动机来源于图嵌入(embedding),所谓嵌入,就是对图的节点、边或者子图
(subgraph)学习得到一个低维的向量表示,传统的机器学习方法通常基于人工特征工程来
构建特征,但是这种方法受限于灵活性不足、表达能力不足以及工程量过大的问题,词嵌
入常见的模型有Skip-gram,CBOW等,图嵌入常见模型有DeepWalk,Node2Vec等,然而,
这些方法方法有两种严重的缺点,首先就是节点编码中权重未共享,导致权重数量随着节
点增多而线性增大,另外就是直接嵌入方法缺乏泛化能力,意味着无法处理动态图以及泛
化到新的图。
GNN和传统NN的区别
首先,标准的神经网络比如CNN和RNN不能够适当地处理图结构输入,因为它们都需要节点
的特征按照一定的顺序进行排列,但是,对于图结构而言,并没有天然的顺序而言,如果
使用顺序来完整地表达图的话,那么就需要将图分解成所有可能的序列,然后对序列进行
建模,显然,这种方式非常的冗余以及计算量非常大,与此相反,GNN采用在每个节点上
分别传播(propagate)的方式进行学习,由此忽略了节点的顺序,相当于GNN的输出会随着
输入的不同而不同。
另外,图结构的边表示节点之间的依存关系,然而,传统的神经网络中,依存关系是通过
节点特征表达出来的,也就是说,传统的神经网络不是显式地表达中这种依存关系,而是
通过不同节点特征来间接地表达节点之间的关系。通常来说,GNN通过邻居节点的加权求
和来更新节点的隐藏状态。
最后,就是对于高级的人工智能来说,推理是一个非常重要的研究主题,人类大脑的推理
过程基本上都是基于图的方式,这个图是从日常的生活经历中学习得到的。GNN尝试从非
结构化数据比如情景图片和故事文本中产生结构化的图,并通过这些图来生成更高级的AI
系统。