【深度学习理论】(5) 图卷积神经网络 GCN

尽管在过去的几年中,神经网络的兴起与成功应用使得许多目标检测、自然语言处理、语音识别等领域都有了飞跃发展,但是将 RNN 或者GCN这样的深度学习模型拓展到任意结构的图上是一个有挑战性的问题。受限于传统深度学习方法在处理非欧式空间数据上的局限性,基于图数据结构的图神经网络应运而生。

在当前的图神经网络,主要分为以下几类,图卷积网络、图注意力网络、图自编码器、图生成网络。而其中图卷积神经网络是许多复杂图神经网络模型的基础,是大多数图神经网络模型通用的架构。图卷积神经网络以其简单的形式开创了图模型上的深度学习方法,并且在许多数据上的节点分类、链路预测等方面取得了非常不错的效果。下面我们将详细介绍一下图卷积神经网络的基本原理和思路。


1. 图论基础

下图是一个网络图,一共有6个节点。它的邻接矩阵为 A ,用于描述图的结构。

若两个节点之间有连边,那么邻接矩阵中该元素为1,否则为0。以第0个节点为例(A的第一行),0节点和1、4节点有连边,那么矩阵元素为1。

然而,如果每个节点有其自身的特征,那么邻接矩阵无法准确表达这个图。矩阵 H 代表节点的特征矩阵矩阵中的每一行代表每个节点的特征向量。例如0节点的特征向量是 [1, 11]。

有了邻接矩阵和节点矩阵就能表述网络图了,将邻接矩阵和节点矩阵相乘,我们发现相乘结果矩阵没有保留节点自身的特征信息。如在邻接矩阵中,节点0到自身节点没有连边,因此该元素是0,在特征提取过程中丢失了自身节点的信息。

为了避免在特征提取过程中丢失自身信息的情况,给网络中的每个节点添加自连接在邻接矩阵中,节点到自身的元素值为1,斜对角线上的元素都变为1。如下图,tilde{A} 代表有自连接的邻接矩阵

在网络中每个节点的度代表,该节点有几个邻接的节点,即该节点有几条连边在不加自连接的网络中,如0节点的度为2,而4节点的度为3。加自连接的度矩阵 tilde{D},如0节点的度为3,而4节点的度为4。


2. GCN原理

2.1 GCN 计算公式

large H^{(l+1)}=sigma (tilde{D}^{-frac{1}{2}}cdot tilde{A}cdot tilde{D}^{-frac{1}{2}}cdot H^{l}cdot W^{l})

W 代表权重矩阵;

A 代表网络图的邻接矩阵;

tilde{A} 代表有自连接网络的邻接矩阵,tilde{A}=A+I

tilde{D} 代表有自连接的邻接矩阵的度矩阵;只有斜对角元素有值的对角矩阵

自连接度矩阵的计算公式为: tilde{D_{ii}}=sum_{j}tilde{A}_{ij}

H 代表网络图的节点的特征;

对角矩阵求逆,就是求对角矩阵每个元素的倒数,变换公式如下

large B = begin{bmatrix} 2 & & \ & 3 & \ & & 4 end{bmatrix} ;;;;;;;;;; B^{-1}=begin{bmatrix} frac{1}{2} & & \ & frac{1}{3} & \ & & frac{1}{4} end{bmatrix}


2.2 公式解析 

(1)为什么要使用有自连接的邻接矩阵

如果只使用邻接矩阵 A 的话,对角线元素都是0,所以邻接矩阵 A 和节点特征矩阵 H 相乘后只会计算一个节点的所有邻居节点的特征加权和,而该节点自身的特征却被忽略了。因此使用带自连接的邻接矩阵 tilde{A} 就能将节点自身的特征保留下来,并且通过网络传递下去

(2)为什么要归一化操作

自连接邻接矩阵和节点特征矩阵相乘后,如果有的节点的连边比较多,那么计算后的某些节点特征就很大,需要对节点特征进行归一化操作,tilde{D}^{-frac{1}{2}}cdot tilde{A}cdot tilde{D}^{-frac{1}{2}}

A 是没有经过归一化的矩阵,如果用它和节点的特征矩阵 H 相乘,意味着特征指标之间的量纲影响没有被消除会改变特征的原本的分布情况,会极大地影响最终的效果,因此我们需要使用归一化或者标准化来将所有数据限制在一个合理的区间范围内,消除奇异样本数据导致的不良影响。平衡那些度很大的节点的重要性。也称为对称归一化拉普拉斯矩阵

normA_{ij}=frac{A_{ij}}{sqrt{d_{i}}cdot sqrt{d_{j}}}


2.3 前向传播方式

以一个两层 GCN 网络的前向传播为例,计算公式如下:

large Y = f(H,A) = Softmax(hat{A}cdot ReLU(hat{A}cdot Hcdot W^{0})W^{1})

large hat{A} 代表归一化之后的带自连接的邻接矩阵;

large H 代表每个节点的特征;

large W^{0} 代表第一层 GCN 层的可学习的权重参数;

large ReLU 代表激活函数;

ReLU(hat{A}cdot Hcdot W^{0}) 代表每个节点经过一层GCN层之后的提取的特征;

W^{1} 代表第二层 GCN 层的可学习的权重参数;

 hat{A}cdot ReLU(hat{A}cdot Hcdot W^{0})W^{1} 代表每个节点经过第二层GCN层之后提取的特征;

最终需要预测每个节点所属的类别,经过 Softmax 函数,得到每个节点属于每个类别的概率 Y 。


如下图所示,X 代表每个节点的特征C 代表初始特征的维度数量,经过一系列 GCN 层,得到新的节点特征 Z,以及输出特征维度的数量 F,再经过 Softmax 函数,得到节点属于每个类别的概率。


如何从 GCN 的输出层转为类别概率

方法一: 最后一层的 GCN 层的隐含层特征数等于类别数,直接使用 Softmax 输出概率。

方法二: 在最后一层 GCN 层输出的 F 维特征后面再接一个全连接层,作为分类器,使全连接层的输出数和类别数相同。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码
< <上一篇
下一篇>>