一、原理
背景
动态网络链路预测因其在生物学、社会学、经济学和工业领域的广泛应用而成为网络科学研究的热点,然而,由于网络结构随着时间的变化而变化,使得添加/删除链接的长期预测尤其困难。
与传统基于CNN的卷积处理操作不同,交通网络更适合被建模为图数据。卷积神经网络CNN只能处理欧式数据,比如图片、音频、视频等,这些数据具有平移不变性。图数据则是一种非欧式数据,由节点和链路集合构成,不具有平移不变性,也无法使用CNN进行处理。
GC-LSTM: graph convolution embedded LSTM for dynamic network link prediction
论文链接:https://doi.org/10.1007/s10489-021-02518-9
模型架构
文章主要提出了一个GC-LSTM模型,用于预测动态网络链路。对于每个图快照,GCN应用于捕捉节点的局部结构属性以及节点之间的关系,采用LSTM作为主要框架,学习动态网络中所有快照的时间特征。
目标
值得一提的是,该模型可以预测动态网络中链路的添加或删除,也就是对动态网络的邻接矩阵进行预测。
原理
(1)使用GCN+LSTM作为编码器
使用GCN聚合节点以及其一阶邻居节点的状态。如图中所示,对于t-1时刻的节点12来说,其一阶邻居节点为7、9、11,同时GCN还会卷积节点自身的信息(A+I_N),也就是节点12。
利用GCN提取各个节点的空间特征之后,使用LSTM提取时间序列的时序特征,公式如下:
(2)使用全连接层MLP作为解码器
由于GC-LSTM模型主要用于预测邻接矩阵,因此模型输出的,也就是说MLP最后一层的output_size大小为N。为输出的邻接矩阵的概率矩阵,代表t时刻存在从i到j的链路的概率。越大,说明节点i和节点j有更高的可能性是相连的。
(3)损失函数
为正则项,主要为了防止模型过拟合。
实验参数
GCN个数(对应LSTM的四个门控单元)4GCN参数K(卷积K阶邻居节点)3GCN隐藏层维度(输出维度)256LSTM隐藏单元256迭代次数200输入的连续序列数11阈值(判断链路是否存在)0.9
二、实验代码
在从0到1实现GCN——最详细的代码实现篇文章中,我们详细的讲述了如何使用PyG库中的GCN卷积模块,PyG库中大多只包括一些卷积处理,而GC-LSTM中除了需要对数据的拓扑信息进行卷积处理之外,还需要对数据的时序特征进行处理,这就不得不用到pytorch geometric temporal
点击PyG Temporal进行下载。里面提供了非常多的模型代码可供使用。
针对GC-LSTM模型代码,里面主要需要如下参数(一般只需要对前三个参数进行调整,因此这里只对前三个参数进行介绍):
in_channel:输入数据的维度(一般是数据节点特征矩阵的维度,为节点的数量,为节点特征的维度)。
out_channel:输出数据的维度,可根据需要自己进行设置和调整。
K:这里模型选用的是切比雪夫滤波器,如下公式所示,该滤波器进行化简即可得到GCN,所以本质上与GCN是一样的,K代表了聚合K阶邻居节点特征,也就是说K越大,聚合的邻居节点信息越多,卷积程度越深。
具体的代码见GC-LSTM代码(下)这里代码部分
版权归原作者 早睡早起困得早 所有, 如有侵权,请联系我们删除。