GCN,GAT,GGNN
GCN(Graph Convolutional Network),GAT(Graph Attention Network)和GGNN(Graph Gated Neural Network)都是用于图结构数据的深度学习模型,但它们在架构和工作原理上有一些异同点。下面是它们的异同点以及各自的优点和缺点:
异同点:
架构:GCN和GAT是基于图卷积的模型,而GGNN是基于循环神经网络的模型。 模型目标:GCN和GAT主要用于节点级别的任务,如节点分类和节点属性预测。GGNN主要用于图级别的任务,如图分类和图生成。 信息传播方式:GCN使用固定的邻居聚集方式传播信息,GAT使用自适应的注意力机制对邻居节点进行加权聚合,GGNN通过循环神经网络在节点之间传递信息。 参数共享:GCN和GAT在不同节点之间共享参数,而GGNN在循环过程中使用不同的参数。 可扩展性:GAT和GGNN在处理大型图时可能更具可扩展性,因为它们可以根据需要选择性聚合邻居节点的信息。
优点和缺点:
GCN:
优点:简单且易于实现,具有较好的可解释性,适用于节点级别的任务,能够捕捉节点之间的局 ...
GNNExplainer: Generating Explanations for Graph Neural Networks
1. Contribution 本文贡献
提出第一款通用,模型无关的(model-agnostic)对于GNN模型的解释器GNNEXPLAINER
形式化描述GNNEXPLAINER为最大化互信息的优化任务
抽取重要的子图结构及节点特征子集,作为模型解释。
2. Background 背景信息
对于非图结构的神经网络,解释方法主要有如下两个方向:
1.为整个网络构建简单的代替模型
常为模型无关的(model-agnostic),在待解释样本点的局部建立可信的估计。
E.g., 线性模型如LIME,规则集合如ANN_DT
2.识别模型计算过程中的重要层面
E.g. 关注特征梯度(feature gradients)等。
对于图神经网络设计解释方法,除去节点特征外,还需要结合考虑图的结构特征。
3. Problem Formulation 问题定义
3.1 GNN回顾
抽象GNN基本操作如下:
给定GNN模型 Φ\PhiΦ , 对于 lll 层节点vvv的特 ...
解读Laplace矩阵
什么是Laplace矩阵?
“拉普拉斯矩阵(Laplacian matrix) 也叫做导纳矩阵、基尔霍夫矩阵或离散拉普拉斯算子,主要应用在图论中,作为一个图的矩阵表示。”
常见的Laplace矩阵
Reference
什么是Laplace矩阵?
拉普拉斯矩阵(Laplacian matrix) 也叫做导纳矩阵,这次笔记主要是记录下GCN学习时的注意点,在图论(Graph theory)中,对于图 G=(V,E):
Laplacian 矩阵的定义为 L = D - A (其中 L 是Laplacian 矩阵, D=diag(d)是对角矩阵,d=rowSum(A),对角线上元素依次为各个顶点的度, A 则是图的邻接矩阵)
若只考虑无向图,那么L就是对称矩阵。
对于无向图的Laplace矩阵,它有哪些性质?
半正定矩阵(特征值非负,且是对称矩阵);
对称矩阵(一定有n个线性无关的特征向量);
对称矩阵的不同特征值对应的特征向量相互正交,这些正交的特征向量构成的矩阵为正交矩阵;
由于是半正定矩阵,所以是对称阵,那么能特征值分解(EVD)。
由于 U ...
1 什么是图神经网络
图神经网络(Graph Neu做ral Networks, GNNs)是一种基于图结构的深度学习方法,从其定义中可以看出图神经网络主要由两部分组成,即“图”和“神经网络”。这里的“图”是图论中的图数据结构,“神经网络”是我们熟悉的深度学习NN结构,如MLP,CNN,RNN等。要了解图神经网络我们需要先回顾一下“图”和“神经网络”的基本概念。
1.1图的定义
1.2典型神经网络
典型的神经网络结构有两条主线,一条主线是卷积神经网络,简称CNN,主要用于图像类数据的处理。另一条主线是循环神经网络,简称RNN,主要用于时序类数据的处理。由于神经网络结构的介绍不是本篇的重点,因此在这里不做重点介绍。只展示如下两图典型的CNN和RNN的结构:
下图展示了当前的主流神经网络结构以及适用的场景:
1.3 图神经网络
根据上述对图和神经网络的回顾,我们可以看出,图神经网络就是借助神经网络的“能力”如深度特征抽取等来处理图结构的数据,因此对于图神经网络,其直观的结构应该如下图:
其中图结构的数据有许多,如社交网络图、交通路线图、人物关系图、分子结构图、计算结网络拓扑图等等。 ...
1.数学定义
图网络: , 其中节点的数量 。对于当前的图网络他的邻接矩阵是 。某一个节点的特征用 表示, 矩阵 是整个图网络的节点特征的矩阵表示。
随机的潜在变量:某一个随机潜在变量用 表示,矩阵 表示图网络的所有节点被编码之后的潜在变量。
2. 方法
2.1推断模型(其实我觉得叫做编码模型更加合适)
1)首先用图卷积网络求出每个节点的高斯分布的均值和方差:
其中 ,其是一个两层的网络, 是归一化的邻接矩阵。
2)根据所求得的节点特征编码的均值和方差,我们可以得到推断模型:
(个人理解,之所以用乘积连接各个不同的分布,旨在求得N个独立的变量的联合分布)
这样每一个节点都有一个具有特定均值和方差的高斯分布去表示。
2.2生成模型
, 且 (这里有个问题,当 时候 是什么呢?)
2.3目标函数
最大化这个variational lower bound目标函数, 从而优化GCN的层参数 和 。
注:目标函数中的期望项只包括了标签为1的node,而标签为0的node是不予考虑的。在代码里是这样的操作的(见代码解读部分):在计算交叉熵损失的时候,给标签为1的 ...
一、度中心性 Degree Centrality
在网络中,一个节点的度越大,就意味着这个节点的度中心性就越高,就说明在网络中这个节点越重要。
其中,n表示节点的数量, 表示该节点的度。
二、特征向量中心性 Eigenvector Centrality
一个节点的重要性取决于其邻居节点的数量(即该节点的度),也取决与其邻居节点的重要性。与之相连的邻居节点越重要,则该节点就越重要。
特征向量中心性的计算公式如下:
假设 表示节点i的重要性,则
其中,c为比例常数,记 ,经过多次迭代达到稳态时,可以写成如下矩阵形式:
x=cAx.
这里x表示的是矩阵A的特征值 对应的特征向量,也可以表示成 这种形式。
1(哎,百度出来的,其实自己也没看明白,多次迭代到稳态是什么意思啊。。。)
于是自己又在b站上面看了个视频。
如图,先求出该图所表示的邻接矩阵的特征值。选最大的一个特征值2.48,求出对应的特征向量。将其乘以-1,是没有影响的。于是得到了图中所示的特征向量中心性
{1:0.53,2:0.358, 3:0.358 , 4:0.427 ,5:0.53}
可以看到,1和5节点的特征 ...
许多场景中的图数据是由多个图组成,而不是单个的大图数据。例如不同类型的人群社区。 通过用图刻画同一社区里人与人间的友谊,可以得到多张用于分类的图。 在这个场景里,整图分类模型可以识别社区的类型,即根据结构和整体信息对图进行分类。
概述¶
整图分类与节点分类或链接预测的主要区别是:预测结果刻画了整个输入图的属性。 与之前的任务类似,用户还是在节点或边上进行消息传递。但不同的是,整图分类任务还需要得到整个图的表示。
整图分类的处理流程如下图所示:
整图分类流程¶
从左至右,一般流程是:
准备一个批次的图;
在这个批次的图上进行消息传递以更新节点或边的特征;
将一张图里的节点或边特征聚合成整张图的图表示;
根据任务设计分类层。
批次的图¶
整图分类任务通常需要在很多图上进行训练。如果用户在训练模型时一次仅使用一张图,训练效率会很低。 借用深度学习实践中常用的小批次训练方法,用户可将多张图组成一个批次,在整个图批次上进行一次训练迭代。
使用DGL,用户可将一系列的图建立成一个图批次。一个图批次可以被看作是一张大图,图中的每个连通子图对应一张原始小图。
批次化的图¶
需要注意,DGL里对 ...
最重要的4类图数据:
同构图(Homogeneous Graph)
异构图(Heterogeneous Graph)
属性图(Property Graph)
非显式图(Graph Constructed from Non-relational Data)。
(1)同构图:
同构图是指图中的节点类型和关系类型都仅有一种。同构图是实际图数据的一种最简化的情况,如由超链接关系所构成的万维网,这类图数据的信息全部包含在邻接矩阵里。
同构图:在图里面,节点的类型和边的类型只有一种的图,
举个例子,像社交网络中只存在一种节点类型,用户节点和一种边的类型,用户-用户之间的连边。
(2)异构图:
与同构图相反,异构图是指图中的节点类型或关系类型多于一种。在现实场景中,我们通常研究的图数据对象是多类型的,对象之间的交互关系也是多样化的。因此,异构图能够更好地贴近现实。
异构图:在图里面,节点的类型+边的类型>2的一种图,
举个例子,论文引用网络中,存在着作者节点和paper节点,边的关系有作者-作者之间的共同创作关系连边,作者-论文之间的从属关系,论文-论文之间的引用关系。
( ...
GCN
GCN的公式看起来还是有点吓人的,论文里的公式更是吓破了我的胆儿。但后来才发现,其实90%的内容根本不必理会,只是为了从数学上严谨地把事情给讲清楚,但是完全不影响我们的理解,尤其对于我这种“追求直觉,不求甚解”之人。
下面进入正题,我们直接看看GCN的核心部分是什么样子:
假设我们手头有一批图数据,其中有N个节点(node),每个节点都有自己的特征,我们设这些节点的特征组成一个N×D维的矩阵X,然后各个节点之间的关系也会形成一个N×N维的矩阵A,也称为邻接矩阵(adjacency matrix)。X和A便是我们模型的输入。
GCN也是一个神经网络层,它的层与层之间的传播方式是:
这个公式中:
A波浪=A+I,I是单位矩阵
D波浪是A波浪的度矩阵(degree matrix),公式为
H是每一层的特征,对于输入层的话,H就是X
σ是非线性激活函数
我们先不用考虑为什么要这样去设计一个公式。我们现在只用知道:
这个部分,是可以事先算好的,因为D波浪由A计算而来,而A是我们的输入之一。
所以对于不需要去了解数学原理、只想应用GCN来解决实际问题的人来说,你只用知道:哦,这个GC ...
前言
在之前介绍的GraphSAGE[3]文章中,通过融合当前节点的邻居节点来获得这个节点的特征表示,从而将GCN扩展到了归纳学习的领域。在GraphSAGE中,各个邻居节点被等同的看待,然而在实际场景中,不同的邻居节点可能对核心节点起着不同的作用。这一部分要介绍的GAT(Graph Attention Network)[1]就是通过自注意力机制(self-attention)[2] 来对邻居节点进行聚合,实现了对不同邻居的权值自适应匹配,从而提高了模型的准确率。GAT在归纳学习和转导学习的任务中均取得了不错的效果。源代码参考:https://github.com/PetarV-/GAT
1. GAT详解
和很多深度学习方法类似,GAT由若干个功能相同的block组成,这个block叫做Graph Attention Layer,首先我们先介绍Graph Attention Layer的结构。
1.1 图注意力层
图注意力层(Graph attention layer)的输入时节点的特征值 ,其中 是节点的个数, 是节点特征的维度。经过一个Graph Attention Laye ...