深入理解图卷积神经网络(GCN)原理
文章目录
前言
深度学习的发展日新月异,从经典的深度网络(DNN、CNN、RNN)到GAN、强化学习。深度学习覆盖的应用场景越来越丰富。今天介绍的图神经网络是另一类深度学习方法。虽然,图神经网络也可以纳入深度学习的范畴,但它有着自己独特的应用场景和算法实现,对初学者并不算太友好。GCN,全称Graph Convolutional Network,图卷积网络,本文主要实现对GCN的深入理解,帮助快速理解GCN的原理以及用途。
一、为什么需要GCN
卷积神经网络(CNN)的输入是图片等具有欧几里得结构的图结构,也就是这样的图:
从欧式空间里面利用卷积核(kernel)来提取特征,因为图片是比较规则的图结构,因此使用卷积核就可以平移提取节点特征,即CNN的核心在于它的kernel,kernel是一个个小窗口,在图片上平移,通过卷积的方式来提取特征。这里的关键在于图片结构上的平移不变性:一个小窗口无论移动到图片的哪一个位置,其内部的结构都是一模一样的,因此CNN可以实现参数共享。这就是CNN的精髓所在。但是通常我们会遇到拓扑网络或者社交网络,即如下
像这种图结构,并不整齐,一个网络包含不同数量的节点,不同的节点也包含不同的邻居,这使得传统的CNN无法作用在该图结构中,并且图中的每个node之间通常具有联系,因此当GCN问世,解决了这一难题。
二、GCN的原理
1.图的定义
图结构用G=(V,E)来表示,图包括有向图或者无向图,但是在GCN中只考虑无向图,V表示node的几何,E表示edge的几何,n表示的是node的数量,m则表示边的个数。
下面我们介绍一个图结构在GCN中各种符号表示的含义:
G = ( V , E ) 表 示 当 前 图 结 构 v i ∈ V 表 示 v i 是 一 个 n o d e e i j = ( e i , e j ) ∈ E 表 示 n o d e i 与 j 之 间 的 边 N ( v ) = { u ∈ V ∣ ( v , u ) ∈ E } 表 示 点 v 的 所 有 邻 居 集 合 A i j 表 示 图 的 邻 接 矩 阵 A i j = 1 表 示 n o d e i 和 j 之 间 存 在 边 D 表 示 当 前 图 的 度 矩 阵 , D 是 对 角 矩 阵 d i i ∈ D 表 示 A 中 每 个 节 点 的 度 X ∈ R n × d 表 示 n 个 节 点 的 特 征 向 量 , 特 征 向 量 维 度 是 d G=(V,E) \qquad 表示当前图结构 \\v_i\in V\qquad表示v_i是一个node \\e_{ij}=(e_i,e_j)\in E\qquad表示node\quad i与j之间的边 \\N(v)=\{u\in V|(v,u)\in E\}\qquad表示点v的所有邻居集合 \\A_{ij}\qquad表示图的邻接矩阵 \\A_{ij}=1\qquad表示node\quad i和j之间存在边 \\D\qquad 表示当前图的度矩阵,D是对角矩阵 \\d_{ii}\in D\quad 表示A中每个节点的度 \\X\in R^{n\times d}表示n个节点的特征向量,特征向量维度是d G=(V,E)表示当前图结构vi∈V表示vi是一个nodeeij=(ei,ej)∈E表示nodei与j之间的边N(v)={
u∈V∣(v,u)∈E}表示点v的所有邻居集合Aij表示图的邻接矩阵Aij=1表示nodei和j之间存在边D表示当前图的度矩阵,D是对角矩阵dii∈D表示A中每个节点的度X∈Rn×d表示n个节点的特征向量,特征向量维度是d
2.GCN来了
GCN神奇的地方在于,能够聚合一个node附近的node特征,通过加权聚合学习到node的feature从而去做一系列的预测任务。
2.1 矩阵计算公式
假设我们手头有一批图数据,其中有n个节点(node),每个节点都有自己的feature向量,我们设这些节点的特征组成一个n×d维的特征矩阵X,然后各个节点之间的关系也会形成一个 n × n n\times n n×n维的邻接矩阵A。X和A便是我们模型的输入。
对于所有node而言,即 H ( l ) H^{(l)} H(l)表示当所有阶段在l层的特征向量矩阵, H ( l + 1 ) H^{(l+1)} H