文章目录
论文信息
EvolveGCN: Evolving Graph Convolutional Networks for Dynamic Graphs
原文地址:EvolveGCN: Evolving Graph Convolutional Networks for Dynamic Graphs: https://ojs.aaai.org/index.php/AAAI/article/view/5984/5840
摘要
Graph representation learning resurges as a trending researchsubject owing to the widespread use of deep learning for Eu-clidean data, which inspire various creative designs of neuralnetworks in the non-Euclidean domain, particularly graphs.With the success of these graph neural networks (GNN) in thestatic setting, we approach further practical scenarios wherethe graph dynamically evolves. Existing approaches typicallyresort to node embeddings and use a recurrent neural net-work (RNN, broadly speaking) to regulate the embeddingsand learn the temporal dynamics. These methods require theknowledge of a node in the full time span (including bothtraining and testing) and are less applicable to the frequentchange of the node set. In some extreme scenarios, the nodesets at different time steps may completely differ. To resolvethis challenge, we propose EvolveGCN, which adapts thegraph convolutional network (GCN) model along the tem-poral dimension without resorting to node embeddings. Theproposed approach captures the dynamism of the graph se-quence through using an RNN to evolve the GCN parameters.Two architectures are considered for the parameter evolution.We evaluate the proposed approach on tasks including linkprediction, edge classification, and node classification. Theexperimental results indicate a generally higher performanceof EvolveGCN compared with related approaches. The codeis available at https://github.com/IBM/EvolveGCN.
由于深度学习在欧几里得数据上的广泛应用,图表示学习重新成为一个热门的研究课题,它激发了非欧几里得领域神经网络,特别是图的各种创造性设计。随着这些图神经网络( Graph Neural Networks,GNN )在静态环境下的成功,我们进一步逼近了图动态演化的实际场景。现有方法通常借助节点嵌入,并使用循环神经网络( RNN ,广义上讲)来调节嵌入和学习时间动态。这些方法需要节点在全时间跨度(包括训练和测试两部分)内的知识,对于节点集频繁变化的情况适用性较差。在某些极端场景下,不同时间步的节点集合可能完全不同。为了解决这个挑战,我们提出了EvolveGCN,它在时间维度上使用图卷积网络( GCN )模型,而不需要使用节点嵌入。所提出的方法通过使用RNN来进化GCN参数来捕获图序列的动态性。对于参数演化,考虑了两种体系结构。我们在包括链路预测、边缘分类和节点分类的任务上评估了所提方法。实验结果表明,与相关方法相比,EvolveGCN的性能普遍较高。
evolving graph convolutional network
图卷积网络 (GCN)
GCN由多层图卷积组成,类似于感知器,但有一个由谱卷积驱动的邻域聚合步骤。在t 时刻,第l层接受邻接矩阵A和节点嵌入矩阵H输入,并使用权重矩阵W将节点嵌入矩阵更新为H ( l + 1 )输出。在数学上,我们写出:
其中,为At的归一化,表示为:
σ是除输出层外所有层的激活函数(通常是ReLU )。初始嵌入矩阵来自于节点特征:
设有L层图卷积。对于输出层,函数σ可以被视为标识,在这种情况下,包含由初始特征转换而来的图节点的高级表示;或者它可能是节点分类的softmax,在这种情况下,
由预测概率组成。
权重更新
该方法的核心是根据当前信息以及历史信息更新权重矩阵。这个需求可以通过使用循环架构自然地实现,有两个选项。
第一种方案是将视为动力系统的隐状态。我们使用一个门控循环单元( GRU )在时间t输入到系统时更新隐藏状态。输入信息自然是节点嵌入
。抽象地,我们表述为:
第二种方案是将作为动力系统(从而成为后续时间步的输入)的输出。我们使用长短期记忆( Long Short-Term Memory,LSTM )细胞来建模这种输入-输出关系。LSTM本身通过使用细胞上下文来保持系统信息,其作用类似于一个GRU的隐藏状态。在这个版本中,节点嵌入根本不被使用。抽象地,我们表述为:
Evolving Graph Convolution Unit (EGCU)
结合上文介绍的图卷积单元GCONV和递归体系结构,我们得到了演化图卷积单元( EGCU )。根据GCN权重的演化方式,我们有两个版本:
在- H版本中,GCN权重被视为循环体系结构的隐藏状态;
而在- O版本中,这些权重被视为输入/输出;
在这两个版本中,EGCU沿层执行图形卷积,同时随着时间的推移演变权重矩阵。自底向上链接这些单元,我们获得一个具有多个层的GCN,只需一个时间步。然后,单位水平地随着时间展开,形成和
的信息流。我们称整体模型为演化图卷积网络( EvolveGCN )。
- H版本的实现
-H版本可以通过使用一个标准的GRU来实现,有两个扩展:
( a )将输入和隐藏状态从向量扩展到矩阵(因为隐藏状态现在是GCN权重矩阵);
( b )匹配输入的列维度与隐藏状态的列维度。
矩阵扩展非常简单:简单地将列向量并排放置以形成矩阵。换句话说,我们使用相同的GRU来处理GCN权重矩阵的每一列。为了完整起见,我们在下面写GRU的矩阵版本,注意到所有的命名变量(例如Xt和Ht)都只是局部变量。
第二个要求是GRU输入的列数必须与隐藏状态的列数相匹配。令后面的数字为k。我们的策略是将所有的节点嵌入向量汇总成k个具有代表性的节点嵌入向量(各自作为塔器矢量使用)。下面的伪代码为这种摘要提供了一种流行的方法。按照惯例,它接受一个有许多行的矩阵Xt作为输入,并生成一个只有k行的矩阵Zt。总之需要一个独立于时间索引t (但是对于不同的图卷积层可能会有所不同)的参数向量p。该向量用于计算行的权重,其中选择与前k个权重对应的行,并为输出加权。
通过上面的函数g和summarize,我们现在完全指定了循环体系结构:
其中,# col表示矩阵的列数,上标T表示矩阵转置。有效地,将节点嵌入矩阵H ( l )归纳为合适维度的矩阵,然后将上一时间步的权重矩阵演化为当前时刻的权重矩阵
。
再次注意,循环隐状态不仅可以通过GRU实现,也可以通过其他RNN架构实现。
- O版本的实现
实现- O版本只需要将标准LSTM从向量版本直接扩展到矩阵版本即可。下面是伪代码,这里再次注意到所有命名变量都只是局部变量,它们不应该与我们到目前为止使用的数学符号混淆。
有了上面的函数f,我们现在完全指定循环架构:
注意,循环输入-输出关系不仅可以通过LSTM实现,还可以通过其他RNN架构实现。
两个版本如何选择
选择合适的版本是数据集依赖的。当节点特征具有信息含量时,- H版本可能更有效,因为它在循环网络中增加了节点嵌入。另一方面,如果节点特征没有太多的信息,但图结构起着更重要的作用,-O型版本关注结构的变化,可能更有效。
实验
数据集
- http://snap.stanford.edu/data/soc-sign-bitcoin-otc.html
- http://snap.stanford.edu/data/soc-sign-bitcoin-alpha.html
- http://konect.uni-koblenz.de/networks/opsahl-ucsocial
- http://snap.stanford.edu/data/as-733.html
- http://snap.stanford.edu/data/soc-RedditHyperlinks.html
- https://www.kaggle.com/ellipticco/elliptic-data-set