【图结构】之图神经网络GCN详解

作者:張張張張
github地址:https://github.com/zhanghekai
【转载请注明出处,谢谢!】


G C N GCN GCN源代码地址:https://github.com/tkipf/gcn
G C N GCN GCN论文地址:https://arxiv.org/pdf/1609.02907.pdf


一、GCN诞生的由来

\qquad C N N CNN CNN系列: 做图像识别时,对象是图片,是一个二维的结构,于是人们发明了 C N N CNN CNN这种神奇的模型来提取图片的特征。 C N N CNN CNN的核心在于它的 k e r n e l kernel kernel k e r n e l kernel kernel是一个个小窗口,在图片上平移,通过卷积的方式来提取特征。这里的关键在于图片结构上的平移不变性: 一个小窗口无论移动到图片的哪一个位置,其内部的结构都是一模一样的,因此是 C N N CNN CNN可以实现所在。

\qquad R N N RNN RNN系列: 它的对象是自然语言这样的序列信息,是一个一维的结构, R N N RNN RNN就是专门针对这些序列的结构而设计的,通过各种"门"的操作,使得序列前后的信息互相影响,从而很好地捕捉序列的特征。

\qquad 上面讲的图片或者语言,都属于欧式空间的数据,因此才有维度的概念,欧式空间的数据的特点就是结构很规则。但是现实生活中,其实有很多很多不规则的数据结构,典型的就是图结构,或称拓扑结构,如社交网络、化学分子结构、知识图谱等等。
\qquad 图的结构一般来说是十分不规则的,可以认为是无限维的一种数据,所以它没有平移不变性。每一个节点的周围结构可能都是独一无二的,这种结构的数据,就让传统的 C N N CNN CNN R N N RNN RNN瞬间失效。为了处理这类数据,涌现出了许多方法, G C N GCN GCN只是其中的一种。

G r a p h    C o n v o l u t i o n a l    N e t w o r k s ( G C N ) : Graph\;Convolutional\;Networks(GCN): GraphConvolutionalNetworks(GCN): 图卷积神经网络,实际上跟 C N N CNN CNN的作用一样,就是一个特征提取器,只不过它的对象是图数据。 G C N GCN GCN精妙地设计了一种从图数据中提取特征的方法,从而让我们可以使用这些特征去对图数据进行: 节 点 分 类 ( n o d e c l a s s i f i c a t i o n ) 节点分类(node classification) (nodeclassification) 图 分 类 ( g r a p h c l a s s i f i c a t i o n ) 图分类(graph classification) (graphclassification) 边 预 测 ( l i n k p r e d i c t i o n ) 边预测(link prediction) (linkprediction) ,还可以顺便得到 图 的 嵌 入 表 示 ( g r a p h e m b e d d i n g ) 图的嵌入表示(graph embedding) (graphembedding)

二、GCN核心公式

\qquad 假设我们有一批图数据,其中有 N N N个节点(node),每个节点都有自己的特征,我们设这些节点的特征组成一个 N × d N×d N×d维的矩阵 X X X,然后各个节点之间的关系也会形成一个 N × N N×N N×N维的矩阵 A A A,也称为邻接矩阵(adjacency matrix)。 X X X A A A便是我们模型的输入

核心公式: G C N GCN GCN是一个神经网络,它的层与层之间的传播方式是:
H l + 1 = σ ( D ~ − 1 2 A ~ D ~ − 1 2 H ( l ) W ( l ) ) H^{l+1}=\sigma(\tilde{D}^{-\frac{1}{2}}\tilde{A}\tilde{D}^{-\frac{1}{2}}H^{(l)}W^{(l)}) Hl+1=σ(D~21A~D~21H(l)W(l))

其中:

  • A ~ = A + I \tilde{A}=A+I A~=A+I是无向图 G G G的邻接矩阵加上自连接(就是每个顶点和自身加一条边), I I I是单位矩阵。

矩阵 A A A为什么要加一个单位矩阵呢?
\qquad 只用 A A A的话,由于 A A A的对角线上都是 0 0 0,所以在和特征矩阵 H H H相乘的时候,只会计算这个 n o d e node node的所有邻居的特征的加权和,而该 n o d e node node自己的特征却被忽略了。因此,我们可以做一个小小的改动,给 A A A加上一个单位矩阵 I I I,这样就让对角线元素变成 1 1 1了,我们希望在进行信息传播的时候顶点自身的特征信息也得到保留。

  • D ~ \tilde{D} D~是度矩阵(degree matrix),公式为: D ~ i i = ∑ j A ~ i j \tilde{D}_{ii}=\sum_j\tilde{A}_{ij} D~ii=jA~ij。度矩阵 D ~ \tilde{D} D~为对角矩阵,对角线上的元素值即为该节点的度 + 1 +1
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值