本文提出的算法主要聚焦于单一时刻子网络的结构特征学习,在这里我们借鉴了GraphSAGE通过对当前节点以及其邻居节点的特征信息的聚合来得到节点嵌入的思路。和GraphSAGE不同的是,GraphSAGE是针对整个网络的节点的网络结构以及特征的信息提取,而BurstGraph则是针对每个时刻子网络的,相比较整体网络其邻居节点更加稀疏所以需要采样的邻居数目更少。
图1基于GraphSAGE的时刻子网络的结构特征学习过程的示意图。如图1所示,BurstGraph模型对每一个时刻子网络都共享同一个GraphSAGE结构来进行节点的特征信息和网络结构的提取,因为BurstGraph暂时不考虑节点的特征信息,所以第一层GraphSAGE输入的节点是随机初始化的向量,且所有时刻子网络都共享节点的随机初始化特征。
这样的好处是每个时刻子图GraphSAGE学习到的节点信息的不同之处主要来源于网络结构的差异。因为GraphSAGE能将节点的邻居信息也聚合进节点内,能够更好地表示节点的结构特征。
GraphSAGE逐层对网络节点的嵌入进行聚合,下一层的嵌入由上一层的嵌入转化而来,假设其网络的层数为K,其主要思想可以分成以下两步:(1)对于候选节点集合的每个节点,以该节点为中心对该节点的邻居进行固定数目的均匀抽样,若节点的邻居数目不足该数目,则重复采样其邻居,这样能保证神经网络的结构一致性。
对邻居节点的均匀采样能防止随着网络层数K增加而带来的节点K度邻居数目变得非常庞大,因为该抽样的固定数目往往比节点的度数小很多。(2)每一层节点的嵌入均由下一层的自身节点及其邻居节点的嵌入聚合而成,聚合的方式可以有均值、长短时记忆、最大池化等方式,聚合的节点嵌入经过非线性的矩阵变换能够得到新的节点嵌入表示,如此迭代。
GraphSAGE支持的聚合方式非常多样化,可以采用的有均值(Mean)、长短时记忆[1](Long-Short Term Memory,LSTM)、最大池化(Max-Pooling)等。取均值和最大池化的聚合方式,来源于卷积神经网络,其在卷积神经网络中主要针对感知域内容的压缩与强化。取均值的聚合方式是将上一层的自身节点及邻居节点的嵌入平均之后再通过非线性的矩阵变换来得到下一层的节点嵌入。
而最大池化的聚合方式,则是将将上一层自身节点以邻居节点的嵌入取每维的最大值之后再通过非线性的矩阵变换来得到下一层的节点嵌入。相比于取均值和最大池化的聚合方式,长短时记忆的聚合方式更加复杂,网络参数更多,也相对具有更强的表达能力。
长短时记忆的聚合方式,是将邻居节点视作节点序列,用长短时记忆的循环神经网络将节点序列的嵌入转换成短时表示以及长时表示,同时用一些精心设计的门结构来连接两个表示与下一时刻的输入,尽可能地不丢失长时间上的重要信息。
其主要的结构图如图2所示,而这些门结构主要是能在神经网络的梯度回传的过程中,通过门结构求偏导时固定的数值来减缓长序列存在的梯度消失的消极影响,从而让优化目标能更新长序列的网络参数来保证更多的信息被记录到嵌入中。
当然值得一提的是,由于无法区分邻居节点之间的重要程度,在本文中,邻居节点序列其实是一个无序的集合,即每次长短时记忆的循环神经网络都作用在一个随机打乱的邻居节点序列上,这样的好处是既能融合邻居节点的表示,同时又排除了固定规则排序下带来的先验损失。图2 LSTM的网络结构示意图。
图中,Xt,Xt+1表示的是LSTM神经网络的输入,在这里表示的是节点序列的上一层节点嵌入,ct,ct+1表示的是LSTM神经网络的长时记忆,其能记录网络中长序列节点的有效信息,并将其加入到后续的网络演化中,ℎt,ℎt+1表示的是LSTM神经网络的隐表示,在这里最后一个网络的隐表示经过非线性的矩阵变换之后,将会被当作下一层的节点嵌入。