图卷积网络 - GCN
GCN 的基础知识
什么是 GCN?
- 图卷积神经网络 (GCN),实际上跟 CNN 的作用一样,就是一个特征提取器,只不过它的对象是图数据,直觉上,训练时的每个 GCN 层中,对于每个节点,用线性权重和非线性转换邻居的表达向量,相当于收集邻居的信息,通过多层的 GCN,可以收集 “邻居 - 邻居 -…” 的信息
- GCN 精妙地设计了一种从图数据中提取特征的方法,从而让我们可以使用这些特征去对图数据进行节点分类(node classification)、图分类(graph classification)、边预测(link prediction),还可以顺便得到图的嵌入表示(graph embedding),可见用途广泛
- 核心思想是利用边的信息对节点信息进行聚合,从而生成新的节点表示。简而言之,CNNs 中的卷积运算是卷积核对应位置的加权求和,扩展到 GCNs 就是利用边的信息不断的汇聚邻间节点的信息,以更新原节点的参数
GCN 能做什么?
- 节点分类:预测特定节点的类型
- 链接预测:预测两个节点是否有联系
- 社区检测:识别密集联系的节点群落
- 网络相似性:两个 (子) 网络的相似性有多大
GCN 的原理?
- 从空域角度来看,图卷积是一个消息传递(Message Passing)的过程或者说是一个归纳(Induction)的过程。空域 GCN 的核心思想是利用 “边的信息” 对 “节点信息” 进行聚合,从而生成新的 “节点表示”
- 传播:指图中的每一个节点将自身的特征信息发送给相邻的邻居节点
- 聚合:指图中每个节点将邻居节点的特征信息汇聚的过程,是对节点的局部结构信息进行融合。局部结构信息可以理解为 CNN 的感知域,共享卷积核权重,正比于神经网络的层数;迭代开始时,每个节点包含了直接连接邻居的特征信息,当计算神经网络第二层时就能把邻居的邻居节点的特征信息聚合进来,从而使参与运算的信息就更多更充分。
- 层数越多,感知域就更广,参与运算的节点信息就越多,对聚合之后特征信息做非线性变换,增加模型的表示能力
GCN 网络结构分析?
- 图结构数据 -》邻接矩阵 -》特征矩阵 -》GCN 训练 -》结果
- 层与层之间的连接方式
- GCN 的每一层通过邻接矩阵和特征矩阵相乘得到每个顶点邻居特征的汇总,然后再乘上一个参数矩阵加上激活函数做一次非线性变换得到聚合邻接顶点特征的矩阵
- 之所以邻接矩阵要加上一个单位矩阵,是因为我们希望在进行信息传播的时候顶点自身的特征信息也得到保留
- 对邻居矩阵进行归一化操作是为了信息传递的过程中保持特征矩阵的原有分布,防止一些度数高的顶点和度数低的顶点在特征分布上产生较大的差异
GCN 特点?
- 多层的图卷积神经网络,每一个卷积层仅处理一阶邻域信息,通过叠加若干卷积层可以实现多阶邻域的信息传递
- 传统的深度学习模型甚至不需要应用实体之间的关系来进行预测,它们只利用个人属性。但是通过在 GCN 中结合数据的属性以及结构,可以使预测更加强大
参考: