Press "Enter" to skip to content

使用图神经网络(Graph Neural Network)学习特征表达

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

在现实世界的许多应用当中,很多数据集都天然的带有某种图结构信息,例如社交网络、万维网、知识网络、蛋白质分子结构和论文互相引用形成的网络等等。

 

 

在学习每个节点的特征时,传统的机器学习方法并不能很好地利用图结构信息直接进行训练,以捕捉每个节点的上下文信息(Context)或者对其他节点的依赖关系。最近,图神经网络(Graph Neural Network)提出了一种通用的、利用图结构信息训练神经网络的方法,这里对其核心的思想进行一下总结。

 

 

如上图所示,若已知一个图结构 G = ( V , E ) G=(V,E) ( V , E ) ,以及每个节点的初始特征向量 h v 0 , v ∈ [ 1 , ∣ V ∣ ] ) h_v^0, v \in [1, |V|]) h v 0 ​ , v ∈ [ 1 , ∣ V ∣ ] ) ,图神经网络将使用 K K K 种不同的单层全连接网络对每个节点特征进行迭代更新(注意,这里并不严格等价于单个 K K K 层的全连接网络),并在每次更新时会利用到节点周围的结构信息。对于每个节点 v v v ,其第 k k k 次迭代计算节点 特征向量的公式为:

 

h v k = σ ( W k ⋅ A g g ( { h v k − 1 , ∀ u ∈ N ( v ) } ) + B k ⋅ h v k − 1 ) . h_v^k=\sigma(W_k \cdot Agg(\{h_v^{k-1}, \forall u \in N(v)\})+B_k \cdot h_v^{k-1}). σ ( W k ​ ⋅ A g g ( { h v k − 1 ​ , ∀ u ∈ N ( v ) } ) + h v k − 1 ​ ) .

 

其中,矩阵 W k W_k W k ​ 和标量 B k B_k B k ​ 为第 k k k 个全连接网络的参数, σ \sigma σ 为某种激活(Activation)函数(例如,tanh、sigmoid、ReLU等等), N ( v ) N(v) N ( v ) 为与 v v v 节点相邻的节点集合, { } \{\} { } 为集合运算符, A g g Agg A g g 为某种聚合节点 v v v 周围节点特征向量的函数(Aggregation Function)。随着对图神经网络研究的深入,人们提出了许多种聚合函数,一些常用的例子如下所示:

∑ u ∈ N ( v ) h u k − 1 ∣ N ( v ) ∣ \sum_{u \in N(v)}{\frac{h_u^{k-1}}{|N(v)|}} ∑ u ∈ N ( v ) ​ ∣ N ( v ) ∣ h u k − 1 ​ ​ ,即计算 周围节点特征向量的平均向量(Averge-Pooling)
M a x P o o l ( { h u k − 1 , ∀ u ∈ N ( v ) } ) MaxPool(\{h_u^{k-1}, \forall u \in N(v)\}) M a x P o o l ( { h u k − 1 ​ , ∀ u ∈ N ( v ) } ) ,即对 v v v 周围节点特征向量每一维取最大值得到一个向量(Max-Pooling)
L S T M ( [ h u k − 1 , ∀ u ∈ π ( N ( v ) ) ] ) LSTM([h_u^{k-1}, \forall u \in \pi(N(v))]) L S T M ( [ h u k − 1 ​ , ∀ u ∈ π ( N ( v ) ) ] ) ,即对 v v v 周围节点周围节点特征向量随机排列组合,而后对该序列使用LSTM网络进行处理输出一个向量

对于每一个节点 v v v ,在使用上述公式进行 K K K 次迭代后,便得到了该节点的特征 h v K h_v^K h v K ​ ,这也是图神经网络的最终输出。将所有训练样本的特征代入传统的(有监督或半监督)误差函数中,便可以训练图神经网络模型参数了。下面的视频给出了某个图模型中,各个节点的特征向量在训练过程中的变化过程。

 

此外,近年来研究人员也从不同角度对图神经网络模型进行改进,以适应不同的需求。例如,GraphSage试图从理论上提升模型的通用性;还有一些方法,如PinSage,则对很多工程细节进行了改良,这里也对其做一些总结:

在图结构规模较大(如上亿的节点和边)时,可以使用随机游走(Random Walk)的方法确定节点的邻域 ,仅保留访问次数最高的一些邻接节点
使用映射和归约(Map and Reduce)的思想对节点的特征向量进行分布式计算,以节省训练时间
对所有节点初始特征向量进行预处理能有效提升性能,例如归一化(Normalization)操作和使用PCA进行去噪(Whitening)
使用ReLU作为激活函数通常能得到最好的效果,而在最后的一次特征迭代 不使用激活函数可能会提升性能
使用Adam优化算法对误差函数进行优化可以自适应地调整学习因子(Learning Rate),从而找到更好的模型参数

图神经网络模型在许多特定的应用上可以带来更好的性能,因为它能自然地融合与数据相关的图结构信息。当然该模型也并不是完美无瑕的,例如在每次迭代更新节点的特征向量 h v k h_v^k h v k ​ 时,该模型仅使用了一个单层的全连接神经网络(参数为矩阵 W k W_k W k ​ 和标量 B k B_k B k ​ ),由于它学习特征的精度有限,最终会限制整个模型的精度。不过常言道,“All models are wrong, but some are useful”,只要我们了解各个机器学习模型的优缺点,并根据实际情况进行甄选,便可以开发出有实际意义的自动化系统。

Be First to Comment

发表评论

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