Press "Enter" to skip to content

利用图神经网络(Graph Neural Network)与图结构信息学习特征表达

本站内容均来自兴趣收集,如不慎侵害的您的相关权益,请留言告知,我们将尽快删除.谢谢.

在现实世界的许多应用当中,很多数据集都天然的带有某种图结构信息,例如社交网络、万维网、知识网络、蛋白质分子结构和论文互相引用形成的网络等等。在学习每个节点的特征时,传统的机器学习方法并不能很好地利用图结构信息直接进行训练,以捕捉每个节点的上下文信息(Context)或者对其他节点的依赖关系。最近,出现了一种名为图神经网络(Graph Neural Network)的模型,它提出了一种通用的、利用图结构信息训练神经网络的方法,这里对其核心的思想进行一下总结。

 

 

如上图所示,若已知一个图结构 ,以及每个节点的初始特征 ,图神经网络将使用 个不同的单层全连接网络对每个节点特征进行迭代更新(注意,这里并非单个 层的全连接网络),并在每次更新时会利用到节点周围的结构信息。对于每个节点 ,其第 层特征的计算公式为

 

 

其中, 为第 个全连接网络的参数, 为某种激活(Activation)(例如,tanh、sigmoid、ReLU等等), 为与 节点相连的节点集合(或有向图中指向节点 的节点集合), 为集合运算符, 为某种聚合周围节点特征向量的函数。常用的聚合函数如下所示:

,即计算周围节点特征向量的平均向量(averge-pooling)
,即对周围节点特征向量每一维取最大值得到一个向量(max-pooling)
,即对周围节点特征向量随机排列组合形成的序列使用LSTM网络进行处理输出一个向量

对于每一个节点 ,在使用上述公式进行 次迭代后,便得到了该节点的特征 。将所有训练样本的特征代入传统的误差函数中,便可以训练图神经网络的模型参数了。下面是利用第一个聚合函数(averge-pooling)进行特征更新,并使用交叉熵误差(Cross-Entropy Loss)对图神经网络训练时,各节点特征向量变化的过程:

 

随着对图神经网络研究的深入,人们也提出了许多聚合函数 的其他变体,并根据使用的函数,微调了节点特征 的更新公式(如GraphSage和PineSage提出的方法)。但从本质上来说,它们的思想是一致的,只是从理论上提升了模型的通用性,并从很多工程细节进行了改进,以便运用于特别巨大的网络结构(例如包含上亿节点和边的图)。这里,也对能改进图神经网络训练效果的工程细节进行简要总结:

对所有节点初始特征向量进行预处理能有效提升性能,例如归一化(Normalization)操作和使用PCA进行去噪(Whitening)
使用Adam优化算法对误差函数进行优化可以自适应地调整学习因子(Learning Rate),从而找到更好的模型参数
使用ReLU作为激活函数通常能得到最好的效果
在最后的输出层不使用ReLU激活函数可能会提升性能
在所有的神经网络参数中使用偏移项(Bias Term)可以提升性能

Be First to Comment

发表评论

邮箱地址不会被公开。 必填项已用*标注