前言:
2,3年前,我对于深度学习认知范围仅限于CNN,RNN等传统神经网络模型,学弟跟我说他在研究图神经网络,我顿时一惊感觉神经网络的发展竟然如此之快。后来,他去阿里上班,阿里也是当下使用图神经网络最成熟的互联网公司。现在,各大会议收录了不少图神经网络的论文,我为了追赶潮流,也得看看图神经网络的相关论文。理解这类论文要求数学基础比较高,在知乎上有位清华的博士superbrother写了很多对图神经网络的理解,看了以后非常受益(当然也不容易理解),其中涉及各种傅立叶变换等数学理解。当然,有本书《深入浅出图神经网络》也讲了不少对于图神经网络的理解,在Github上也有对应的代码实现。
1 图神经网络的介绍
很多书把图神经网络和卷积神经网络(CNN),循环神经网络(RNN)并列。相对于CNN和RNN而言,GNN的发展比较短但是在很多领域都有很好的应用。因为图数据有复杂的结构,多样化的属性类型,可以模拟多种任务场景,比如社交网络,调控网络,生物分子结构等。
1.1 Graph上的任务:
节点分类:预测特定节点的类别
链接预测:预测两个节点是否有联系
社区检测:识别密集联系的节点群落
网络相似性:两个网络的相似性
1.2 图神经网络与其他神经网络的区别:
现在图神经网络的大多数方法都是制推行学习,不能直接泛化到未知节点。对于大多数情况图会演化,当网络结构改变以及新的节点出现,直推性学习需要重新训练,很难落地在需要快速生成未知节点embedding的机器学习系统上。
直推式(transductive)学习:从特殊到特殊,只考虑当前数据数据。学习目标是直接生成当前节点的embedding,然后把每个节点embedding作为参数通过SGD优化,例如Deepwalk,LINE;在训练过程中使用图的拉普拉斯矩阵进行计算,如GCN。
归纳性(inductive)学习:平常所说的机器学习任务,从特殊到一般:目标是为未知数据上有区分性。
2 图神经网络的基本概念
2.1 图的定义
对于图,我们有以下特征定义:对于图G=(V,E),V为节点的集合,E为边的集合,对于每个节点i,均有其特征,可以用矩阵表示。其中N表示节点数,D表示每个节点的特征数,也可以说是特征向量的维度。
图嵌入(Graph Embedding/Network Embedding),属于表示学习的范畴,也可以叫为网络嵌入,图表示学习,网络表示学习等等。
将图中的节点表示为低维,实值,稠密的向量形式,使得得到的向量形式可以在向量空间中具有表示以及推理的能力。例如用户社交网络得到节点表示就是每个用户的表示向量,再用于节点分类等。
将整个图表示为低维,实值,稠密的向量形式,用来对整个图结构进行分类。
2.2 图嵌入的三种方式:
矩阵分解:基于矩阵分解的方法是将节点间的关系用矩阵的形式加以表达,然后分解该矩阵以得到嵌入向量。通常用于表示节点关系的矩阵包括邻接矩阵,拉普拉斯矩阵,节点转移概率矩阵。
DeepWalk:DeepWalk是基于word2vec词向量提出来的。word2vec在训练词向量时,将词料作为输入数据,而图嵌入输入的是整张图。DeepWalk把节点当做单词,把随机游走得到的节点序列当做句子,然后将其直接作为word2vec的输入可以节点嵌入表示,同时利用节点的嵌入表示作为下游任务的初始化参数可以很高的优化下游任务的效果。
基于随机游走的方法最大的优点是通过将图转化为序列的方法实现了大规模图的表示学习。但是这类方法有两个缺点:一是将图转化成序列集合,图本身的结构信息没有被充分利用;二是该学习框架很难自然地融合图中的属性信息。
Graph Neural Network:图结合deep learning方法搭建的网络统称为图神经网络GNN,其中包含著名的GCN(图卷积神经网络)和GAT(图注意力网络)。
优点:相较于分解类的方法只能在小图上学习,GNN可以在大规模的图上学习;非常自然地融合了图的属性信息进行学习
2.3 图相关矩阵的定义:
度矩阵D只有对角线上有值,为该节点的度,其余为0;邻接矩阵A只有在有边链接的两个节点之间为1,其余地方为0;拉普拉斯矩阵L为D-A。
第一种L=D-A定义为Laplacian矩阵更专业的名称为Combinatorial Laplacian
第二种
定义为Symmetric normalized Laplacian,这为归一化形式的拉普拉斯矩阵,取值范围
第三种
定义为Random walk normalized Laplacian
3. 图卷积神经网络
图卷积神经网络可以类比于卷积神经网络在图像处理的位置。用随机的共享的卷积核得到像素点的加权和从而提取到某种特定的特征,然后用反向传播来优化卷积核参数就可以自动的提取特征,这是CNN提取特征的机制。
现实中很多重要的数据都是用图的结构存储,例如社交网络信息,知识图谱,蛋白质网络,万维网等。这些图网络,不是整齐的矩阵形式,而是非结构化信息。
省略从傅立叶变换到拉普拉斯算子到拉普拉斯矩阵的数学推导
对于任何一个图卷积层都可以写成一个非线性函数
代表第一层的输入,,N为图的节点个数,D为每个节点特征,A为邻接矩阵。
一种通常的实现方法
D为的度矩阵;H是每一层的特征,对于输入层,H就是X;是激活函数。
构建一个两层的GCN,激活函数分别采用ReLU和Softmax,整正向传播公式为
针对于所有带标签的节点计算cross entropy损失函数
这可以训练一个node classification的模型。由于即使只有很少的标签也可以训练,所以把这种方法称为半监督分类。同理,可以改变损失函数适用于graph classification,link prediction等问题。
Reference:
郁蓁的机器学习笔记 https://www.zhihu.com/column/c_1173319214768201728
superbrother https://www.zhihu.com/people/superbrother-58/posts